Python逐行输入整数取反输出程序的格式问题修复咨询
问题分析
原有代码存在两处核心问题:
- 循环结束后多余的
print(-n, end=" ")语句属于冗余逻辑:此时n是空字符串,无法转为整数,会直接抛出ValueError异常。 - 直接在循环内用
end=" "输出会导致最终结果末尾多出多余的空格,和预期输出格式不符。
修正后代码
两种实现方案可选:
方案1:先收集所有结果再统一输出(更稳妥,无格式问题)
res = [] while True: n = input() if n == "": break res.append(str(-int(n))) print(' '.join(res))
方案2:兼容原有循环逻辑,修正冗余代码和空格问题
n = input() first = True while n != "": num = -int(n) if first: print(num, end="") first = False else: print(f" {num}", end="") n = input() print()
方案说明
- 方案1的逻辑更简洁易维护:先把所有取反后的结果转为字符串存入列表,最后用
' '.join()方法拼接,天然就不会产生末尾多余空格,也不会有异常问题。 - 方案2完全沿用了原有代码的循环结构,仅通过首元素标记控制空格的输出,避免末尾多余空格,同时删除了会导致报错的冗余print语句。
两种方案针对示例输入5、0、-11、2的输出均为-5 0 11 -2,完全符合预期要求。
内容的提问来源于stack exchange,提问作者Merjema Murtić
相关产品推荐
相关产品推荐

