python文件读取/写入练习以及使用pandas进行简单的求平均值操作

声明:这是原创,本人学号:170310441  为防止作业雷同产生不必要的纠纷

这个其实是学校的一个作业,具体要求如下图:


首先并没有给出学生的成绩数据,所以我想了一会决定用random函数来生成1至100的随机数字作为成绩,这个文件命名为randomrandom.py。代码如下:

import random
import csv


file = open('number.txt', 'w', encoding='utf-8')
txt = []
header = []

for i in range(10):
    txt.append([])
    for j in range(50):
        a = random.randint(1, 100)
        txt[i].append(a)
# print(txt)

for i in range(50):
    s1 = "李"
    s2 = str(i)
    s = s1 + s2
    header.append(s)
# print(header)
with open('number.txt', 'w', encoding='utf-8', newline='') as f:
    csv_write = csv.writer(f, delimiter=' ')
    csv_write.writerow(header)
    for r in txt:
        csv_write.writerow(r)

使用了两个模块:random和csv。

random的randint函数可以用来生成一个随机数字,random.randint(1,100)的含义是生成1至100的一个随机数。最后结果是将这个10行50列的数据存放在名为txt的列表中。

第二个for循环是用来生成表头,,,也就是学生的姓名,我用的是李0,李1,李2.。。。。。。这样的名字(哈哈),十分方便。最后将这些名字存入header列表中。

最后一段是创建一个叫number的txt文本文件,存放的格式是CSV,将表头和数据依次写入。不是很懂CSV含义的童鞋看这边:https://baike.baidu.com/item/CSV/10739?fr=aladdin

这就是生成学生成绩数据的代码文件。


接着是求均值并将结果写入到源文件,给出代码:

import pandas as pd
import sys


class Logger(object):
    def __init__(self, fileN="Default.log"):
        self.terminal = sys.stdout
        self.log = open(fileN, "a", encoding="utf-8")

    def write(self, message):
        self.terminal.write(message)
        self.log.write(message)

    def flush(self):
        pass


def averageALL(data):
    print(data.mean())


def averageOne(data, num):
    s1 = "李"
    s2 = str(num)
    s = s1 + s2
    print(data[s].mean())


def main():
   n = input("输入需要查看的学生编号:")
   data = pd.read_csv('number.txt', sep=' ')
   averageOne(data, n)
   sys.stdout = Logger("number.txt")
   print("所有学生的平均成绩:")
   averageALL(data)


if __name__ == '__main__':
    main()

使用了sys和pandas这两个库,而pandas是三方库,需要用pip下载下来:

pip install pandas

Logger函数用来将出现在屏幕上的数据记录下来并写入到指定文件中去。

averageALL函数用来求所有学生的平均成绩。

averageOne函数用来求某个学生的平均成绩。

最后一个是main函数,不多做解释。


END

posted @   TIM3347_Tian  阅读(151)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示