猿问

学习 Python 2 Codeacademy,“超市的一天”

我正在编写一个基本的 python 2 教程,以下代码作为正确答案提供:


total=0


prices = {

  "banana" : 4,

  "apple"  : 2,

  "orange" : 1.5,

  "pear"   : 3,

}

stock = {

  "banana" : 6,

  "apple"  : 0,

  "orange" : 32,

  "pear"   : 15,

}


for fruit in prices:


    print fruit


    print "price: %s" % prices[fruit]


    print "stock: %s" % stock[fruit]


    total =  total + prices[fruit] * stock[fruit]  # pretend this line is bolded


    print total


     #prints sum of total (0) and prices multiplied by stock (117). Equals 117. 


我想知道的是为什么下面的代码替换倒数第二行(在上面的块中加粗)返回零而不是返回 117。


total2 = prices[fruit] * stock[fruit]

print total2 + total


 #should be total2(117) plus total(0). Equals 117

谁能告诉我为什么python逻辑将变量“total”与“total2”区别对待。我怀疑这与以下事实有关:总价格乘以库存之一等于零,而零乘以任何东西都为零。在我看来,我应该能够创建一个全新的变量(total2),其中包含价格 X 股票的结果,然后将其添加到总数中。对于代码中缺少缩进,我深表歉意,似乎无法让代码完全按照格式发布。


慕村225694
浏览 122回答 1
1回答

浮云间

第一个片段和第二个片段之间的区别在于,在第二个片段中,您永远不会将任何内容分配给total,而只会分配给total2。total2 = prices[fruit] * stock[fruit] print total2 + total请注意,当您设置total2为特定值时,您并没有告诉 python 设置total为任何其他值。打印 和 的总和total不会total2改变其中任何一个的值。因此,您只需要正确添加total2到total,并将结果实际放入total而不是打印它:total = total + total2
随时随地看视频慕课网APP

相关分类

Python
我要回答