Python自定义两参数交换值函数运行结果不符合预期求助
问题排查及修正
核心问题点
- 错误1:函数返回值错误。你在函数内部交换的是局部形参
n1、n2,但最终return的是未做任何修改的全局变量num1、num2,相当于交换逻辑没有作用到返回结果上。 - 错误2:调用函数时没有接收返回值。Python中整数属于不可变类型,函数内对形参的修改不会直接影响外部的实参变量,你需要把函数返回的交换后的值重新赋值给外部的
num1、num2才能生效。
修正后可运行代码
num1 = int(input('put the number 1 : ')) num2 = int(input('put the number 2 : ')) def permitation(n1,n2): nn1 = n1 n1 = n2 n2 = nn1 # 返回交换后的局部变量而非全局变量 return n1, n2 # 接收函数返回值,重新赋值给全局变量 num1, num2 = permitation(num1,num2) print('num1 : {}'.format(num1)) print('num2 : {}'.format(num2))
扩展优化
你也可以用Python特有的语法糖直接完成变量交换,不需要定义临时变量nn1,交换逻辑可以简化为:
def permitation(n1,n2): return n2, n1
运行后即可得到你期望的输出结果。
内容的提问来源于stack exchange,提问作者user16723757
相关产品推荐
相关产品推荐

