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

Python If/Then语句突发失效问题排查求助

问题描述

我不清楚出现该问题的原因,今日早些时候编写的若干If/Then程序在短短几小时内突然无法正常运行。我已排查所有可能的语法错误,但代码仍无法正常执行。以下是相关代码:

num=(input("Input a number from 1 to 10"))
if int(num) == range(1, 10):
        if int(num)==int(1):
            print("I")
        else:
            if int(num)==int(2):
                print("II")
            else:
                if int(num)==int(3):
                    print("III")
                else:
                    if int(num)==int(4):
                        print("IV")
                    else:
                        if int(num)==int(5):
                            print("V")
                        else:
                            if int(num)==int(6):
                                print("VI")
                            else:
                                if int(num)==int(7):
                                    print("VII")
                                else:
                                    if int(num)==int(8):
                                        print("VIII")
                                    else:
                                        if int(num)==int(9):
                                            print("VIV")
                                        else:
                                            if int(num)==int(10):
                                                print("X")
                                            else:
                                                print("this aint it chief")
else:
        print("ERROR-Please give a number from 1 to 10")
问题修复与优化

核心错误点

  • 范围判断逻辑错误:int(num) == range(1, 10)完全不成立,range(1,10)是一个范围对象,不是单个数值,永远无法和整数相等。正确判断应该用int(num) in range(1, 11)(range是左闭右开结构,要包含10需写成range(1,11))。
  • 罗马数字错误:数字9对应的罗马数字写成了VIV,正确写法应为IX。
  • 冗余类型转换:int(num)==int(1)这类写法无意义,提前将输入转为整数,后续直接用整数比较即可减少重复代码。

修复后的基础版本代码

num_int = int(input("Input a number from 1 to 10"))
if num_int in range(1, 11):
    if num_int == 1:
        print("I")
    elif num_int == 2:
        print("II")
    elif num_int == 3:
        print("III")
    elif num_int == 4:
        print("IV")
    elif num_int == 5:
        print("V")
    elif num_int == 6:
        print("VI")
    elif num_int == 7:
        print("VII")
    elif num_int == 8:
        print("VIII")
    elif num_int == 9:
        print("IX")
    elif num_int == 10:
        print("X")
else:
    print("ERROR-Please give a number from 1 to 10")

更简洁的优化版本

用字典映射替代多层嵌套的if/elif,代码可读性和维护性更强:

num_int = int(input("Input a number from 1 to 10"))
roman_map = {
    1: "I", 2: "II", 3: "III", 4: "IV", 5: "V",
    6: "VI", 7: "VII", 8: "VIII", 9: "IX", 10: "X"
}
print(roman_map.get(num_int, "ERROR-Please give a number from 1 to 10"))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 11:15:37