如何通过用户输入查询CSV文件指定条目 计算对应年份预期寿命相关数据
Python作业修改方案(CSV预期寿命查询)
实现逻辑
- 新增用户输入指定年份的交互步骤
- 筛选出目标年份对应的所有预期寿命条目
- 基于筛选结果计算该年平均预期寿命,同时找出该年预期寿命最高、最低的国家
完整修改后代码
import csv # 存储所有csv行数据 all_data = [] with open("life-expectancy.csv", encoding='utf-8') as lifefile: reader = csv.reader(lifefile) # 跳过表头行 next(reader) for row in reader: all_data.append({ "country": row[0], "year": int(row[2]), "life_exp": float(row[3]) }) # 获取用户输入的查询年份 target_year = int(input("请输入需要查询的年份:")) # 筛选对应年份的所有数据 target_data = [item for item in all_data if item["year"] == target_year] if not target_data: print(f"未查询到{target_year}年的相关数据") else: # 计算平均预期寿命 avg_life = sum(i["life_exp"] for i in target_data) / len(target_data) # 找最高最低对应条目 highest = max(target_data, key=lambda x:x["life_exp"]) lowest = min(target_data, key=lambda x:x["life_exp"]) print(f"\n{target_year}年统计结果:") print(f"平均预期寿命:{avg_life:.2f}") print(f"预期寿命最高的国家:{highest['country']},数值为{highest['life_exp']}") print(f"预期寿命最低的国家:{lowest['country']},数值为{lowest['life_exp']}")
核心修改说明
- 移除原代码中冗余的未关闭文件打开语句,统一用
with上下文管理器处理文件读取,避免资源泄漏 - 替换手动分割字符串、计数跳表头的逻辑,用标准库
csv.reader处理CSV文件,避免字段含逗号时的解析错误 - 改用字典存储单条完整数据,避免多列表分开存储时索引对应出错的问题
- 新增用户输入交互、目标年份数据筛选逻辑,增加无对应年份数据的提示避免运行报错
- 所有统计计算基于筛选后的目标年份数据完成,完全符合作业要求
内容的提问来源于stack exchange,提问作者SakuraLord
相关产品推荐
相关产品推荐

