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

Python代码求助:实现客户单日消费与总消费查询功能

问题分析与代码修正

原代码存在的核心问题

  • 文件读取错误:外层for row in files:已经读取了文件第一行,内层列表推导式[row.strip().split(',') for row in files]会从第二行开始读取,直接丢失首行数据。
  • 数据覆盖问题:用字典存储客户消费时,同一客户的多次消费会被最后一次记录覆盖,无法计算总消费;日期字典也会覆盖同一日期的消费记录,且没有关联目标客户,无法定位到该客户的当日消费。
  • 变量未初始化风险:如果目标客户或日期不存在,customer_expense或date_expense未定义,执行return会直接抛出NameError。
  • 返回值错误:代码返回的是整个字典,而非需求的「客户总消费金额」和「该客户特定日期的消费金额」。

修正后的代码

def analysis(file: str, customer: str, date: str) -> (float, float):
    total_expense = 0.0
    date_expense = 0.0
    
    with open(file, 'r') as f:
        # 若文件首行是表头,解开下方注释跳过表头
        # next(f)
        for line in f:
            parts = line.strip().split(',')
            # 跳过格式错误的行,避免索引越界
            if len(parts) < 4:
                continue
            current_customer = parts[0]
            amount = float(parts[2])
            current_date = parts[3]
            
            if current_customer == customer:
                total_expense += amount
                if current_date == date:
                    date_expense += amount
    
    return total_expense, date_expense

代码说明

  • 初始化total_expense和date_expense为0,确保哪怕目标客户/日期不存在,也能正常返回有效值,避免报错。
  • 逐行读取文件,避免重复读取导致的数据丢失问题。
  • 增加行格式检查,防止因脏数据引发的索引越界错误。
  • 遍历过程中实时累加目标客户的总消费,同时匹配目标日期累加当日消费,精准满足需求。
  • 使用float处理金额,适配包含小数的消费场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 22:49:57