
本文介绍如何将用户输入的整数字符串处理为仅含非负数的升序序列,并以空格连接输出(末尾带空格),解决自动评测系统对输出格式的严格要求。
本文介绍如何将用户输入的整数字符串处理为仅含非负数的升序序列,并以空格连接输出(末尾带空格),解决自动评测系统对输出格式的严格要求。
在实际编程练习或在线判题(如 LeetCode、PTA、Codeforces)中,输出格式的细微差异(例如末尾多余空格、方括号、逗号)常导致“答案错误”。你当前的代码使用 print(inputs) 会输出 Python 默认的列表格式 "[2, 4, 10, 12, 39]",既包含方括号和逗号,又无末尾空格,完全不符合题目要求。
核心问题有三点:
- ✅ 过滤负数(已实现)
- ✅ 升序排序(已实现)
- ❌ 输出需为纯数字空格分隔序列,且末尾必须有一个空格
print(" ".join(...)) 是标准解法,但需注意:" ".join() 生成的是 "2 4 10 12 39"(无尾随空格)。而题目明确要求“space after the last entry”,即末尾必须有空格。因此,正确写法应为:
numbers = [int(i) for i in input().split()] # 解析输入字符串为整数列表
non_negatives = [num for num in numbers if num >= 0] # 保留非负数
sorted_result = sorted(non_negatives) # 升序排序
# 关键:用空格连接所有数字,再额外添加一个空格
print(" ".join(map(str, sorted_result)) + " ")
✅ 示例运行:
输入: 10 4 39 12 2
输出: 2 4 10 12 39(注意末尾空格)
⚠️ 注意事项:
- 若输入全为负数(如
-5 -1 -3),non_negatives将为空列表," ".join([])返回空字符串"",最终输出为" "(单个空格)——这通常符合判题系统对空结果的格式预期;若需特殊处理(如不输出),可加if sorted_result:判断。 -
input().split()自动忽略连续空格和首尾空白,天然健壮,无需额外清洗非数字字符(题目保证输入为整数字符串,故无需try/except)。 - 避免使用
print(*sorted_result),因为它虽能空格分隔,但默认不带末尾空格,且无法直接追加空格(print(*sorted_result, end=" ")会多出换行前空格,行为不可控)。
综上,推荐最终简洁版代码:
nums = sorted(int(x) for x in input().split() if int(x) >= 0)
print(" ".join(map(str, nums)) + " ")
该方案逻辑清晰、符合判题规范,兼顾可读性与鲁棒性。










