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

Python 3按指定顺序排列三个整数:代码在线判题失败原因排查

代码判题失败原因分析

问题背景

给定三个整数A、B、C(已知A < B < C,但输入顺序不一定),需将它们按指定顺序重新排列。输入第一行为三个正整数(不超过100),第二行为由'A'、'B'、'C'组成的目标顺序字符串。输出按目标顺序排列的三个数,用空格分隔。

测试样例

样例1

输入:

1 5 3
ABC

输出:

1 3 5

样例2

输入:

6 4 2
CAB

输出:

6 2 4

代码问题

该问题来自在线判题系统,共10个测试点。本人编写的代码本地运行正常,但仅通过2个测试点:

l = list(map(int,input().split()))
order = input()
l.sort()

if order == "ABC":
    print(l[0],l[1],l[2])
elif order == "ACB":
    print(l[0],l[2],l[1])
elif order == "BAC":
    print(l[1],l[0],l[2])
elif order == "BCA":
    print(l[1],l[2],l[0])
elif order == "CAB":
    print(l[2],l[0],l[1])
else:
    print(l[2],l[1],l[0])

若将最后一行的else:改为elif order == "CBA":,则所有测试点均失败,反馈为“答案错误”(非运行时错误)。而朋友提供的代码可通过所有测试点:

l = list(map(int,input().split()))
order = input()
l.sort()
result = []

for i in order:
    if i == "A":
        result.append(l[0])
    elif i == "B":
        result.append(l[1])
    elif i == "C":
        result.append(l[2])
print(" ".join(map(str, result)))

失败原因

你的代码失败主要源于两个细节问题:

1. 输入字符串未处理空白字符

在线判题系统的输入可能带有隐藏的空白字符(比如第二行输入末尾的空格、换行符残留),而你的代码直接使用严格的字符串全等判断(order == "ABC")。一旦order不是完全匹配的6种字符串之一:

  • 用else分支时,会默认输出CBA顺序,只有当测试点正好是CBA时才会正确,这就是仅通过2个测试点的原因;
  • 改成elif order == "CBA"后,所有不匹配的order都没有对应输出分支,代码无有效输出,导致全部测试点失败。

2. 输出格式不符合判题要求

Python中print(l[0], l[1], l[2])会在元素间自动加空格,且末尾会额外带一个空格。而判题系统通常严格要求输出的字符串末尾无多余空格,你的代码输出格式不符合要求,这也是大量测试点失败的核心原因。

朋友的代码正好规避了这两个问题:

  • 遍历order的每个字符,即使字符串有多余空白,只要有效字符是A/B/C就能正确生成结果;
  • 用" ".join(map(str, result))生成严格无末尾空格的字符串,完全符合输出格式要求。

修复方案

对你的代码做两处修改即可通过所有测试点:

  • 读取order时去除空白字符:order = input().strip();
  • 输出时用join保证格式正确,例如把print(l[0],l[1],l[2])改为print(" ".join(map(str, [l[0], l[1], l[2]])))。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 10:04:58