任何人都可以帮助理解为什么computeBill
函数中的循环不是迭代的吗?
groceries = ["banana", "orange","apple"]
stock = {"banana": 6, "apple": 0, "orange": 32, "pear": 15}
prices = {"banana": 4, "apple": 2, "orange": 1.5, "pear": 3}
def computeBill(food):
total = 0.0
for item in food:
total += prices[str(item)] + stock[str(item)]
print total
return total
computeBill(groceries)
答案 0 :(得分:6)
你在循环中调用return
因为它当前缩进的位置,所以它会在第一次迭代后执行。可能你想把它移动到外面循环(与for
本身相同的缩进级别),所以在迭代完成后调用它:
def computeBill(food):
total = 0.0
for item in food:
total += prices[str(item)] + stock[str(item)]
print total
return total
答案 1 :(得分:1)
您的return
语句缩进for
语句下方。解决这个问题,你应该没问题。
答案 2 :(得分:1)
您的返回行使用for循环缩进。它将在第一个循环后返回。去缩那条线就可以了。
答案 3 :(得分:1)
您不应在return
循环中使用for
语句,而应使用相同级别。
答案 4 :(得分:0)
要使其工作,您需要将行'return total'放在与for循环相同的级别但不在其中,或者如果您想在每次迭代后打印出总数,则完全省略它。它不是迭代的原因是因为return语句导致函数退出并将值传回给调用者。基本上,你有:
groceries = ["banana", "orange","apple"]
stock = {"banana": 6, "apple": 0, "orange": 32,
"pear": 15 }
prices = {"banana": 4, "apple": 2,
"orange": 1.5, "pear": 3
}
def computeBill(food):
total = 0.0
for item in food:
total += prices[str(item)] + stock[str(item)]
print total
computeBill(groceries)
给出输出:
10.0
43.5
45.5
如果您只想打印出总数,那就是没有return语句。
答案 5 :(得分:0)
只是另一种解决方案。
groceries = ["banana", "orange", "apple"]
stock = {"banana": 6, "apple": 0, "orange": 32, "pear": 15}
prices = {"banana": 4, "apple": 2, "orange": 1.5, "pear": 3}
print(sum(stock[item] * prices[item] for item in groceries))