-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