标题

1.卖火柴的小女孩
2.节假日读入(csv文件处理)
3.论语(文章处理)
4.传感器索引
5.傲慢与偏见(文章处理)
6.成绩统计(CSV文件处理)
7.类
8.凯撒密码
9.诗词转换
10.猜字母游戏

1.卖火柴的小女孩

答题思路:打开文件->读取文件内容->定义字典,统计字符数量->转化字典为列表方便排序->进行排序->写如文件->关闭文件

fi = open("小女孩.txt","r")#打开文件
fo = open("PY301-1.txt","w")#
txt = fi.read()#读取文件内容
d = {}
exclude = ",。!?、()【】<>《》=:+-*—“”…"
for word in txt:
    if word in exclude:
        continue
    else:
        d[word] = d.get(word,0)+1#定义字典,统计字符数量
ls = list(d.items())#转化字典为列表方便排序
ls.sort(key=lambda x:x[1],reverse=True)#进行排序
fo.write("{}:{}".format(ls[0][0],ls[0][1]))#写如文件
fo.close()#关闭文件

2.节假日读入

答题思路:打开文件->CSV文件处理,在文件中进行行遍历,以“,”为分隔符加入列表->然后在列表中遍历进行判断进行相关操作->->关闭文件

fi = open("PY301-vacations.csv","r")
ls = []
for line in fi:#进行CSV文件的遍历
    ls.append(line.strip("\n").split(","))
s = input("请输入节假日名称:")
for line in ls:#进而在生成的列表中遍历相关参数进行操作
    if s == line[1]:
        print("{}的假期位于{}-{}之间".format(line[1],line[2],line[3]))
fi.close()

3.论语

答题思路:跟CSV列表处理类似,行遍历,再判断

fi = open("论语.txt", "r")
fo = open("论语-原文.txt", "w")
flag = False
for line in fi:
    if "【" in line:
        flag = False
    if "【原文】" in line:
        flag = True
        continue
    if flag == True:
        fo.write(line.lstrip())
fi.close()
fo.close()

4.传感器索引

答题思路:跟CSV列表处理类似,行遍历,再判断

fi = open('sensor.txt', 'r')
fo = open('earpa001.txt', 'w')
txt = fi.readlines()
for line in txt:
    ls = line.strip("\n ").split(",")
    if " earpa001" in ls:
        fo.write('{},{},{},{}\n'.format(ls[0],ls[1],ls[2],ls[3]))
fi.close()
fo.close()

5.傲慢与偏见

答题思路:(此题打开的文件不在具有行特性,就是每行有相同的特征而是一个普通的文本文件,行遍历便不再可行)打开文件->文本文件处理fi.read->定义字典,统计字符次数->转换成列表排序输出->关闭文件

fi = open("arrogant.txt","r")
fo = open("PY301-1.txt","w")
txt = fi.read()#读入文件
d = {}
for s in txt:#直接在文本中遍历
    d[s] = d.get(s,0) + 1
del d['\n']
ls =list(d.items())
for i in range(len(ls)):
    fo.write("{}:{}\n".format(ls[i][0],ls[i][1]))
fi.close()
fo.close()

最后大题主要都是文本文件操作,主要掌握行遍历,和全文遍历的2中方方法,在文件转换成列表的时候要会使用.strip("\n “).split(”,")然后再根据要求进行相关操作

当然我在刷题的时候也总结出转换成列表的2种不同方法:
1.先定义好列表,然后在遍历的时候进行列表填充的工作如(ls.append(line.strip("\n “).split(”,")))
2.也可以直接用
ls=list(line.strip("\n “).split(”,")) ,其作用都是相同的

还有几个题后面更新。。。本人小白,都是个人见解,不喜勿喷,欢迎评论