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

Python列表编程:获取群体最年轻者完整信息的问题求助

问题分析与解决方案

代码存在的核心问题

  • 把姓名、年龄、身份证号分别存在三个独立列表中,三者没有关联关系:调用min(persons)得到的是姓名字典序最小的名字,min(numbers_of_citizen_card)得到的是身份证号数值最小的号码,和最小年龄的人完全不匹配。
  • 循环中复用了变量i:最初i是输入的人数,循环for i in range(0, i)会把i覆盖为循环的索引值,导致后续if (i > 999)的判断完全失效(比如输入1000人,循环结束后i是999,永远不会触发提示)。

修正后的代码

用列表存储字典,把每个人的姓名、年龄、身份证号作为一个整体存储,直接关联对应信息:

persons = []

# 先获取人数并做合法性判断
person_count = int(input('请输入群体人数:'))
if person_count > 999:
    print('无法注册超过999人。')
else:
    # 录入每个人的信息
    for _ in range(person_count):
        name = input('请输入姓名:')
        age = int(input('请输入年龄:'))
        n_cc = input('请输入身份证号:')  # 身份证号用字符串存储,避免前导零丢失或数值过大问题
        persons.append({
            'name': name,
            'age': age,
            'citizen_card': n_cc
        })
    
    # 找到年龄最小的人
    youngest = min(persons, key=lambda x: x['age'])
    print(f"群体中最年轻的人是{youngest['name']},年龄{youngest['age']},身份证号{youngest['citizen_card']}。")

额外说明

  • 身份证号用字符串存储更合理:如果身份证号以0开头,转成整数会丢失前导零;而且身份证号长度超过整数范围时会报错,字符串能完美避免这些问题。
  • 用min()函数的key参数指定按年龄排序,直接从列表中取出年龄最小的完整信息字典,不需要手动匹配索引。

内容的提问来源于stack exchange,提问作者Gonçalo_Gomes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 13:35:13