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
相关产品推荐
相关产品推荐

