使用max()时获取“'builtin_function_or_method'对象不可迭代”

时间:2019-01-17 04:01:26

标签: python typeerror python-3.5

我正在尝试建立一个字典,允许用户输入名称和相应的分数(添加游戏名称也将是一个奖励),然后能够查询高分。

这是我尝试过的:

scores = {}

while True:                                                                                                 
    name = input("Please give me the name of the player [q to quit]:")
    if name == 'q':
        break
    else:
        grade = input("Give me their score: ")
        scores[name] = grade

highScore = max(scores.values)

for k, v in scores.items():
    if v == highScore:
        print(v, k)

这是我得到的错误:

highScore = max(scores.values)
TypeError: 'builtin_function_or_method' object is not iterable

1 个答案:

答案 0 :(得分:2)

max接受一个可迭代对象,但是您将其传递给一个函数。

print(type(scores.values))   # <class 'builtin_function_or_method'>
print(type(scores.values())) # <class 'dict_values'>

只传递函数的输出,而不传递函数本身。

highScore = max(scores.values())