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

Python初学者if语句未触发对应打印仅执行else分支问题求助

问题诊断
  • 你代码里的upper是字符串的内置转换方法,调用方法必须加后缀括号(),你没写括号时,代码实际是把方法本身的内存地址对象和字符串"no"做对比,二者永远不可能相等,所以if条件永远不成立,只会执行else分支。
  • 其次upper()方法会把输入的字符串全部转为大写格式,转换后的结果是大写的"NO",你用转换后的结果和小写的"no"做匹配也永远无法命中条件。
修复后可正常运行的代码

如果需要保留原英文交互逻辑,修正代码如下:

canyou = input("Can you make a good meal on your own? ")
canyou1 = input("Can you wash your clothes well? ")
canyou2 = input("Can you clean the house properly? ")

if canyou.upper() == "NO" and canyou1.upper() == "NO" and canyou2.upper() == "NO":
    print("You need your mama")
else:
    print("You don't need your mama")

如果需要切换为中文交互,对应代码如下:

canyou = input("你能自己做好一顿饭吗?")
canyou1 = input("你能自己把衣服洗干净吗?")
canyou2 = input("你能把家里打扫妥当吗?")

if canyou.upper() == "NO" and canyou1.upper() == "NO" and canyou2.upper() == "NO":
    print("你需要你妈妈")
else:
    print("你不需要你妈妈")
补充说明

如果你更习惯转小写做判断,把代码里的upper()改成lower(),后面匹配的字符串改成小写的"no"即可,逻辑效果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 09:51:01