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

Python初学者提问:while循环yes/no输入校验逻辑异常该如何解决?

问题原因

  • 逻辑运算符使用错误:你用于判断非法输入的分支使用了or(或逻辑),该条件恒成立。任意输入必然满足「不等于yes」或「不等于no」中的至少一项:输入no时满足「不等于yes」,输入yes时满足「不等于no」,输入其他内容时两个条件都满足,因此该分支永远会被触发,后续判断no的分支永远不会执行,自然无法退出循环。
  • 分支判断顺序不合理:将no的退出判断放在非法输入判断之后,即使修正运算符也容易出现逻辑优先级问题。同时原代码未统一对用户输入做大小写归一处理,容易出现用户输入Yes/NO等大小写混合内容时识别失败的问题。

修正代码

把非法输入判断的or改为and(与逻辑),调整分支判断顺序,同时统一对用户输入做大小写归一处理:

while True:
    # 统一将用户输入转为小写,兼容大小写输入场景
    decision = input("Would you like to repeat? Yes or No? ").casefold()
    if decision == "yes":
        # 此处放置需要重复执行的业务逻辑
        print("")
    elif decision == "no":
        break
    # 剩下的都是非法输入场景,直接用else兜底即可,无需再写复杂判断
    else:
        print("Please type yes or no")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 21:48:04