Python统计append列表中用户输入年龄的分组人数
问题描述
尝试独立实现年龄分组统计功能未得到预期结果,经网络检索未找到匹配解决方案。现有代码可提示用户输入10个年龄值,通过append()方法将输入值存入列表,已实现按年龄区间筛选、逐行打印匹配年龄值的功能,但无法统计每个年龄分组的总人数。查阅到的技术文档示例大多针对元素值已知的固定列表处理,需要适配动态输入场景的分组计数实现方案。
当前编写的代码如下:
age = [] for i in range (10): ag = int (input("Write your age")) age.append(ag) print ("The number of kids are: ") for i in range (10): if age [i] < 12: print (age [i]) print ("The number of teenagers are: ") for i in range (10): if age [i] >=12 and age [i] < 17: print (age [i]) print ("The number of adults are: ") for i in range (10): if age [i] >= 18: print (age [i])
实现方案
分组计数逻辑不需要提前预知列表元素,只需要在遍历判断年龄区间时,同步维护对应分组的计数变量即可。原有代码重复遍历了3次年龄列表,可以保留原有逐行打印年龄的逻辑,在打印分支中增加计数累加操作,也可以优化为单次遍历同时完成筛选、打印、计数,执行效率更高。
- 初始化3个年龄分组的计数变量,初始值均设为0
- 遍历年龄列表时,每匹配到一个对应区间的年龄,除了执行打印操作,同步将对应分组的计数值加1
- 所有元素遍历完成后,直接输出各分组的计数值就是对应分组的总人数
修改后的可运行代码:
age = [] # 初始化三个分组的计数器 kid_count = 0 teen_count = 0 adult_count = 0 for i in range(10): ag = int(input("Write your age: ")) age.append(ag) # 遍历各区间完成打印和计数 print("\nThe number of kids are: ") for item in age: if item < 12: print(item) kid_count += 1 print("The number of teenagers are: ") for item in age: if 12 <= item < 17: print(item) teen_count += 1 print("The number of adults are: ") for item in age: if item >= 18: print(item) adult_count += 1 # 输出各分组统计人数 print("\n===== Group Statistics =====") print(f"Total kids: {kid_count}") print(f"Total teenagers: {teen_count}") print(f"Total adults: {adult_count}")
如果不需要逐行打印每个匹配的年龄值,还可以用更简洁的写法,直接通过列表推导式生成对应区间的子列表,取子列表长度就是分组人数,这种写法对固定列表、动态输入生成的列表通用:
简化计数示例:
kid_count = len([a for a in age if a < 12]) teen_count = len([a for a in age if 12 <= a < 17]) adult_count = len([a for a in age if a >= 18])
内容的提问来源于stack exchange,提问作者Seb
相关产品推荐
相关产品推荐

