gpt4 book ai didi

python - "not in"身份运算符在检查某些字符的空字符串时不起作用

转载 作者:太空狗 更新时间:2023-10-29 22:05:19 25 4
gpt4 key购买 nike

当检查空字符串变量是否填充了特定字符时,表达式总是被评估为真。如果新创建的字符串值为空,则它应该为 false,它不包含任何字符,更不用说要检查的字符了。

当我对一个随机字符进行硬编码时,该字符不是被检查的字符,表达式被评估为 false。

difficulty = ''

while difficulty not in 'EMH':
print('Enter difficulty: E - Easy, M - Medium, H - Hard')
difficulty = input().upper()

我希望看到调试器进入 while 循环。实际发生的是它继续通过 while block 而不执行。

最佳答案

任何字符串中都存在空字符串。因此,当 difficulty 等于 '' 时,您的条件 difficulty not in 'EMH' 将评估为 False;所以 while 循环体不会被执行。

In [24]: '' not in 'EMH'                                                                                                                                  
Out[24]: False

In [33]: '' in 'EMH'
Out[33]: True

更好的方法可能是通过 list('EMH') 将字符串 EMH 转换为列表,以便像 EMEH,或者一个空字符不会中断你的循环,或者避免它从一开始就开始

另外,正如@Blckknght 所建议的,一个更好的替代方案是使用默认值 None 作为难度。

In [3]: difficulty = None                                                                                                                                

In [4]: while difficulty not in list('EMH'):
...: print('Enter difficulty: E - Easy, M - Medium, H - Hard')
...: difficulty = input().upper()
...:
Enter difficulty: E - Easy, M - Medium, H - Hard
A
Enter difficulty: E - Easy, M - Medium, H - Hard
B
Enter difficulty: E - Easy, M - Medium, H - Hard
C
Enter difficulty: E - Easy, M - Medium, H - Hard
EM
Enter difficulty: E - Easy, M - Medium, H - Hard
E

In [5]:

关于python - "not in"身份运算符在检查某些字符的空字符串时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56205560/

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