Python相等运算符==条件判断异常:输入任意值均返回True
问题:判断是否重新游玩的条件永远返回True
我做了个文本小游戏,想加个重新玩的选项,就把整个游戏逻辑套进了循环,然后在循环末尾加了这段代码:
again = input('Would you like to play again? (Y/N) ') if again == "Y" or "y": continue else: break
结果不管输入啥,这个条件都返回True。我改了代码调试:
again = input('Would you like to play again? (Y/N) ') print(again) if again == "Y" or "y": print("True") else: print("False")
输入n的时候输出是这样的:
Would you like to play again? (Y/N) n n True
为啥会这样?
你写的if again == "Y" or "y"在Python里的实际逻辑是(again == "Y") or "y"。Python里非空字符串属于“真值”,所以不管前面的again == "Y"是对是错,整个表达式都会因为后面的"y"永远返回True。
怎么改?
有几种简单的修复方式:
- 分别判断两个相等条件:
again = input('Would you like to play again? (Y/N) ') if again == "Y" or again == "y": continue else: break
- 把输入转成小写(或大写)后再判断,简化代码:
again = input('Would you like to play again? (Y/N) ').lower() if again == "y": continue else: break
- 用
in判断输入是否在指定的选项集合里:
again = input('Would you like to play again? (Y/N) ') if again in ("Y", "y"): continue else: break
这样就能正确根据输入决定是否重新开始游戏了。
内容的提问来源于stack exchange,提问作者Michael Mei
相关产品推荐
相关产品推荐

