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() #关闭文件

 

posted @ 2020-03-13 16:44  zmachine  阅读(424)  评论(0编辑  收藏  举报