随机生成10名学生姓名(包括自己)和五科成绩,将数据存入*.csv,读取保存的*.csv文本数据计算每个学生总分和平均分,并存入*.csv文本;打印总分排名前三学生信息;查找10学生各科最高最低分、中位分、平均分。
(笔记模板由python脚本于2023年11月13日 12:36:51创建,本篇笔记适合熟悉python基本数据类型的coder翻阅)
Python 官网:https://www.python.org/
Free:大咖免费“圣经”教程《 python 完全自学教程》,不仅仅是基础那么简单……
地址:https://lqpybook.readthedocs.io/
自学并不是什么神秘的东西,一个人一辈子自学的时间总是比在学校学习的时间长,没有老师的时候总是比有老师的时候多。
—— 华罗庚
本文质量分:
CSDN质量分查询入口:http://www.csdn.net/qc
【题目来源于 CSDN 问答社区提问“学生五科成绩统计”】
编辑中……
编辑中……
python代码
#!/sur/bin/nve python
# coding: utf-8
from random import choices
from random import randint
firstNames = list('赵钱孙李周武郑王刘祖') + ['东郭', '南郭', '东方', '上官']
lateNames = list('芳全平苹明远员') + ['精灵_cq', '明远', '文远', '太平', '冲之']
names = [''.join(choices(firstNames) + choices(lateNames)) for i in range(10)] # 随机生成10个姓名。
if '梦幻精灵_cq' not in names: # 如果没随机到自己姓名,pop最后一个,append自己。
names.pop()
names.append('梦幻精灵_cq')
while 1:
classes = input('\n五门课程名称用空格分隔(如:语文 数学 ... 化学):\n\n输入:').strip()
if len(classes.split()) == 5:
break
else:
print(f"{' 输入错误!':~^35}")
scores = {name: ' '.join(map(str,[randint(0, 100) for i in range(5)])) for name in names}
stuId = '20231112035' # 我的学号。
filename = f'/sdcard/Documents/csdn/temp/{stuId}_scores.csv'
with open(filename, 'w') as f:
print('姓名 ' + classes, file=f, end='') # 写表头,不换行。
for k,v in scores.items():
f.write(f"\n{k} {v}") # 换行打印输出成绩到csv文本。
cosesCsv = open(filename).read()
print(f"\n成绩列表:\n{cosesCsv}")
编辑中……
#!/sur/bin/nve python
# coding: utf-8
from random import choices
from random import randint
from random import seed
seed(20231113) # 设置随机数种子,让每次运算程序产生的随机数都是一样,改变种子参数改变输出。
firstNames = list('赵钱孙李周武郑王刘祖') + ['东郭', '南郭', '东方', '上官']
lateNames = list('芳全平苹明远员') + ['精灵_cq', '明远', '文远', '太平', '冲之']
names = [''.join(choices(firstNames) + choices(lateNames)) for i in range(10)] # 随机生成10个姓名。
if '梦幻精灵_cq' not in names: # 如果没随机到自己姓名,pop最后一个,append自己。
names.pop()
names.append('梦幻精灵_cq')
while 1:
#classes = input('\n五门课程名称用空格分隔(如:语文 数学 ... 化学):\n\n输入:').strip()
classes = '语文 数学 英语 理化 政史'
if len(classes.split()) == 5:
break
else:
print(f"{' 输入错误!':~^35}")
scores = {name: ' '.join(map(str,[randint(0, 100) for i in range(5)])) for name in names}
stuId = '20231112035' # 我的学号。
filename = f'/sdcard/Documents/csdn/temp/{stuId}_scores.csv'
with open(filename, 'w') as f:
print('姓名 ' + classes, file=f, end='') # 写表头,不换行。
for k,v in scores.items():
f.write(f"\n{k} {v}") # 换行打印输出成绩到csv文本。
scoresCsv = open(filename).read()
print(f"\n成绩列表:\n{scoresCsv}")
filename2 = f'/sdcard/Documents/csdn/temp/ave_scores.csv'
lastHead = scoresCsv.split('\n')[0]
with open(filename2, 'w') as f:
print(f"{lastHead} 总分 平均分", file=f, end='') # 写表头,不换行。
for i in scoresCsv.split('\n')[1:]: # 遍历csv成绩文本行,切片去除第一行字段。
count = sum(map(int, i.split()[1:])) # # 切片分离五科成绩,并计算总分。
f.write(f"\n{i} {count} {count/5:.2f}") # 换行打印输出成绩到csv文本。
print(f"\n成绩列表(总分、平均分):\n{open(filename2).read()}")
编辑中……
代码运行效果截屏图片
代码编撰中……
编辑中……
代码运行效果截屏图片
代码编撰中……
(源码较长,点此跳过源码)
待贴……
我的HOT博:
本次共计收集 246 篇博文笔记信息,总阅读量 40.46w,平均阅读量 1644。已生成 16 篇阅读量不小于 4000 的博文笔记索引链接。数据采集于 2023-10-12 05:41:03 完成,用时 4 分 41.10 秒。
精品文章:
来源:老齐教室
◆ Python 入门指南【Python 3.6.3】
好文力荐:
CSDN实用技巧博文: