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

如何通过用户输入查询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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 03:15:11