2016-08-22 205 views
-4

有人可以解釋爲什麼這個代碼只打印6? :)返回語句與打印語句?

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並開始在那裏處理,編號爲4的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),你會得到10,因爲它經歷了相同的步驟,但增加了4個相同的計算。該功能的作用是將0中的數字加到x - 1(至少對於正整數輸入)。

+0

哦,我明白了。我只是假定它會返回所有結果,而不僅僅是最後一個。所以,我期望看到: 0 1 3 6。 – Prince