-1

私は Python を学習しており、3.3 バージョンを使用しています。

理解できない「返品」の問題を発見しました。

ケース 1. OK ケース、"return" が期待どおりの値を返す場合。

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))

実行時:

入力値: a は 15 、b は 0

15

15

ケース 2. 「print」は値を出力するが、「return」が「None」を返す場合の問題ケース。

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))

実行時:

入力値: a は 0 、b は 15

入力値: a は 15 、b は 0

15

なし

2 つのケースの違いは、2 番目の「elif」ブランチが実行されると、値が切り替えられ、切り替えられた値で関数が再度呼び出されることです。しかし、2 番目のケースでは戻り値は「なし」です。2 番目のケースで "a" 値を返さないのはなぜですか?

4

1 に答える 1

3

2 番目の if ステートメントの switch の前に return ステートメントを追加します。

return switch(b,a)

switch メソッドは a を返しますが、return ステートメントswitchがないということは、ステートメントによって返される値が返されないため、デフォルトNoneが返されることを意味します。

于 2013-01-09T02:06:09.640 に答える