groceries = ["banana", "orange", "apple"]
stock = { "banana": 6,
"apple": 0,
"orange": 32,
"pear": 15
}
prices = { "banana": 4,
"apple": 2,
"orange": 1.5,
"pear": 3
}
# Write your code below!
def compute_bill(food):
total = 0
for item in food:
total = total + prices[item]
return total
为什么我使用上面的代码得到错误的结果,并使用以下代码更正结果:
# Write your code below!
def compute_bill(food):
total = 0
for item in food:
total = total + prices[item]
return total
缩进差异是导致差异的原因吗?
答案 0 :(得分:3)
来自docs:
在逻辑开头引出空格(空格和制表符) line用于计算行的缩进级别 turn用于确定语句的分组。
因此,缩进在Python中很重要。
代码1:
def compute_bill(food):
total = 0
for item in food:
total = total + prices[item]
return total
由于return
语句在for
循环内,它实际上只在一次迭代后从函数返回。
事实上,上述代码相当于:
def compute_bill(food):
total = 0 # Consider food[0] is the first key.
total = total + prices[food[0]] # just fetch the price of first item in food
return total # add it to total and return total
代码2:
def compute_bill(food):
total = 0
for item in food:
total = total + prices[item]
return total
这里return
语句不在for-loop块中,所以你的函数将首先迭代整个food iterable,一旦迭代结束total
就返回。
答案 1 :(得分:2)
是的,这是缩进。 return
语句在第一次迭代中执行。
def compute_bill(food):
total = 0
for item in food:
total = total + prices[item]
return total
在此代码中,您迭代所有值并对它们求和,然后返回变量total
。
然而,在此
def compute_bill(food):
total = 0
for item in food:
total = total + prices[item]
return total
您只将第一个项目添加到total
并返回它,这不是所有值的总和。
答案 2 :(得分:0)
for item in food:
total = total + prices[item]
return total
在for循环的第一次迭代中返回总变量,而在:
for item in food:
total = total + prices[item]
return total
在
答案 3 :(得分:0)
是的Python缩进确实很有价值!
这是新python程序员常犯的错误。
第一个put返回循环,因此在第一个循环中返回然后返回并立即终止循环。
第二个put返回循环外部,所以只有在for循环结束并且成本总和计算完成后才返回一次。
与C ++或JAVA不同,缩进确实在Python中有很大的不同。