这个问题是在hackerrank里问的。好吧,我看到了讨论标签,但我喜欢用我的方式来做。但我得到的是错误的输出
if __name__ == '__main__':
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()
sum=0
for key, value in student_marks.items():
if query_name == value:
for i, p in enumerate(scores):
#sum=0
sum=sum+p
per = float(sum/(i+1))
print("{:.2f}".format(per))
break
else:
print("try again")
所以我得到的输出是
--Input (stdin)--
2
ram 34 56 67
anish 78 98 54
ram
--Your Output (stdout)--
try again
try again
我知道这个过程看起来很长,有点无聊,但是我真的想通过这个逻辑来解决这个问题。因为我刚刚开始学习python。
旁注:因为 sum
是一个内置变量,你不应该覆盖它。请使用其他的变量名称。我看到你使用了分数变量,这是不正确的。所以,修正 sum
相关的东西,你会得出以下的解决方案。
import statistics
if __name__ == '__main__':
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()
while True:
try:
marks = student_marks[query_name]
except KeyError:
print("Student does not exist")
else:
print("{:.2f}".format(statistics.mean(marks)))
break