python练习题
假设字母a的值是1,字母b的值是2,…,字母z的值是27,从键盘输入一个单词,一个单词的分数定义为这个单词的所有字母和,例如:(knowledge)得到96分(11+14+15+23+12+5+4+7+5=96),(hardwork)得到98分(8+1+18+4+23+15+18+11=98),(attitude)得到100分(1+20+20+9+20+21+4+5=100)。
所以就有心灵鸡汤说,attitude是最重要的。事实上,英语当中有好多单词都是分数为100,并且是负面意义的。我这里有两个文件,一个包含了3万个单词,另一个包含了50万个单词(据说英文有100多万个单词,但是没有人知道到底有多少个)。请大家对这两个文件分别运行程序,并把分数为100的英文单词找出来存到两个新的文件中。
详情见数据集
3万
f = open("3万单词.txt","r") #设置读入文件对象 line = f.readline() line = line[:-1] while line: #直到读取完文件 sum = 0 for word in line: sum += (ord(word)-96) if sum==100: with open('3万答案.txt', 'a') as d: # 设置文件对象 d.write(line+"\n") # 将字符串写入文件中 line = f.readline() # 读取一行文件,包括换行符 line = line[:-2] # 去掉换行符,并校准,这点不是很理解,可能与给的文件保存形式有关 f.close() #关闭文件
50万
f = open("50万单词.txt","r") #设置读入文件对象 line = f.readline() line = line[:-1] while line: #直到读取完文件 flag = 1 #用来标记看每行单词中是否有其他符号 sum = 0 for word in line: if (ord(word)<97) or (ord(word)>122): flag = 0 break else: sum +=(ord(word)-96) if flag and sum==100: with open('50万答案.txt', 'a') as d: # 设置文件对象 d.write(line + "\n") # 将字符串写入文件中 line = f.readline() # 读取一行文件,包括换行符 line = line[:-1] # 去掉换行符,并校准 f.close() #关闭文件