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

Python条件语句逻辑异常求助:新手遇if/elif判断结果颠倒问题

解决你的Python条件语句逻辑反转问题

嘿,我一眼就看出问题出在哪啦!你的条件判断逻辑刚好搞反了,根源是你误解了str.find()方法的返回值在布尔判断里的表现。

问题原因详解

str.find(substring)这个方法的规则是:

  • 如果找到子串,返回它在字符串中的起始索引位置(比如输入"good"时,mood.find("good")返回0)
  • 如果没找到,返回-1

但在Python的布尔判断里:

  • 0会被视为False
  • 任何非零的数字(包括-1)都会被视为True

这就导致了你的逻辑完全反转:

  • 当你输入"good"时,if mood.find("good")等价于if 0,条件不成立,直接跳到elif分支;而mood.find("bad")返回-1,被视为True,所以执行bad对应的逻辑。
  • 当你输入"bad"时,mood.find("good")返回-1,被视为True,直接执行good的分支。

修正方案

有两种简单的修正方式,更推荐第二种(Python风格更明显,也更易懂):

方式1:修正find()的判断逻辑

检查find()的返回值是否不等于-1:

import time
name = input("Hello! Whats your name: ")
mood = input("Hello, " + name + " how are you feeling today? ")
if mood.find("good") != -1:
    time.sleep(0.3)
    print("Thats awesome!")
elif mood.find("bad") != -1:
    time.sleep(0.3)
    input("Oh, whats made you feel so down? ")
    print("Aww, thats ok.")
time.sleep(1)
activity = input("What are you doing today? ")

方式2:用in关键字判断(更推荐)

在Python里,判断子串是否存在,直接用substring in string的写法更直观,新手也更容易理解:

import time
name = input("Hello! Whats your name: ")
mood = input("Hello, " + name + " how are you feeling today? ")
if "good" in mood:
    time.sleep(0.3)
    print("Thats awesome!")
elif "bad" in mood:
    time.sleep(0.3)
    input("Oh, whats made you feel so down? ")
    print("Aww, thats ok.")
time.sleep(1)
activity = input("What are you doing today? ")

这样修改后,输入"good"就会执行对应的夸赞逻辑,输入"bad"就会触发安慰的流程啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:51:53