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

如何编写Python函数实现3天POS销售交易金额汇总与交易笔数统计

POS销售统计功能优化指导

你当前的代码逻辑已经能实现需求,但还有不少可以简化、提升可维护性的空间,以下是具体的优化方案和指导:

现有代码可优化点

  • 冗余变量过多:你定义的sun、sales、door、hdr等变量实际没有参与后续计算,完全可以删除
  • 重复代码冗余:周五/周六/周日的统计逻辑完全一致,用3组独立变量存储会导致后续扩展(比如加周四统计)时需要重复加变量和判断逻辑
  • 不必要的重复计算:总销售额和总笔数的计算放在了循环内,每次遍历都会重新算一次,实际只需要循环结束后算一次即可
  • 缺少必要依赖导入:代码开头没有导入csv模块,直接运行会报错
  • 魔法数可读性差:代码里直接写的row[11]、row[21],时间长了很容易忘记对应的列含义,维护成本高

优化后实现代码

import csv

# 定义常量代替魔法数,修改列位置时只需要改这里
AMOUNT_COL = 11
WEEKDAY_COL = 21
# 定义需要统计的日期,后续加日期只需要修改这个字典
TARGET_DAYS = {
    "Friday": {"count": 0, "sales": 0.0},
    "Saturday": {"count": 0, "sales": 0.0},
    "Sunday": {"count": 0, "sales": 0.0}
}

def calculate_3day_pos_sales(csv_path: str = "POS.csv"):
    with open(csv_path, 'r', encoding='utf-8') as csvfile:
        reader = csv.reader(csvfile, delimiter=',')
        # 直接跳过表头,不需要额外的标志变量
        next(reader)
        
        for row in reader:
            weekday = row[WEEKDAY_COL].strip()
            if weekday in TARGET_DAYS:
                TARGET_DAYS[weekday]["count"] += 1
                TARGET_DAYS[weekday]["sales"] += float(row[AMOUNT_COL].strip())
    
    # 循环结束后统一计算总数据
    total_sales = sum(day_info["sales"] for day_info in TARGET_DAYS.values())
    total_count = sum(day_info["count"] for day_info in TARGET_DAYS.values())
    avg_sale = total_sales / total_count if total_count != 0 else 0.0
    
    # 可按天输出明细
    for day, info in TARGET_DAYS.items():
        print(f"{day} 交易笔数:{info['count']},销售额:{info['sales']:.2f}")
    print(f"3天总销售额:{total_sales:.2f},3天单客平均消费:{avg_sale:.2f}")
    return total_sales, avg_sale

if __name__ == "__main__":
    calculate_3day_pos_sales()

新手开发注意事项

  • 可以额外加异常捕获逻辑,比如处理FileNotFoundError(csv文件不存在)、ValueError(金额列转float失败)的情况,避免程序直接崩溃
  • 如果后续需要处理更大的csv文件,也可以用pandas库处理,代码会更简洁,不过新手阶段先把标准库csv的用法搞懂更合适
  • 尽量把功能封装成函数,不要所有逻辑都写在全局,方便后续复用和调试

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 19:54:07