Python年龄分类代码报int与list不支持<比较的TypeError解决方法
错误原因
报错的核心原因是变量类型误用:
- 你代码开头将
Age_Group赋值为[18,24,34,44,54,64],这是一个列表(list)类型的变量,存储的是年龄区间的分界阈值 - 后续所有条件判断语句,都直接把这个列表和整数类型的年龄数值做
</>=类的大小比较,Python不支持列表和整数直接做这类大小比较,因此抛出TypeError: '<' not supported between instances of 'list' and 'int'的报错。
简单说就是你把「存分界值的列表」错当成了「要分类的年龄值」来写判断逻辑。
修复方法
首先需要单独定义存储待分类实际年龄值的变量,再基于这个变量做区间判断。
基础修正写法
直接调整变量定义,修正判断逻辑即可,示例代码如下:
# 替换为你需要分类的实际年龄值 age = 22 if age < 18: print("Category: Under 18") elif 18 <= age <= 24: print("Category: 18-24") elif 25 <= age <= 34: print("Category: 25-34") elif 35 <= age <= 44: print("Category: 35-44") elif 45 <= age <= 54: print("Category: 45-54") else: print("Category: 55 and over")
运行上述代码,当age=22时会正确输出Category: 18-24,不会再触发类型错误。
简化写法(复用阈值列表)
如果你想用到一开始定义的年龄分界列表,减少重复的判断条件,可以用循环匹配分类,示例如下:
# 待分类年龄 age = 36 # 区间阈值、对应分类标签 age_thresholds = [18,25,35,45,55] category_labels = [ "Category: Under 18", "Category: 18-24", "Category: 25-34", "Category: 35-44", "Category: 45-54", "Category: 55 and over" ] for idx, threshold in enumerate(age_thresholds): if age < threshold: print(category_labels[idx]) break else: print(category_labels[-1])
内容的提问来源于stack exchange,提问作者Aziz Bokhari
相关产品推荐
相关产品推荐

