运行以下代码时遇到逻辑错误

问题描述

from decimal import Decimal
n = int(input())
student_marks = {}
for _ in range(n):
    name,*line = input().split()
    scores = list(map(float,line))
    student_marks[name] = scores
query_name = input()
avg = Decimal(sum(scores)/3)
avg = round(avg,2)
print(avg)

输入:

2
Harsh 25 26.5 28
Anurag 26 28 30
Harsh

预期产量

26.50

我的输出

28.00

提供的代码存根将在字典中读取,该字典包含名称/标记对的键/值对,以获取学生列表。打印提供的学生姓名的分数数组的平均值,显示小数点后2位。

第一行包含整数n,即学生的记录数。接下来的n行包含学生获得的姓名和分数,每个值用空格分隔。最后一行包含query_name,即要查询的学生的姓名。

输入

3
Krishna 67 68 69
Arjun 70 98 63
Malika 52 56 60
Malika

我的输出

56.00

预期产量

56.00

我的代码可用于此输入,但不适用于其他输入。您能解释一下原因吗?

解决方法

对于您而言,您使用的查询不正确。 在计算平均值时,您总是在计算最后一个人的平均值。

avg = Decimal(sum(scores)/3)

正确的方法如下:

avg = Decimal(sum(student_marks[query_name])/3)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...