2014-12-07 85 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