在Codeforces测试1中遭遇Runtime error,请求原因分析及排查
运行时错误原因分析
- 输入读取逻辑不符合题目输入格式:Codeforces的测试用例通常会将所有输入一次性提供,比如第一行是整数
num,第二行是num个用空格分隔的整数。你的代码在循环中每次调用input()会读取一整行,当测试用例的num个整数集中在同一行时,第二次input()会读取到包含多个数字的字符串,执行int(input())时会因为无法将多数字字符串转为整数抛出ValueError,直接触发运行时错误。 - 其他次要可能:如果测试用例存在空行或非数字字符,
int(input())也会抛出转换错误,但这种情况在Codeforces标准测试用例中极少出现,核心问题还是输入读取方式不匹配。
修复示例代码
改用一次性读取所有输入并拆分的方式,适配题目输入格式:
import sys # 读取全部输入内容并拆分为整数列表 all_input = list(map(int, sys.stdin.read().split())) num = all_input[0] arrs = [] for ele in all_input[1:num+1]: if ele > 0: arrs.append(1) elif ele < 0: arrs.append(2) else: arrs.append(ele) for x in arrs: print(x)
或者更简洁的实现:
import sys data = list(map(int, sys.stdin.read().split())) num = data[0] result = ['1' if x>0 else '2' if x<0 else '0' for x in data[1:num+1]] print('\n'.join(result))
内容的提问来源于stack exchange,提问作者muhamed ashraf
相关产品推荐
相关产品推荐

