2016-08-22 12 views
-4

誰かがこのコードが6しか印刷しない理由を説明できますか?すべての:)return文とprint文の比較?

def func(x): 
    result = 0 
    for i in range(x): 
     result = result + i 
    return result 

print(func(4)) 
+0

それはそれがするべきことなので。関数の戻り値を出力しています。範囲は排他的なので、1 + 2 + 3 = 6 – Li357

+0

'print(func(1))'を試してください。 – Zety

答えて

0

まず、あなたのコードは、問題の権利をフォーマットされていないと私は原因(私は修正にそれを賭ける)保留中の編集にそれを編集することはできませんから、私は仮定するつもりですあなたのコードは次のようになっています:

def func(x): 
    result = 0 
    for i in range(x): 
     result = result + i 
    return result 

print(func(4)) 

段階的に分解してください。あなたのプリントはfuncに電話をかけ、番号4を与えてから何が出てくるかを印刷します。したがって、制御はfuncにジャンプし、そこで処理を開始します。番号はxです。結果を0に初期化し、ループを入力します。 for i in range(x)は数字[0, 1, 2, 3](実際にはリストではありませんが、この簡単な説明のためにこの方法で扱うことができます)のリストを取得します。そのリスト内の各番号iに対して、現在の値resultにそれを追加します。だから、resultは、これらのステップを経る:

result = 0 + 0 
result = 0 + 1 
result = 1 + 2 
result = 3 + 3 

resultの最終値が返され、印刷され、6です。それはあなたの6が来るところです。 func(5)に電話をかけた場合、同じ手順を経るため同じ計算に4が追加されるため、10が得られます。この機能は、0から少なくともx - 1までの数値を加算します(少なくとも正の整数入力の場合)。

+0

ああ、私は理解しています。私はちょうど最後のものではなくすべての結果を返すと仮定しました。だから、私は見たいと思った。 0 1 3 6。 – Prince