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

为什么Python代码中if判断不成立时try语句仍会执行?

问题根因

你遇到的问题和try语句无关,核心是if判断的语法逻辑写错了:
你编写的if Answer == "y" or "n":并不等价于「判断Answer的值是y还是n」,Python会把这个表达式拆成两部分判断:

  1. 第一部分:Answer == "y"的布尔值
  2. 第二部分:单独判断字符串"n"的布尔值
    因为非空字符串的布尔值恒为True,所以无论你输入什么内容,整个if条件的结果永远是True,会直接把decisão设为True并执行break。
    正确的判断写法可选以下两种:
# 完整写两次等值判断
if Answer == "y" or Answer == "n":
# 更简洁的成员判断写法
if Answer in ("y", "n"):

其他逻辑问题

你对try...finally的使用不符合当前场景:
finally块的规则是无论try块中是否抛出异常、是否执行了break/return语句,都会强制执行finally内的全部代码。你当前的代码没有需要捕获的异常场景,完全不需要使用try结构。而且你在finally里写了continue,会直接覆盖try块中break的执行效果,逻辑完全混乱。

修正后可正常运行的代码

decisão = False

class Confirmation():
    def menu(self, decisão):
        while decisão == False:
            Answer = input("Ready to play [y/n]?")
            if Answer == "y" or Answer == "n":
                decisão = True
                print(decisão)
                if Answer == "y":
                    print("let's play")
                elif Answer == "n":
                    print("ok, bye")
                    exit()
            else:
                print("Write 'y' or 'n'")

c = Confirmation()
c.menu(decisão)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 12:45:02