知识点概要:
str = "csdn"
#str[0]就表示字符串c, str[-1]表示"n"
编程测试:
# eval()函数可以将默认输入的字符串去掉双引号并进行表达式运算,如输入500+20,默认
#得到的输入为一个字符串“500+20”,但是使用eval()函数我们得到的是一个整型数字:520
Number = eval(input())
if Number == 0:
print("Hello World")
elif Number > 0:
print("He\nll\no \nWo\nrl\nd")
else:
for c in "Hello World":
print(c)
print("{:.2f}".format(eval(input())))
知识点概要:
import turtle
#t是别名,可以更换其他名称
import turtle as t
from turtle import setup
from turtle import *
import setup from turtle
是不正确的
turtle.circle(-90,90)
表示绘制一个半径为90像素的弧形,圆心在小海龟当前行进的右侧# circle(x,y)表示以x长度为半径,y为角度,
#当前方向左侧x处为圆心画圆,其中x,y都可以是负数,相应取反
#当前方向是水平向右的,对应直角坐标系中的x轴正方向
#x为正,则圆心在y轴正方向上,y为正,逆时针画圆,圆弧角度为y
#x为负则相反,圆心在y轴负方向上,y为正,顺时针画圆,圆弧角度为y
编程测试:
import turtle as t
t.pensize(2)
for i in range(8):
t.fd(100)
t.left(45)
import turtle as t
t.pensize(2)
for i in range(8):
t.fd(150)
t.left(135)
知识点概要:
val = pow(2,1000)
#返回val结果的长度值要使用 len(str(val)),因为整型没有len()方法,要通过str()函数
#将数字类型转换为字符串
import time
from time import strftime
from time import *
name="Python语言程序设计课程"
print(name[0],name[2:-2],name[-1])
#输出结果为:P thon语言程序设计 程
print("{0:3}".format('PYTHON'))
代码执行的结果是PYTHON,{0:3}表示输出的宽度是3,但是如果字符串长度超过3就以字符串长度显示编程测试:
a = eval(input())
print("{:+>30.3f}".format(a**0.5))
# +是填充字符 >是右对齐 30是宽度 .3f是保留小数点后3位
#若平凡根后是一个复数,复数的实部和虚部都是浮点数,.3f可以将实部和虚部分别取三位小数
InputStr = input()
strs = InputStr.split('-')
print(strs[0]+'+'+strs[-1])
print("{}+{}".format(strs[0], strs[-1]))
#s.split(k)以k为标记分割s,产生一个列表
#通过该题目,掌握split()方法的使用,注意:k可以是单字符,也可以是字符串
知识点概要:
for i in range(0,2):
print(i)
#输出结果为:0 1
x = 10
while True:
x = x -1
if x == 1:
break
p = -p #表示给p赋值为它的负数,Python中的=是赋值符号
编程测试:
#个人思路:求四位数的各个位数abcd
for i in range(1000,10000):
a = i%10
b = (i//10)%10
c = (i//100)%10
d = (i//1000)%10
if a**4 + b**4 + c**4 + d**4 == i:
print(i)
#参考答案:字符串+eval()
s = ""
for i in range(1000, 10000):
t = str(i)
if pow(eval(t[0]),4) + pow(eval(t[1]),4) + pow(eval(t[2]),4) + pow(eval(t[3]),4) == i :
print(i)
sum = 0
for i in range(2,100):
isFlag = 1 #判断是否为素数
for j in range(2,i): #遍历2-i-1,看是否能被i整除
if i%j == 0: #被整除说明不是素数
isFlag = 0
break
if isFlag == 1:
sum += i
print(sum)
#参考答案:将判断是否为素数封装为一个函数,倾向于这种解题思路
def is_prime(n):
for i in range(2,n):
if n%i == 0:
return False
return True
sum = 0
for i in range(2,100):
if is_prime(i):
sum += i
print(sum)
知识点概要:
global s
表示变量s为全局变量def func(*a,b):
是错误的函数定义,*a表示可变参数,可变参数只能放在函数参数的最后,即def func(a,*b):
编程测试:
import random
def genpwd(length):
a = 10**(length-1)
b = 10**length - 1
return "{}".format(random.randint(a, b))
length = eval(input())
random.seed(17)
for i in range(3):
print(genpwd(length))
#思路类似,同样过了
def genpwd(length):
high = 10**length
low = 10**(length-1)
return random.randrange(low,high)
def prime(m): #判断是否为质数
for i in range(2,m):
if m%i == 0:
return False
return True
n = eval(input())
if n != int(n): #考虑输入为浮点数的情况
n = int(n) + 1
else:
n = int(n)
times = 0 #统计质数的次数
res = [] #存放输出结果
while times < 5:
if prime(n):
res.append(n)
times += 1
n += 1
for i in res[:len(res)-1]:
print(i,end=",")
print(res[-1]) #最后一个不输出逗号
#参考答案
def prime(m):
for i in range(2,m):
if m % i == 0:
return False
return True
#需要对输入小数情况进行判断,获取超过该输入的最小整数(这里没用floor()函数)
n = eval(input())
n_ = int(n)
n_ = n_+1 if n_ < n else n_
count = 5
#对输出格式进行判断,最后一个输出后不增加逗号(这里没用.join()方法)
while count > 0:
if prime(n_):
if count > 1:
print(n_, end=",")
else:
print(n_, end="")
count -= 1
n_ += 1
知识点概要:
ls.append(x)
表示只能向列表最后增加一个元素,如果x是一个列表,则该列表作为一个元素增加到ls中& | - ^
d.values()
返回的是dict_values类型,包括字典中的所有值,通常与for…in组合使用d= {'a': 1, 'b': 2, 'b': '3'}
print(d['b'])
#输出结果:3
x in d
表示判断x是否是字典d中的键,键是值的序号,也是字典中值的索引方式s.index(x)
返回序列s中元素x第一次出现的序号,并不返回全部序号编程测试:
#参考答案:字符串可以通过list()直接变成列表,或通过set()直接变成集合
n = input()
ss = set(n)
s = 0
for i in ss:
s += eval(i)
#s += int(i) #同样可以
print(s)
#先使用字典建立"姓名与出现次数"的关系,然后找出现次数最多数对应的姓名
s = '''双儿 洪七公 赵敏 赵敏 逍遥子 鳌拜 殷天正 金轮法王 乔峰 杨过 洪七公 郭靖
杨逍 鳌拜 殷天正 段誉 杨逍 慕容复 阿紫 慕容复 郭芙 乔峰 令狐冲 郭芙
金轮法王 小龙女 杨过 慕容复 梅超风 李莫愁 洪七公 张无忌 梅超风 杨逍
鳌拜 岳不群 黄药师 黄蓉 段誉 金轮法王 忽必烈 忽必烈 张三丰 乔峰 乔峰
阿紫 乔峰 金轮法王 袁冠南 张无忌 郭襄 黄蓉 李莫愁 赵敏 赵敏 郭芙 张三丰
乔峰 赵敏 梅超风 双儿 鳌拜 陈家洛 袁冠南 郭芙 郭芙 杨逍 赵敏 金轮法王
忽必烈 慕容复 张三丰 赵敏 杨逍 令狐冲 黄药师 袁冠南 杨逍 完颜洪烈 殷天正
李莫愁 阿紫 逍遥子 乔峰 逍遥子 完颜洪烈 郭芙 杨逍 张无忌 杨过 慕容复
逍遥子 虚竹 双儿 乔峰 郭芙 黄蓉 李莫愁 陈家洛 杨过 忽必烈 鳌拜 王语嫣
洪七公 韦小宝 阿朱 梅超风 段誉 岳灵珊 完颜洪烈 乔峰 段誉 杨过 杨过 慕容复
黄蓉 杨过 阿紫 杨逍 张三丰 张三丰 赵敏 张三丰 杨逍 黄蓉 金轮法王 郭襄
张三丰 令狐冲 赵敏 郭芙 韦小宝 黄药师 阿紫 韦小宝 金轮法王 杨逍 令狐冲 阿紫
洪七公 袁冠南 双儿 郭靖 鳌拜 谢逊 阿紫 郭襄 梅超风 张无忌 段誉 忽必烈
完颜洪烈 双儿 逍遥子 谢逊 完颜洪烈 殷天正 金轮法王 张三丰 双儿 郭襄 阿朱
郭襄 双儿 李莫愁 郭襄 忽必烈 金轮法王 张无忌 鳌拜 忽必烈 郭襄 令狐冲
谢逊 梅超风 殷天正 段誉 袁冠南 张三丰 王语嫣 阿紫 谢逊 杨过 郭靖 黄蓉
双儿 灭绝师太 段誉 张无忌 陈家洛 黄蓉 鳌拜 黄药师 逍遥子 忽必烈 赵敏
逍遥子 完颜洪烈 金轮法王 双儿 鳌拜 洪七公 郭芙 郭襄 赵敏'''
names = s.split()
d = {}
for name in names:
d[name] = d.get(name, 0) + 1
Maxkey = ""
MaxValue = 0
for k in d:
if d[k] > MaxValue:
Maxkey = k
MaxValue = d[k]
print(Maxkey)
#参考答案
ls = s.split()
d = {}
for i in ls:
d[i] = d.get(i, 0) + 1
max_name, max_cnt = "", 0
for k in d:
if d[k] > max_cnt:
max_name, max_cnt = k, d[k]
print(max_name)
知识点概要:
ls = [[1,2,3],[4,5,6],[7,8,9]]
获取其中的元素5要使用:ls[1][1]
[[1,2],[3,4],[5,6]]
,如果列表元素不都是列表,则它表示一维数据编程测试:
#for line in f 获取的line包含每行最后的换行符(\n),所以去掉该换行符再进行统计
f = open("latex.log", "r", encoding="utf-8")
lines = 0
columns = 0
for line in f:
line = line.strip("\n")
if len(line):
lines += 1
columns += len(line)
print("{:.0f}".format(columns/lines))
f.close()
#参考答案如下:
f = open("latex.log")
s, c = 0, 0
for line in f:
line = line.strip("\n")
if line == "":
continue
s += len(line)
c += 1
print(round(s/c))
-CSV格式清洗与转换:附件是一个CSV格式文件,提取数据进行如下格式转换:
(1)按行进行倒序排列
(2)每行数据倒序排列
(3)使用分号(;)代替逗号(,)分割数据,无空格
按照上述要求转换后将数据输出
f = open("data.csv", "r", encoding="utf-8")
txt = f.readlines()
txt.reverse() #按行进行倒序排列
for line in txt:
#line = line.strip("\n") #去除末尾换行符
#line = line.replace(" ","") #去空格
line = line.strip("\n").replace(" ", "")
#ls = line.split(",")
#ls = ls[::-1]
ls = line.split(",")[::-1] #逗号分隔并将分隔后的元素倒序
print(";".join(ls)) #元素间插入分号
f.close()
#参考答案(使用strip()方法去掉每行最后的回车,使用replace()去掉每行元素两侧的空格)
f = open("data.csv")
ls = f.readlines()
ls = ls[::-1]
lt = []
for item in ls:
item = item.strip("\n")
item = item.replace(" ", "")
lt = item.split(",")
lt = lt[::-1]
print(";".join(lt))
f.close()
知识点概要:
os.system()
可以启动进程执行程序os.path.relpath(path)
用来计算相对路径编程测试:
inputStr = input()
for i in inputStr:
if i.islower() or i.isupper():
print(i,end="")
#参考答案:采用遍历字符的方式实现,通过约束字母表达到鲁棒效果
alpha = []
for i in range(26):
alpha.append(chr(ord('a') + i))
alpha.append(chr(ord('A') + i))
s = input()
for c in s:
if c in alpha:
print(c, end="")
number = input()
try:
#complex()和complex(eval())之间的比较
#将能够排除非数字类型的输入
if complex(number) == complex(eval(number)):
print(eval(number) ** 2)
except:
print("输入有误")
'''
不能直接使用eval(),否则用户可以通过输入表达式(如100**2)输入数字
与要求不同(在实际应用中会带来安全隐患)
'''
知识点概要:
编程测试:
import sys
print("RECLIMIT:{}, EXEPATH:{}, UNICODE:{}".format(sys.getrecursionlimit(), sys.executable, sys.maxunicode))
data = [ ["北京理工大学", "985", 2000], \
["清华大学", "985", 3000], \
["大连理工大学", "985", 4000], \
["深圳大学", "211", 2000], \
["沈阳大学", "省本", 2000], \
]
from tabulate import tabulate
print(tabulate(data, tablefmt="grid"))
*编程测试:
print(input().replace(" ",""))
f = open("latex.log", "r", encoding="utf-8")
d = {}
for line in f:
d[line] = d.get(line, 0) + 1
print("共{}关键行".format(len(d)))
#参考答案:如果需要"去重"功能,请使用集合类型
f = open("latex.log")
ls = f.readlines()
s = set(ls)
print("共{}关键行".format(len(s)))