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

如何完善Python代码实现名字排名查询与结果输出功能?

完善名字流行度查询程序

以下是满足需求的完整代码,同时优化了文件读取和查询逻辑:

# 初始化存储男孩和女孩名字数据的字典,键为小写名字,值为(排名, 使用人数)
boy_name_data = {}
girl_name_data = {}

# 读取男孩名字文件,记录排名与使用人数
with open('boynames.txt', 'r') as boy_file:
    # enumerate从1开始计数,直接对应排名
    for rank, line in enumerate(boy_file, start=1):
        name, count = line.strip().split()
        boy_name_data[name.lower()] = (rank, int(count))

# 读取女孩名字文件,记录排名与使用人数
with open('girlnames.txt', 'r') as girl_file:
    for rank, line in enumerate(girl_file, start=1):
        name, count = line.strip().split()
        girl_name_data[name.lower()] = (rank, int(count))

# 持续接收用户输入直到输入"-1"
while True:
    user_input = input('Enter a name (-1 to exit): ')
    if user_input == '-1':
        print('Exiting program')
        break
    
    # 统一名字格式:小写用于字典查询,首字母大写用于输出
    normalized_name = user_input.lower()
    display_name = normalized_name.capitalize()

    # 查询男孩名字排名
    if normalized_name in boy_name_data:
        boy_rank, boy_count = boy_name_data[normalized_name]
        print(f"{display_name} is ranked {boy_rank} in popularity among boys with {boy_count} namings.")
    else:
        print(f"{display_name} is not in the top 1000 boy names.")
    
    # 查询女孩名字排名
    if normalized_name in girl_name_data:
        girl_rank, girl_count = girl_name_data[normalized_name]
        print(f"{display_name} is ranked {girl_rank} in popularity among girls with {girl_count} namings.")
    else:
        print(f"{display_name} is not in the top 1000 girl names.")

关键优化点说明

  • 文件读取安全:使用with语句自动管理文件资源,避免手动关闭文件的遗漏。
  • 排名直接获取:利用enumerate(start=1)直接从文件行号得到排名,无需额外计算。
  • 大小写兼容:字典键存储小写名字,用户输入无论大小写都能匹配查询。
  • 循环交互逻辑:通过while True实现持续输入,直到用户输入-1退出程序。
  • 完整查询反馈:同时处理男孩和女孩名字的查询,不存在时给出明确提示。

内容的提问来源于stack exchange,提问作者Tarun REX

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 19:30:12