声明:这是原创,本人学号: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