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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 08:25:59