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

如何实现3天销售总额与交易笔数统计函数并融入主逻辑

问题分析与修改方案

原代码存在几个核心错误导致无法正常运行:

  • 自定义函数daycalc内部未初始化tot变量,直接累加会触发NameError
  • 函数内的return缩进错误,放在了for循环内部,遍历第一行就会直接返回结果,无法统计全量数据
  • csv.reader是一次性迭代对象,主逻辑遍历后再在函数里遍历会读取不到任何内容
  • 函数定义的参数value、count未实际使用,也没有传入读取到的CSV数据,逻辑完全脱节
完整可运行实现
import csv

def calc_weekend_sales(csv_reader):
    # 初始化各天统计变量
    frisales = 0.0
    fricnt = 0
    satsales = 0.0
    satcnt = 0
    sunsales = 0.0
    suncnt = 0
    # 跳过表头行
    next(csv_reader)
    # 遍历所有数据行统计
    for row in csv_reader:
        weekday = row[21]
        sale_amount = float(row[11])
        if weekday == 'Friday':
            frisales += sale_amount
            fricnt += 1
        elif weekday == 'Saturday':
            satsales += sale_amount
            satcnt += 1
        elif weekday == 'Sunday':
            sunsales += sale_amount
            suncnt += 1
    # 计算汇总指标
    total_sales = frisales + satsales + sunsales
    total_cnt = fricnt + satcnt + suncnt
    avg_sale = total_sales / total_cnt if total_cnt > 0 else 0.0
    # 按字典返回所有维度结果,可按需取用
    return {
        '周五销售额': frisales,
        '周五交易笔数': fricnt,
        '周六销售额': satsales,
        '周六交易笔数': satcnt,
        '周日销售额': sunsales,
        '周日交易笔数': suncnt,
        '三天总销售额': total_sales,
        '三天总交易笔数': total_cnt,
        '三天单均交易额': avg_sale
    }

if __name__ == '__main__':
    with open('POS.csv', 'r', encoding='utf-8') as csvfile:
        my_reader = csv.reader(csvfile, delimiter=',')
        stat_result = calc_weekend_sales(my_reader)
    
    # 打印需要的结果
    print('3-day Total Sales:', stat_result['三天总销售额'], '3-day Average Sale:', stat_result['三天单均交易额'])
改动说明
  • 函数直接接收csv.reader对象作为参数,不依赖全局变量,复用性更强
  • 函数内统一处理表头跳过、数据统计、指标计算,主逻辑不需要重复写判断规则
  • 增加了除零判断,避免没有符合条件的交易时出现除数为0的报错
  • 返回结果用字典格式,可根据需求任意取用不同维度的统计值

内容的提问来源于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 20:15:03