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

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。

怎么改?

有几种简单的修复方式:

  1. 分别判断两个相等条件:
again = input('Would you like to play again? (Y/N) ')
if again == "Y" or again == "y":
    continue
else:
    break
  1. 把输入转成小写(或大写)后再判断,简化代码:
again = input('Would you like to play again? (Y/N) ').lower()
if again == "y":
    continue
else:
    break
  1. 用in判断输入是否在指定的选项集合里:
again = input('Would you like to play again? (Y/N) ')
if again in ("Y", "y"):
    continue
else:
    break

这样就能正确根据输入决定是否重新开始游戏了。

内容的提问来源于stack exchange,提问作者Michael Mei

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 13:00:21