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

2024-10-01 22:26:04 发布

您现在位置:Python中文网/ 问答频道 /正文

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行包含学生获得的姓名和分数,每个值用空格分隔。最后一行包含查询名称,即要查询的学生的名称

输入

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

我的输出

56.00

预期产出

56.00

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


Tags: 代码name名称inputlinestudent学生分数
1条回答
网友
1楼 · 发布于 2024-10-01 22:26:04

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

avg = Decimal(sum(scores)/3)

正确的方法如下所示:

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

相关问题 更多 >

    热门问题