生成战斗报告

PythonBeginner
立即练习

介绍

在这个项目中,你将学习如何根据提供的数据文件生成战斗报告。战斗报告将总结在三个不同敌方基地发生的战斗的关键信息,包括战斗 ID、价值、总参与者、受伤人数、死亡人数和阵亡英雄。

👀 预览

战斗报告

🎯 任务

在这个项目中,你将学习:

  • 如何读取和理解包含战斗信息的数据文件
  • 如何实现 auto_generate_report 函数来生成战斗报告
  • 如何通过额外的格式设置和信息来增强战斗报告
  • 如何测试和完善战斗报告以确保它符合要求

🏆 成果

完成这个项目后,你将能够:

  • 高效地读取和处理 CSV 文件中的数据
  • 实现一个函数来生成结构化且信息丰富的报告
  • 展示你按照逐步说明完成编码项目的能力
  • 提升你在数据处理、格式化和报告方面的技能

读取并理解数据文件

在这一步中,你将学习如何读取并理解为该项目提供的数据文件。

三个基地的数据文件分别命名为 A.csvB.csvC.csv。每行数据包含以下信息:

  • id:战斗的 ID 编号。
  • value:战斗目标的价值。
  • total:我方参与战斗的总人数。
  • injured:我方在战斗中的受伤总人数。
  • dead:我方在战斗中的死亡人数。
  • hero:战斗中阵亡者的 ID 编号。
✨ 查看解决方案并练习

实现 auto_generate_report 函数

在这一步中,你将实现 auto_generate_report 函数来生成战斗报告。

打开 auto_generate_report.py 文件。在 auto_generate_report.py 文件中,auto_generate_report 函数应以文件路径列表作为输入,并返回作为字符串的战斗报告。该函数应从每个文件中读取数据,按 value 字段降序排序,然后生成战斗报告。

以下是 auto_generate_report 函数的初始代码:

def auto_generate_report(file_paths):
    report = "战斗报告如下:\n"

    for file_path in file_paths:
        with open(file_path, "r") as file:
            reader = csv.DictReader(file)
            data = list(reader)

        data.sort(key=lambda x: int(x["value"]), reverse=True)

        base_name = file_path.split("/")[-1].split(".")[0].upper()
        report += (
            f"在基地 {base_name} 发生的战斗,按价值排序,如下所示:\n"
        )
        for row in data:
            report += f"战斗 ID:{row['id']},价值:{row['value']},本次战斗的总参与者:{row['total']},受伤:{row['injured']},死亡:{row['dead']}。"
            if row["dead"] == "0":
                report += " 阵亡英雄:无。\n"
            else:
                report += f" 阵亡英雄:{row['hero']}。\n"

    return report

要完成实现,你需要:

  1. 添加错误处理,以防文件路径无效或文件无法读取。
  2. 确保报告格式一致且易于阅读。
  3. 使用提供的示例输入测试 auto_generate_report 函数,并验证输出是否符合预期格式。
✨ 查看解决方案并练习

测试并完善战斗报告

在这最后一步中,你将使用提供的示例输入测试 auto_generate_report 函数,并根据需要完善报告。

  1. 通过运行以下代码来测试该函数:
if __name__ == "__main__":
    file_paths = [
        "/home/labex/project/A.csv",
        "/home/labex/project/B.csv",
        "/home/labex/project/C.csv",
    ]
    print(auto_generate_report(file_paths))

这将根据提供的文件中的数据生成战斗报告。

  1. 使用以下命令运行脚本:

    python auto_generate_report.py
战斗报告
  1. 仔细检查生成的战斗报告,并确保它满足以下要求:

    • 报告易于阅读和理解。
    • 每个基地的战斗信息按 value 字段降序排序。
    • 当没有死亡时,“阵亡英雄”部分正确显示“无”,当有死亡时,列出阵亡英雄的 ID。
    • 报告的整体格式一致且视觉上吸引人。
  2. 如果你发现任何问题或需要改进的地方,请相应地更新 auto_generate_report 函数并重新测试报告。

一旦你对生成的战斗报告感到满意,你就成功完成了这个项目!

✨ 查看解决方案并练习

总结

恭喜你!你已经完成了这个项目。你可以在 LabEx 中练习更多实验来提升你的技能。