我知道这是一个简单的错误,但一整天都在看着它!我在哪里添加float或int以防止出现以下错误消息? int对象不可言说。
我如何从最高分到最低分打印出来。我可以添加reverse = True吗?我收到了一个元组错误。 -
scores = {} #You'll need to use a dictionary to store your scores;
with open("classscores1.txt") as f:
for line in f:
name, score = line.split() #store the name and score separately (with scores converted to an integer)
score = int(score)
if name not in scores or scores[name] < score:
scores[name] = score # replacing the score only if it is higher:
for name in sorted(scores):
print(name, "best score is", scores[name])
print("{}'s best score is {}".format(name, max(scores[name])))
答案 0 :(得分:1)
问题在于这一行:
print("{}'s best score is {}".format(name, max(scores[name])))
在这里,您尝试使用max
scores[name]
,这只是一个整数。看一下代码,看起来你已经把这个值作为最大值,所以你可以把那一行改成
print("{}'s best score is {}".format(name, scores[name]))
与上面的print
声明一样。 (另外,由于这两行print
行将打印相同的内容,您可以删除其中一行。)
要从最高分到最低分打印,请将for
循环更改为以下内容:
for name in sorted(scores, key=scores.get, reverse=True):
...
这使用scores
函数作为键对scores.get
中的名称进行排序,即按字典中的值排序,reverse=True
使其从最高到最低排序。< / p>