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

时间:2020-08-11 18:30:58

标签: python python-3.x python-3.7

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

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

1 个答案:

答案 0 :(得分:2)

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

avg = Decimal(sum(scores)/3)

正确的方法如下:

avg = Decimal(sum(student_marks[query_name])/3)
相关问题