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

如何解决列表循环中索引值相乘时int转换报错问题以获得合计值

错误原因
  • 直接触发报错的原因:int() 方法无法直接转换带小数点的字符串,你CSV文件的第2、3列(下标1、2)存在95.7这类浮点格式的字符串数据,直接传入int()就会触发该异常。
  • 代码隐藏逻辑错误:你写的counter =+ 1是错误写法,等价于每次循环都将counter赋值为1,无法正确统计数据行数,最终计算的平均值结果也会出错。
解决方案

如果业务允许对浮点数值取整后计算,可先将字符串转换为float类型再转int;如果需要保留小数精度,直接转换为float参与计算即可。如果要避免脏数据导致程序崩溃,可增加异常捕获逻辑,跳过不符合格式的数据行。

修正后代码示例
import csv
counter = 0
sum_total = 0
with open('sales_data_sample (3).csv','r', encoding='utf-8') as csv_file:
    csv_reader = csv.reader(csv_file)
    next(csv_reader)
    for lines in csv_reader:
        try:
            # 需保留小数就把int()去掉,直接用float()转换
            col1 = int(float(lines[1]))
            col2 = int(float(lines[2]))
        except (ValueError, IndexError):
            # 遇到格式错误/列缺失的行直接跳过
            continue
        counter += 1
        sum_total += col1 * col2
    avg = sum_total / counter if counter > 0 else 0
补充说明
  • 原代码里的变量名sum是Python内置函数名,不建议作为自定义变量使用,避免命名冲突。
  • 增加文件编码指定可以避免部分系统读取CSV时出现乱码问题,可根据你的CSV实际编码调整为gbk等其他编码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 17:45:05