Python控制台输出差异疑问:第二段代码为何未输出累计总值?
为什么第二段Python代码最终输出total为0而非累计总值?
先看两段代码的差异及输出:
第一段代码(正确累计)
编辑器代码:
prices = {"banana": 4,"apple": 2,"orange": 1.5,"pear": 3} stock = {"banana": 6, "apple": 0, "orange": 32, "pear": 15} total = 0 for food in prices: print prices[food] * stock[food] total = total + prices[food] * stock[food] print total
控制台输出:
48.0 45 24 0 117.0
第二段代码(出现问题)
编辑器代码:
prices = {"banana": 4,"apple": 2,"orange": 1.5,"pear": 3} stock = {"banana": 6, "apple": 0, "orange": 32, "pear": 15} total = 0 for food in prices: total = prices[food] * stock[food] print total total = total + prices[food] * stock[food] print total
控制台输出:
48.0 45 24 0 0
问题根源
第二段代码的循环逻辑完全错误:
- 每次循环开头,你直接把
total赋值为当前食物的单价×库存,这一步直接覆盖了之前的累计值 - 后续的
total = total + 单价×库存只是把当前食物的总价翻倍,并没有累计之前的总和 - 最后一次循环处理的是
apple,它的单价×库存为0,循环结束后total就被留在了0这个值,最终打印自然是0
而第一段代码是把当前食物的总价累加到total上,不会覆盖之前的累计值,因此能得到正确的总和。
内容的提问来源于stack exchange,提问作者ablankminute
相关产品推荐
相关产品推荐

