
本文详解Python中交换两个用户输入数值的正确方法,重点纠正input(int())误用导致的异常输出问题,并提供可直接运行的完整代码示例。
本文详解python中交换两个用户输入数值的正确方法,重点纠正`input(int())`误用导致的异常输出问题,并提供可直接运行的完整代码示例。
在编写交换两个数值的程序时,一个常见却容易被忽视的错误是混淆了 input() 函数的参数用途。题中代码:
input_val1 = input(int()) input_val2 = input(int())
看似想“读入整数”,实则造成了严重逻辑偏差:int() 无参调用返回整数 0,而 input(prompt) 的参数 prompt 是仅用于显示的提示字符串(类似 input("Enter a number: ")),并非类型转换指令。因此,上述语句实际等价于:
input_val1 = input(0) # 控制台先打印 "0",再等待输入 input_val2 = input(0) # 同样先打印 "0"
这正是输出开头出现 "008 3" 的原因——前两个 0 是 input(0) 自动打印的提示符,随后用户输入 3 和 8,最终传入 swap_values 的实参是字符串 "3" 和 "8"(而非整数),而函数内部交换后返回 ("8", "3"),print(*...) 解包输出为 "8 3",但因前面已打印两个 0,整体显示为 "008 3"。
✅ 正确做法分三步:
- 先用 input() 读取字符串(不带参数);
- 再用 int() 显式转换为整数;
- 确保函数接收和返回整数,逻辑清晰。
修正后的完整代码如下:
def swap_values(user_val1, user_val2):
val1 = user_val2
val2 = user_val1
return val1, val2
if __name__ == '__main__':
# ✅ 正确:先输入字符串,再转整数
input_val1 = int(input())
input_val2 = int(input())
# 输出交换后的两个整数(自动以空格分隔)
print(*swap_values(input_val1, input_val2))
? 注意事项:
- input() 永远返回字符串,类型转换必须显式调用 int()、float() 等;
- input(prompt) 中的 prompt 仅作提示输出,不可用于类型控制;
- 若需健壮性,建议添加 try-except 处理非数字输入(本题未要求,故略);
- 函数 swap_values 本身逻辑正确,无需修改,关键在于调用前的数据准备。
运行此修正版代码,输入 3 回车、8 回车,将精准输出 8 3,彻底消除前置 0 干扰。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











