Kattis Left Beehind问题Python代码编译错误排查求助
Kattis Left Beehind问题代码错误排查
我编写了一段Python 3代码用于解决Kattis平台的Left Beehind问题,但持续出现编译错误且无相关错误信息提示。代码如下:
def decision(sweetJars, sourJars): if sweetJars == sourJars == 0: return if sweetJars + sourJars == 13: print("Never speak again.") elif sweetJars > sourJars: print("To the convention.") elif sourJars > sweetJars: print("Left beehind.") else: print("Undecided.") for _ in range(int(input())): values = input().split() a = int(values[0]) b = int(values[1]) decision(a,b)
请问我的代码哪里存在问题?
问题核心:输入逻辑完全不符合题目要求
Kattis上这个题的输入规则是持续读取每行的两个整数,直到读到0 0时停止,而不是先输入一个测试用例的数量再循环。你现在的代码先读取一个整数作为循环次数,这和题目输入格式完全不匹配,这就是导致编译/运行错误的根本原因。
修正后的代码
def decision(sweetJars, sourJars): if sweetJars + sourJars == 13: print("Never speak again.") elif sweetJars > sourJars: print("To the convention.") elif sourJars > sweetJars: print("Left beehind.") else: print("Undecided.") while True: a, b = map(int, input().split()) if a == 0 and b == 0: break decision(a, b)
修正说明
- 把原来基于测试用例数量的
for循环改成while True无限循环,遇到0 0就终止循环,符合题目输入规则 - 移除了
decision函数里的0 0判断逻辑,因为这个判断已经放到循环入口处理,避免冗余 - 简化输入读取代码,用
map(int, input().split())直接将输入的两个字符串转为整数并赋值给变量,代码更简洁
内容的提问来源于stack exchange,提问作者WDUK
相关产品推荐
相关产品推荐

