gpt4 book ai didi

python - 为什么python会忽略带有dict.keys()的if语句?

转载 作者:行者123 更新时间:2023-12-01 07:07:23 27 4
gpt4 key购买 nike

我做了一个if语句来确定输入的名字是否在投票字典中,但它不起作用。

我打印了voter in voted.keys()看看它是对还是错。但正如我所想,这是错误的!

voted = {'John':True, 'Alice':False, 'Rosa':True}

print(voted, end = '\n\n')

while 1:
voter = input('Enter your name : ')

if voter == '':
break

if voter in voted.keys() == False:
print(voter,'has no voting rights.', end= '\n\n')
continue


if voted[voter] == True:
print(voter, 'already voted!', end= '\n\n')
elif voted[voter] == False:
print(voter, ', please vote!', end= '\n\n')
voted[voter] = True

print(voted)

我预计会打印“NAME 没有投票权”。但实际输出是错误代码 'if voted[voter] == True: KeyError: 'NAME''

最佳答案

两者in==被视为比较运算符,因此受到链接的影响(这使您可以编写类似 1 < x < 5 而不是 1 < x and x < 5 的内容)。该表达式相当于

voter in voted.keys() and voter.keys() == False

keys方法从不返回 bool 值,该比较始终为 false。这是一个更简单的示例,并使用括号来解决问题:

>>> 3 in [1,2,3] == True
False
>>> (3 in [1,2,3]) == True
True

in已经计算为 bool 值,您不需要额外的比较。使用not in相反。

if voter not in voted:

您也不需要调用keys ; innot in自动检查 dict 的键.

关于python - 为什么python会忽略带有dict.keys()的if语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58377495/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com