You need to enable JavaScript to run this app. Python代码中标记的if语句不生效,所有情况均触发else分支如何解决
优惠活动
大模型
产品
解决方案
定价
更多

Python代码中标记的if语句不生效,所有情况均触发else分支如何解决

Python if语句不触发问题原因及修复方案

问题原因

  • 核心原因是类型不匹配:input() 函数返回值默认是字符串类型,你给 guess 加的 int 类型注解仅做标记作用,不会自动执行类型转换,实际运行时 guess 还是字符串类型。而 random.randint(1,2) 返回的是整数类型,整数和字符串做 == 比较永远返回 False,所以标记的if分支永远不会触发。
  • 同时存在额外逻辑错误:guess <= "2" 是字符串比较规则,不符合数值判断需求,else分支的输入错误提示内容和要求输入1-2的逻辑也不匹配。

修复方案

在获取用户输入时主动把输入值转为整数即可,同时修正关联逻辑错误,修改后的完整代码如下:

import time
name = input("Enter your name:")
currentTime = int(time.strftime('%H'))

if currentTime < 12 :
     print('Good morning,'+name)
elif currentTime > 12 :
     print('Good afternoon,'+name)
else :
     print('Good evening,'+name)

def main():
    import random
    # 输入时主动转换为int类型
    guess = int(input('Enter a number between 1 and 2 :'))
    # 改为数值范围判断,符合输入1-2的要求
    if 1 <= guess <= 2:
        num = random.randint(1, 2)
        print("the number is ", num)
        # 现在两侧都是int类型,比较可以正常触发
        if  num == guess:
            print('you won your promote to level 2')
        else:
            print("You lost, Lets try again")
            repeat = input('Do you want to try again:')
            if repeat == "yes":
                main()
            else:
                print("Good bye")
                exit()
    else:
        # 修正错误的提示内容
        print("the number you entered is not in range, Please enter a number between 1 and 2")
        main()

main()

可选优化(输入合法性校验)

如果要避免用户输入非数字内容导致程序崩溃,可以在转换整数时增加异常捕获逻辑:

try:
    guess = int(input('Enter a number between 1 and 2 :'))
except ValueError:
    print("Please enter a valid integer")
    main()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 11:24:03