Python作业:学生成绩+文件读写

有5名学生,每个学生有三门课程的成绩需要记录。要求:将5名学生三门课程的成绩存入文本文件;读取文件,计算平均成绩。按平均成绩对5名学生排序。显示格式如下:

姓名 python 线性代数 算法设计与分析 平均成绩 名次

# 判断tabulate是否安装
import importlib.util
import os
if importlib.util.find_spec('tabulate') is None:
    print(f"'tabulate'缺失,正在帮你安装...")
    os.system(f"pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tabulate")
    print(f"'tabulate'安装完成")



from tabulate import tabulate
##############文件写入
Default_stu_data = {
    "张三":{"python": 80,"线性代数": 90,"算法设计与分析": 75},
    "李四":{"python": 85,"线性代数": 95,"算法设计与分析": 80},
    "王五":{"python": 90,"线性代数": 85,"算法设计与分析": 70},
    "赵六":{"python": 80,"线性代数": 90,"算法设计与分析": 85},
    "陈七":{"python": 85,"线性代数": 95,"算法设计与分析": 75},
}
dataFile = open('stu_data.txt','w')
dataFile.write(str(Default_stu_data))
dataFile.close()

##############文件读取
dataFile = open('stu_data.txt','r')
stu_data = dataFile.read()
dataFile.close()
stu_data = dict(eval(stu_data))#StrToDict

##############计算平均分
for i,j in stu_data.items():
    ave = 0
    for k,v in j.items():
        ave += v
    ave /= len(j)
    j['ave'] = ave

##############平均分排序
afterSort = sorted(stu_data.items(),key=lambda x: x[1]['ave'], reverse=True)

##############构造输出列表
output_list = []
rank = 1
for name, scores in afterSort:
    tmpList = [name]
    for i,j in scores.items():
        tmpList.append(j)
    tmpList.append(rank)
    rank += 1
    output_list.append(tmpList)

##############输出
table_header = ['姓名','python','线性代数','算法设计与分析','平均成绩','名次']
print(tabulate(output_list, headers=table_header, tablefmt='fancy_grid', floatfmt=".2f"))
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇