Kattis题目Job Expenses本地测试正常提交报RuntimeError求解
问题背景
我是编程新手,近期在Kattis平台练习编程题目,在求解Job Expenses题目时遇到异常:所有本地测试用例运行结果均正确,但提交代码后平台返回RuntimeError,暂未定位到问题原因,需要相关排查建议。
提交的原始代码
i =input() k = input().split(" ") summe=[] for n in k: if int(n)<0: summe.append(int(n)) x=sum(summe) print(abs(x))
问题排查与修复方案
- 核心报错原因:代码中使用
split(" ")做字符串分割存在逻辑缺陷。带固定空格参数的split方法仅会按单个空格做切割,当输入行存在首尾空格、连续多个空格时,切割结果会包含空字符串,后续执行int(n)转换空字符串时会直接抛出ValueError,触发运行时错误。 - 基础修复:将
input().split(" ")修改为input().split(),不带参数的split方法会自动忽略首尾空白字符,按任意长度的连续空白(空格、制表符、换行)做分割,不会产生无效空串。 - 鲁棒性优化:放弃固定读两行的逻辑,一次性读取所有输入内容再做分割处理,避免因判题机输入换行格式和本地环境不一致导致的读入异常,参考代码如下:
import sys nums = list(map(int, sys.stdin.read().split())) # 第一个数是总记录数N,直接跳过即可 total_expense = sum(abs(num) for num in nums[1:] if num < 0) print(total_expense)
注:原始代码中第一行读取的
i变量没有被实际使用,虽然不会直接触发报错,但属于冗余代码。
内容的提问来源于stack exchange,提问作者SmithersWhoIsThisMan
相关产品推荐
相关产品推荐

