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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 04:09:15