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

Python中if多or条件判断时else语句不生效如何解决?

问题根因
  • Python中逻辑运算符or的左右是独立的布尔判断单元,你写的条件没有为每个字符串指定比较对象,实际会被解析为:
    if (ans1 == "yes") or (bool("Yes")) or (bool("Yeah")) or (bool("yeah")) or (bool("indubitably")):
    
  • 非空字符串的布尔值恒为True,因此无论用户输入什么,整个条件表达式的结果永远是True,只会走if分支。
  • 注意firstdenial函数里的ans3判断也存在完全相同的逻辑问题。
修复方法

有两种可行写法,推荐第二种更简洁易维护的方案:

写法1:补全所有判断逻辑

把每个待匹配的字符串都和输入变量做等值判断:

# 对应ans1的判断
if ans1 == "yes" or ans1 == "Yes" or ans1 == "Yeah" or ans1 == "yeah" or ans1 == "indubitably":
    firstanswer()
else:
    firstdenial()

写法2(推荐):用成员运算简化判断

把所有合法输入存入列表,用in关键字判断输入是否在合法列表中,同时可以通过转小写兼容更多大小写输入场景,减少冗余匹配项:

# 先把输入统一转小写,只需要匹配小写形式即可,兼容各种大小写输入
if ans1.lower() in ["yes", "yeah", "indubitably"]:
    firstanswer()
else:
    firstdenial()

同理ans3的判断也可以同步修改为:

if ans3.lower() in ["yes", "yeah", "indubitably"]:
    gametime()
else: 
    print ("well funk you, stupid delinquent instead of playing a game go read a book.")
    exit()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 06:03:00