2014-12-07 80 views
-3

這兩個代碼有什麼區別?第一個作品,但第二個不...這兩個代碼有什麼不同?

total=sum(prices[k]*stock[k] for k in prices) 

for k in prices: 
     total=sum(prices[k]*stock[k]) 
+0

你從哪裏得到'key'? – 2014-12-07 23:16:57

回答

5

第二個示例是在循環的每次迭代中重新創建總數。相反,你必須使用這樣的事情:

total = 0 
for k in prices: 
    total+=prices[k]*stock[k] 

這將設置total零開始,並通過量prices[k]*stock[k]增加總每次迭代。

+0

我很抱歉,剛開始學習python昨天。實際上,我在練習中將其設置爲零,但爲什麼有必要將這個+而不是將它加起來呢? – 2014-12-07 23:27:09

+0

@RubemCarvalho:在你的第二個例子中,'sum'沒有提供任何有用的用途。例如,如果你正在迭代'k = 5',你的代碼將計算'prices [5] * stock [5]'的值。比方說,這個價值竟然是'100'。然後代碼將這個參數的'sum'傳遞給它,在這種情況下,它看起來像'sum(100)'。當然,100的總和爲100.然後將該值分配給「total」,它將替換上一次迭代中的總數。而不是替換總數,使用'+ ='將它添加到現有的總數。 – grovesNL 2014-12-07 23:34:18

+0

哦,我明白了。起初我認爲它會完成這項工作。非常感謝你! – 2014-12-07 23:38:59