繁体   English   中英

运行以下代码时出现逻辑错误

[英]Getting a logical error while running following code

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

预计 Output

26.50

我的 Output

28.00

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

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

输入

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

我的 Output

56.00

预计 Output

56.00

我的代码适用于此输入,但不适用于其他输入。 你能试着解释一下为什么吗?

在您的情况下,您没有正确使用查询。 在计算 avg 时,您总是在计算最后一个人的 avg 分数。

avg = Decimal(sum(scores)/3)

正确的方法是这样的:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM