-1
我正在学习Python并使用3.3版本。Python,为什么参数切换时返回不起作用?
我发现了一个我无法理解的“返回”问题。
案例1. OK的情况下,当“返回”按预期返回值时。
def switch(a,b):
print ("inputed values:", "a is",a, ", b is",b)
if b==0:
print (a)
return a
elif b>a:
switch(b,a)
print(switch(15,0))
当被执行时:
inputed值:a是15,b是0
病例2的问题的情况下,当 “返回” 返回“无”,虽然“打印”打印值。
def switch(a,b):
print ("inputed values:", "a is",a, ", b is",b)
if b==0:
print (a)
return a
elif b>a:
switch(b,a)
print(switch(0,15))
当被执行时:
inputed值:a为0,b为15个
inputed值:a是15,b是0
无
两种情况的区别在于,在第二个“elif”分支被执行时,va lues被切换并且功能被再次调用切换值。但在第二种情况下,回报是“无”。 为什么在第二种情况下它不会返回“a”值?
如果'b!= 0'和'a> = b'''''''''''''''''''''''''''''还应该有一个明确的返回值。 – jfs
谢谢,cobie!你的解决方案确实有效我能否在案例2中要求更多关于我的代码的解释,为什么它不起作用?我以为我正在使用递归,值得通过没有问题。使用'print(“输入值:”,“a是”,a,“,b是”,b)'我可以看到它们确实被正确传递,并且第一个if分支被执行。那么为什么“回报”没有得到正确的价值呢? –
您正在使用递归,但是您没有使用交换机函数返回的值。 switch函数从第一个if语句返回一个值,并且您需要在第二个if语句中返回该值,因此在递归调用之前需要返回该值。想想你的爸爸送你去买些东西,然后你送你的双胞胎兄弟去买它。你的双胞胎兄弟将物品退回给你,但你的工作没有完成。你必须进一步将物品退回给你的父亲 – cobie