Python练习题

【PYTHON练习题】统计读取的数据

2019-05-11  本文已影响0人  小象解答编程练习题

原始数据如下图:


360截图20190511142636150.jpg

【看题】在电脑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()

下图就是最后运行后的结果


最终结果.JPG
上一篇下一篇

猜你喜欢

热点阅读