Python比较运算符判断年龄区间时输入9无法正确触发未成年提示问题
问题原因
你的代码核心疏漏是未将用户输入的内容转换为整数类型,直接用字符串做数值比较,触发了字符串字典序比较的逻辑错误。
Python中input()函数默认返回字符串类型,字符串的大小比较规则是逐位对比字符的ASCII码值,和数值大小比较逻辑完全不同:
- 输入年龄10时,得到字符串
'10',和判断条件里的'18'比较时,第一位字符都是'1',第二位字符'0'的ASCII码小于'8',因此判定'10' < '18',刚好走到未成年提示分支,属于巧合正确。 - 输入年龄9时,得到字符串
'9',和'18'比较时,第一位字符'9'的ASCII码(57)远大于'1'的ASCII码(49),因此会错误判定'9' >= '18',走到超龄判断分支,输出错误结果。
修正方案
- 获取用户输入后,先用
int()函数将输入内容转换为整数,再做条件判断 - 保持区间判断逻辑简洁,不需要多余的边界限制
修正后的可运行代码:
age = int(input("Enter your age: ")) if 18 <= age <= 22: print("Eligible") elif age < 18: print("sorry You are underage") else: print("sorry You are overage")
内容的提问来源于stack exchange,提问作者Pranab Poira
相关产品推荐
相关产品推荐

