python 一道問題

假设有n个学生,每个学生有3门课(国文、英文、数学)的成绩。 撰写一个程序,可从键盘输入以上资料(包括学生学号,姓名,国文成绩、英文成绩、数学成绩,当学号为 -111,即作出计算出每一课的平均成绩与每一个人的平均成绩。

 还是说你要先输入学生人数(n)

n = int(input("请输入学生人数(n):"))
kd = {"国文":0,"英文":0,"数学":0}
li = []
for i in range(n):
    d = {}
    d['学号'] = input(f"第{i+1}个学生的学号:")
    d['姓名'] = input(f"第{i+1}个学生的姓名:")
    d['国文'] = float(input(f"第{i+1}个学生的国文成绩:"))
    d['英文'] = float(input(f"第{i+1}个学生的英文成绩:"))
    d['数学'] = float(input(f"第{i+1}个学生的数学成绩:"))
    d['平均成绩'] = (d['国文']+d['英文']+d['数学'])/3
    li.append(d)
    kd['国文'] += d['国文']
    kd['英文'] += d['英文']
    kd['数学'] += d['数学']
for k,v in kd.items():
    print(f'{k}课的平均成绩{v/len(li)}')
for d in li:
    print(f"{d['姓名']}的平均成绩{d['平均成绩']}")

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

il = []
nl = []
yl = []
sl = []
el = []
while 1:
    id = input("学号:")
    if id != '-111':
        name = input("姓名:")
        yuwen = int(input("语文:"))
        shuxue = int(input("数学:"))
        yingyu = int(input("英语:"))
        il.append(id)
        nl.append(name)
        yl.append(yuwen)
        sl.append(shuxue)
        el.append(yingyu)
    else:
        aa = round(sum(yl)/len(yl), 2)
        print('语文平均成绩:', aa)
        bb = round(sum(sl)/len(sl), 2)
        print('数学平均成绩:', bb)
        cc = round(sum(el)/len(el), 2)
        print('语文平均成绩:', cc)
        for i in range(len(il)):
            d = round((yl[i] + sl[i] + el[i]) / 3, 2)
            print(f'{il[i]}-{nl[i]}:三科平均成绩{d}')
        break

 

你的题目是说当学号输入为 -111 就结束循环开始输出每一课的平均成绩与每一个人的平均成绩。

代码如下:{如果对你有帮助,可以给我个采纳吗,谢谢!! 点击我这个回答右上方的【采纳】按钮}。
 

i = 0
kd = {"国文":0,"英文":0,"数学":0}
li = []
while True:
    i += 1
    d = {}
    d['学号'] = input(f"第{i}个学生的学号:")
    if d['学号']=='-111': #当学号为 -111 结束循环
        break
    d['姓名'] = input(f"第{i}个学生的姓名:")
    d['国文'] = float(input(f"第{i}个学生的国文成绩:"))
    d['英文'] = float(input(f"第{i}个学生的英文成绩:"))
    d['数学'] = float(input(f"第{i}个学生的数学成绩:"))
    d['平均成绩'] = (d['国文']+d['英文']+d['数学'])/3
    li.append(d)
    kd['国文'] += d['国文']
    kd['英文'] += d['英文']
    kd['数学'] += d['数学']
for k,v in kd.items():
    print(f'{k}课的平均成绩{v/len(li)}')
for d in li:
    print(f"{d['姓名']}的平均成绩{d['平均成绩']}")