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

Python解CodeChef AUCTION题输出全为Alice的逻辑错误排查

CodeChef AUCTION题代码错误排查与修正方案

题目基础信息

  • 题目来源:CodeChef平台,题目编号AUCTION
  • 规则说明:Alice、Bob、Charlie三人参与拍卖,三人出价分别为AA、BB、CC卢比,三个数值互不相同,出价最高者赢得拍卖,代码需要输出最终中标人的姓名。

原有问题代码

t = int(input())
for i in range(t):
    n  = (a,b,c) = map(int,input().split())
    a , b , c = "Alice","Bobs","Charlie"
    highest = max(n, default = 0)
    highest = a or b or c
    print(highest)

运行异常表现

  • 测试用输入:
200 100 400
155 1000 566
736 234 470
124 67 2
  • 实际错误输出:所有用例均返回Alice,和预期结果不符
Alice
Alice
Alice
Alice

核心逻辑错误点

  • 变量覆盖:代码先将读取到的三个整数出价存入a/b/c变量,下一行立刻将三个变量重新赋值为姓名字符串,原始出价数据被直接覆盖,后续完全无法参与比较。
  • 计算结果未关联映射:虽然通过max(n)算出了最高出价的数值,但没有做任何判断来确认这个最高值属于三个竞拍者中的哪一位,该行计算属于无效代码。
  • 逻辑运算符误用:highest = a or b or c的运行逻辑是从左到右返回第一个布尔值为真的对象,非空字符串的布尔值恒为真,因此该行永远会返回第一个值"Alice",这是所有用例输出一致的直接原因。
  • 拼写错误:Bob的姓名被错写为"Bobs",多了末尾的多余字符s。

可运行正确代码

t = int(input())
for _ in range(t):
    alice_bid, bob_bid, charlie_bid = map(int, input().split())
    highest = max(alice_bid, bob_bid, charlie_bid)
    if highest == alice_bid:
        print("Alice")
    elif highest == bob_bid:
        print("Bob")
    else:
        print("Charlie")

代码逻辑说明:读取测试用例数后,每轮分别读取三人的出价,计算最高出价后匹配对应出价人输出即可,题目已明确三个出价互不相同,不需要额外处理平局场景。

内容的提问来源于stack exchange,提问作者kannasayheydo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 11:27:13