You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python判断变量不等于两个指定字符串时or逻辑错误如何解决

问题成因

你修改后的判断条件存在布尔逻辑错误,没有正确应用条件取反规则,我们可以逐场景拆解错误条件chosen != "1" or chosen != "2"的运行结果:

  • 输入为"1"时:"1" != "1"结果为False,"1" != "2"结果为True,False or True最终为True,进入非法输入分支
  • 输入为"2"时:"2" != "1"结果为True,or逻辑只要有一个条件为真就会直接返回True,仍然进入非法输入分支
  • 输入为其他任意内容时:两个不等判断全为True,结果还是True

由于一个字符串不可能同时等于"1"和"2",所以两个不等判断用or连接时,永远至少有一个条件成立,整个if判断恒为真,自然永远无法触发else分支。

底层逻辑规则

你最初的合法输入判断逻辑是「输入值等于1 或者 输入值等于2」,要对这个整体条件取反得到非法输入判断,需要遵循德摩根定律:

对逻辑表达式(A 或 B)整体取反,等价于(非A 且 非B),而非(非A 或 非B)

你之前的修改只把相等判断换成了不等判断,没有同步把逻辑连接词or换成and,才导致逻辑恒真的bug。

正确实现写法

如果要优先处理非法输入分支,只需要把错误条件里的or替换为and即可:

chosen = input()
if chosen != "1" and chosen != "2":
  print("Please choose between 1 or 2.")
else:
  print("Okay")

更推荐用成员运算符写判断,可读性更强,也不容易出现逻辑连接词用错的问题:

chosen = input()
if chosen not in ("1", "2"):
  print("Please choose between 1 or 2.")
else:
  print("Okay")

内容的提问来源于stack exchange,提问作者Gauweed International

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 02:27:30