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
相关产品推荐
相关产品推荐

