
本文讲解如何将用户输入的整数字符串处理为非负数升序序列,并以空格分隔(末尾带空格)输出,解决默认print(list)格式不符合校验要求的问题。
本文讲解如何将用户输入的整数字符串处理为非负数升序序列,并以空格分隔(末尾带空格)输出,解决默认`print(list)`格式不符合校验要求的问题。
在实际编程练习或自动评测系统中,输出格式往往有严格要求:不能带方括号、逗号、换行符等默认容器表示符号,且需确保每个数字后跟一个空格(包括末尾)。你当前的代码使用 print(inputs) 会输出类似 [2, 4, 10, 12, 39] 的 Python 列表字面量,这显然不满足题目要求。
关键改进在于将整数列表转换为规范字符串。推荐使用 " ".join(...) 方法:它接受一个可迭代对象(如生成器表达式),将每个元素转为字符串后用空格拼接。由于题目明确要求“最后一个数字后也要有空格”,而 join 默认不会在末尾额外添加空格,我们可通过两种方式满足——最简洁的是在 join 结果后显式加一个空格:
numbers = [int(i) for i in input().split()] # 解析输入字符串为整数列表
new_list = [num for num in numbers if num >= 0] # 过滤掉负数(保留0和正数)
inputs = sorted(new_list) # 升序排序
# ✅ 正确输出:空格分隔,末尾带空格
print(" ".join(map(str, inputs)) + " ")
⚠️ 注意事项:
input().split()自动忽略连续空格和首尾空白,因此输入如" 10 4 -5 39 0 "也能被正确解析;- 若输入含非数字字符(如字母、符号),
int(i)会抛出ValueError。如需健壮性,应增加异常处理(例如跳过非法项):numbers = [] for token in input().split(): try: num = int(token) if num >= 0: numbers.append(num) except ValueError: continue # 忽略非数字字符串 print(" ".join(map(str, sorted(numbers))) + " ")- 题目未要求去重,故无需使用
set;若需去重,可在过滤后插入list(set(new_list))再排序。
最终输出完全符合评测系统预期:纯数字+空格分隔+末尾空格,无任何多余符号。










