8. 已知有一个包含一些同学成绩的字典,计算成绩的最高分、最低分、平均分,并查找最高分同
学,最后打印最高分、最低分、平均分、最高分同学。
scores = {\\ highest = max(scores.values()) lowest = min(scores.values())
average = sum(scores.values())/len(scores)
highestPerson = [name for name, score in scores.items() if / score == highest] #分行 print(highest,lowest,average,highestPerson)
9. 统计不及格的学生及成绩,要求:给定一些学生姓名和成绩;询问用户是否还需要输入更多的
学生姓名和成绩,用户回答是就继续输入,继续询问;打印所有补考学生名单和成绩。 d=[[\张三\李四\王五\郑六\ s1=input(\输入数据Y or N:\去掉前后空格 while s1 == 'Y':
s2=input(\请输入学生及成绩(空格隔开)\ name,grade=s2.split() d.append([name,grade]) #d[name]=int(grade)
s1=input(\继续输入Y or N:\ else: print(d)
print(\不及格的名单:\ for name,grade in d: if float(grade) < 60:
print(\姓名:\成绩:\
10. 由用户一个一个输入一个数值型列表,然后将每个元素逐一打印。 lst=[]
n=eval(input(”请输入数字个数:”)) for i in range(n):
number=eval(input(”请输入数字:”)) lst.append(number) for value in lst:
print(value,end=’ ’)
111111. 序列求和,n通过用户输入: 1????...?(?1)n?1234nn=int(input(“请输入N的值:”))
s=0 fh=1
for i in range(1,n+1):
s +=fh*1/i # 求和语句 fh=-fh #正负交替
print(\-1/2+1/3-1/4...+(-1)^(n-1)/n=\,s,i)
12. 生成一个包含50个两位随机整数的列表,然后删除其中的所有奇数(提示从后向前删) lst=[random.randint(1,100) for i in range(50)] print('50个随机两位整数:',lst) k=len(lst)-1
for i in range(k,-1,-1):#从后往前删,减少列表元素移动 if lst[i] % 2==1: lst.pop(i)
print(\偶数为\
13. 恺撒(kaisa)密码:原文:ABCDEFGHIJKLMNOPQRSTUVWXYZ,对应的密文为: DEFGHIJKLMNOPQRSTUVWXYZABC,请设计程序实现之。 plaincode=input('请输入明文:') for p in plaincode: if 'a'<=p<='z':
c=chr(ord('a')+(ord(p)-ord('a')+3)&)
#ord是字符编码的值,都减掉ord('A')才可以得到字符的顺序0-25 print(c,end='') elif 'A'<=p<='Z' :
c=chr(ord('A')+(ord(p)-ord('A')+3)&) print(c,end='') else:
print(p,end='')
14. 如果一个字符串从前往后和从后往前读时是一样的,那么这个字符串就是回文串。请编写一个
函数判断是否为回文串,同时编写测试代码检验回文串。 def isPalindrome(s)
if s==s[::-1]: #切片操作,倒序和顺序一样 return True else:
return False
s=input('input a string:') if isPalindrome(s):
print(‘%s is a palindrome!’%s) else:
print(‘%s is not a palindrome!’%s)
15. 输入一串字符,统计每个字符数,用字典输出. s=input(\输入一行字符串或句子:\ char_counts={} for char in s:
char_counts[char]= char_counts.get(char,0)+1 print(char_counts)
16. 生成包含100个随机字符的字符串,然后统计前20个高频字符. import string,random
str1=string.ascii_letters +string.digits str1=str1.lower()
str2=[random.choice (str1) for i in range(100)] print(str2) str_count={} for char in str2:
str_count[char]=str_count.get(char,0)+1 print(str_count)
items=list(str_count.items())
items.sort(key=lambda x:x[1],reverse=True) #以数量降序 for i in range(20):
word,count = items[i]
print(\-15s ]\ #-表示左对齐,s表字符,d表示整数
17. 统计”e:\\HarryPotterSorcerStone.txt”文件中的英文单词及其数量,打印出单词及其个数
filename =r'HarryPotterSorcerStone.txt' infile = open(filename, \ txt=infile.read()
words=txt.split() #以空格分割单词 words_counts={} for word in words:
words_counts[word]=words_counts.get(word,0)+1 print(words_counts)
18. 读取文本文件data.txt中所有整数,将其排序后写入文本文件data_asc.txt中. with open('data.txt','r') as fp:
data=fp.readlines() #文件全部读完返回字符列表 print(‘字符列表’,data)
data=[int(line.strip()) for line in data] #列表的数据变成整数 data.sort()
data=[str(i)+'\\n‘ for i in data] #数字后加换行符 with open(‘data_asc.txt’,'w') as fp:
fp.writelines(data) #一次全部写入
19. 编程,如图,在文件score.txt中写入五名学生的姓名、学号和3门考试课的成绩,然后将所有
两门以上(含两门)课程不及格的学生信息输出到文件bad.txt、其他学生信息输出到pass.txt。
fw=open(r'score2.txt','w')
s=['张三,',' 2017010101,',' 66,',' 77,',' 88','\\n'] fw.writelines(s)
fw.write('李四, 2017010102, 60, 70, 80\\n') fw.write('王五, 2017010103, 64, 73, 82\\n') fw.write('赵六, 2017010104, 56, 67, 48\\n')
fw.write('钱七, 2017010105, 46, 57, 68\\n')
fw.close()
f1=open(r'score2.txt','r') f2=open(r'bad2.txt','w') f3=open(r'pass2.txt','w')
lines=f1.readlines() for line in lines:
data=list(line.split(','))
print(data)#['张三', ' 2017010101', ' 66', ' 77', ' 88\\n'] k=0
for i in data[2:]:
if int(i)<60:
k+=1 if k>=2: #两门以上(含两门)课程不及格 f2.write(line) else:
f3.write(line)
f1.close();f2.close();f3.close()