Boolean或运算符在`choice != "y" or choice != "yes"`判断中结果错误问题
问题原因
你的逻辑运算符使用错误,这是典型的布尔逻辑判断误区:or运算符的规则是只要左右两边任意一个判断结果为真,整个条件表达式的结果就为真。代入不同输入场景验证就可以看出问题:
- 当你输入
y时:choice != "yes"的结果为真,整个if条件成立,触发break - 当你输入
yes时:choice != "y"的结果为真,整个if条件成立,触发break - 当你输入其他内容时:两个判断结果都为真,同样触发break
也就是说不管输入什么内容,这个if判断都会执行,循环永远会直接中断。
修复方案
有两种常用的修复方式:
方案1:将or替换为and
and要求左右两个判断同时为真时,整个条件才会成立,刚好匹配你的需求:只有当输入既不是y也不是yes时,才退出循环
choice = input("View another product?: ").lower() if choice != "y" and choice != "yes": print("Bye") break
方案2:使用成员判断优化可读性
这种写法更直观易懂,后续要新增允许的输入值也更方便:
choice = input("View another product?: ").lower() if choice not in ("y", "yes"): print("Bye") break
内容的提问来源于stack exchange,提问作者Cybers
相关产品推荐
相关产品推荐

