7-3 计算每个学生的平均成绩

7-3 计算每个学生的平均成绩

分数 20
作者 殷伟凤
单位 浙江传媒学院
输入所有学生的姓名和成绩,以#结束。输出每个学生的平均成绩表。

输入格式:

每一行输入一个学生的姓名和成绩,以空格分隔。
输入完成后以#结束

输出格式:

每行显示一个学生的姓名和平均成绩,姓名占8位宽度,平均成绩保留两位小数点。姓名和平均成绩之间用空格隔开。

输入样例1:

在这里给出一组输入。例如:

Maria 20
David 10
Bob 15
David 20

输出样例1:
在这里给出相应的输出。例如:

姓 名     平均成绩
Maria    20.00
David    15.00
Bob      15.00

输入样例2:
在这里给出一组输入。例如:

韩思	80
杨世忆	70
徐晓畅	100
黄嘉	95
刘天宇	60
叶鸿	80
韩思	85
杨世忆	65
徐晓畅	100
黄嘉	90
刘天宇	80
刘天宇	90
徐晓畅	100
徐晓畅	100
徐晓畅	100
#

输出样例2:
在这里给出相应的输出。例如:

姓 名     平均成绩
韩思       82.50
杨世忆      67.50
徐晓畅      100.00
黄嘉       92.50
刘天宇      76.67
叶鸿       80.00

代码长度限制
16 KB
时间限制
400 ms
内存限制

解题思路

  1. 设计一个合适的数据结构,这里我们需要三个信息,一个是姓名,第二是成绩,然后还有计算平均成绩,所以我要知道被统计科目的次数,此时使用如下结构存储最为合适
items['姓名'] = ['所有成绩之和','被统计次数']

由此得知平均成绩 = 所有成绩之和/被统计次数
最后我们输出成绩即可。

# 用于记录数据
items = dict()

# 接收数组存入列表
while 1:
    string = input()
    if string == '#':
        break
    else:
        name = string.split()[0]
        score = float(string.split()[1])
        if items.__contains__(name):
            items[name][0] += score
            items[name][1] += 1
        else:
            items[name] = [score, 1]

# 计算所有人成绩的平均数
print("姓 名     平均成绩")
for k in items.keys():
    items[k][0] /= items[k][1]
    print(f"{k}".ljust(8), f"{float(items[k][0]):.2f}".rjust(4))

posted @ 2022-11-10 19:38  蠢蛋快跑  阅读(2094)  评论(2)    收藏  举报