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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TIM33470348

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值