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

Python代码本地运行正常却报错ValueError: invalid literal for int() with base 10

问题排查:CSV输入处理逻辑错误导致ValueError

问题描述

我编写了一段计算四位选手得分总和的Python代码,输入为每行含选手名与五个分数的CSV格式数据。本地运行可得到预期输出{'Virat': 402, 'Rohit': 400, 'Sky': 150, 'Shreyas': 200},但在答题平台运行时出现错误:ValueError: invalid literal for int() with base 10,请求排查问题原因。

原代码

total = {}
count = 0
while(count < 4):
    _input = input()
    count = count + 1
    total[_input] = 0
    for i in range(5):
        _input2 = int(input())
        total[_input] = total[_input] + _input2      
print(total)

输入数据

Virat,101,88,93,0,120
Rohit,50,100,30,140,80
Sky,10,20,30,40,50
Shreyas,100,0,0,100,0

错误原因

你的代码输入处理逻辑完全不符合给定的CSV格式:

  • 代码逻辑是先读取1行作为选手名,再循环读取5行作为单个分数累加
  • 但实际输入是每行包含选手名+5个分数的CSV字符串,平台会一次性按给定的4行数据输入

当代码读完第一行CSV字符串作为选手名后,接下来会读取第二行CSV字符串尝试转成整数——这行是带逗号的非纯数字字符串,自然触发ValueError。本地能运行是因为你手动输入时没有遵循CSV格式,而是分6次输入(1次选手名+5次分数),刚好匹配了代码错误的逻辑。

修正后的代码

正确的处理方式是读取每行后用逗号分割字段,提取选手名和分数并求和:

total = {}
for _ in range(4):
    line = input().strip()
    parts = line.split(',')
    name = parts[0]
    scores = list(map(int, parts[1:]))
    total[name] = sum(scores)
print(total)

这段代码能正确解析CSV格式的输入,计算出每个选手的总分,适配平台的输入规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 00:47:07