原始数据如下图:
【看题】在电脑D盘的 data.txt 文件中有多行数据,打开文件,读取数据,并将其转化为列表。统计读取的数据,计算每一行的总和、平均值,在屏幕上输出结果。
文件内容示例如下:
Chinese: 80,Math:85,English:92, Physical: 81,Art:85,Chemical:88
屏幕输出结果示例如下:
总和是:511.0,平均值是:85.17
【解题思路】
硬盘中的文件数据读取到内存,放进列表list[]然后清空文件内容。然后再把列表中的数据通过程序归纳整理写入到文件中,按照我们想要的结果输出。
import random
list1=[]#空列表1
list2=[]#空列表2
sign = 0
try:
with open("D:\\data.txt",'r+') as file:
f = file.read() # 文件读取到内存中
h = f.split('Chinese') # 按照Chinese开头的切分,分成若干行。
for j in h:
list1.append('Chinese'+j)
del list1[0] # 去掉列表开头多余的部分
for s in list1:
t=s.split(",") # 按照逗号切分,分成若干段。
for u in t:
list2.append(u)#切分后的理想数据导入list2列表
file.truncate() # truncate会删除文件中所有记录
file.seek(0) # 光标回到起始位置
list1.clear() # 清空list1重新利用存储分数
for k in list2:
score=random.randint(0,100)
list1.append(score) #存入分数
m=k.split(":")
m[1]=score
file.write(str(m[0])+":"+str(m[1]))
if sign < 5:
file.write(",") # 5个逗号加一个换行/n
sign=sign+1
elif sign == 5:
fen = 0 # 个人总分
for f in list1: #六个分数是一组代表一个人的
fen=fen+f
sign=0
list1.clear()
file.write(" 总分:"+str(fen)+" "+"平均分:"+str(int(fen/6)))
file.write("\r\n")
finally:
file.close()
下图就是最后运行后的结果