+ =如何使我的代码字?

时间:2017-02-12 18:44:24

标签: python

关于Codecademy

    prices = {
    "banana" : 4,
    "apple"  : 2,
    "orange" : 1.5,
    "pear"   : 3,
}

stock = {
    "banana" : 6,
    "apple"  : 0,
    "orange" : 32,
    "pear"   : 15,
}

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

print total

如果我将代码更改为,

total = prices[key] * stock[key]

它没有用。正确的总数不会打印出来。 + = 如何更改我的代码?

2 个答案:

答案 0 :(得分:0)

简短回答:

因为您不仅需要最后一个产品的运行总计。

答案很长:

=运算符只为左侧的变量指定值,+=运算符更新左侧的值通过添加右侧来支持它。

你也可以这样做:

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

甚至没有for - 循环:

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

答案 1 :(得分:-1)

使用+=说“取=, and add it to the right side of the =`的左侧,并为其指定相同的变量名称。”

扩展您的代码:

total += prices[key] * stock[key]

等同于不可变对象:

total = total + prices[key] * stock[key]

编辑:对于高马的人来说,在一个问题与可变对象交互无关的问题中,他们会讨论与可变对象的交互:

编辑上面列出的代码在可变对象(例如listdict)的情况下并不等效,因为+=运算符保留了变量的相同引用左边。同时,与+分开使用=会产生新的列表引用。

例如:

li = []
print(id(li)) 
li += [1]
print(id(li)) # they are the same id

VS

li = []
print(id(li)) 
li = li + [1]
print(id(li)) # they are different ids