Lazy loaded image
Task 1 - Sale Reporting
Words 1169Read Time 3 min
2025-4-27

📋 题目分析

✅ 简单介绍

本题目是关于一个超市销售报表自动生成的任务。过去,员工需要在关店后手动统计每日销售数据并报告总部。你的目标是帮助他们实现这部分流程的自动化,节省下班时间。
程序会接收多条销售记录,每条记录包含:
  • item type(商品种类):字符串
  • item quantity(销售数量):整数
  • sale total(销售总价):浮点数
最终的目标是:
  1. 并列出所有错误的销售记录
  1. 成一份销售汇总报告(按商品分类统计,包括销量、销售次数、平均收入以及错误数量)。

💡 解题思路

核心任务拆解

题目共分为三个子任务,对应三个函数的实现逻辑:

🧚 1. is_valid_sale(...)

功能:判断一条销售记录是否有效。
判断规则
  • 商品种类必须存在于价格表中;
  • 销售总价必须等于 单价 × 数量
✅ 只要任一条件不满足,这条记录就是无效的。
伪代码

🔍 2. flag_invalid_sales(...)

功能:找出所有不合法的销售记录。
  • 遍历销售列表,调用 is_valid_sale(...) 逐条判断;
  • 返回一个新列表,包含所有错误记录;
  • 不得修改原始 sales 列表内容。
伪代码

📊 3. generate_sales_report(...)

功能:生成一个销售报表字典,统计每天每种商品的汇总情况。
包含以下统计项:
字段名
含义说明
Units Sold
有效记录中总销量(单位)
Sales Made
有效记录中出现的次数
Average Income
有效记录中的平均销售额(/次)
Errors
错误记录数(不参与任何其他统计)
⚠️ 所有统计仅考虑有效记录,但报表必须覆盖所有价格表中定义的商品类型,即使当天没卖出。
伪代码

📌 注意事项

  1. 精度问题: 比较金额时浮点数可能会导致误差,考虑用 round(...) 处理或差值比较方式。
  1. 平均收入 需要避免除以 0 的情况(没有有效销售记录时设置为 0)。
  1. sales 中每个记录的格式为列表或元组,需要明确结构顺序。
  1. 报表格式以字典方式返回,不需要特定表格输出,只要结构对即可。
  1. 不可修改函数定义或参数,严格按照提供的函数框架编写。
  1. 分离逻辑模块是加分项,例如写一个辅助函数来统计单个商品的数据。

🧐 总结

实现上不复杂,但对结构化思维的要求较高。掌握了清洗数据、分步处理、字典归类这类操作,这种题就能轻松拿下。总之问题不大,秒了。