Python 为什么可以';我不能从函数中打印结果吗?
我正在CodeAcademy学习初级Python课程。这是其中一个练习的一部分,您正在一家杂货店“结账”,但我想修改代码以打印最终账单/“总计”,而不仅仅是返回“总计”。我不明白为什么不打印。我试着把它放在迭代之后的末尾,和这里一样,放在递归中(在返回总数之前),看看它是否会在每个步骤之后打印出来。当我运行此代码时,不会显示任何内容Python 为什么可以';我不能从函数中打印结果吗?,python,function,printing,Python,Function,Printing,我正在CodeAcademy学习初级Python课程。这是其中一个练习的一部分,您正在一家杂货店“结账”,但我想修改代码以打印最终账单/“总计”,而不仅仅是返回“总计”。我不明白为什么不打印。我试着把它放在迭代之后的末尾,和这里一样,放在递归中(在返回总数之前),看看它是否会在每个步骤之后打印出来。当我运行此代码时,不会显示任何内容 shopping_list = ["banana", "orange", "apple"] stock = { "banana": 6, "app
shopping_list = ["banana", "orange", "apple"]
stock = {
"banana": 6,
"apple": 0,
"orange": 32,
"pear": 15
}
prices = {
"banana": 4,
"apple": 2,
"orange": 1.5,
"pear": 3
}
food = shopping_list
def compute_bill(food):
total = 0
for item in food:
if stock[item]>0:
total += prices[item]
stock[item] -=1
print total
return total
编辑:
这些也没有给我一个读数:
def compute_bill(food):
total = 0
for item in food:
if stock[item]>0:
total += prices[item]
stock[item] -=1
print "Total is $",total #tried 0-5 indentations, same blank result
然而
返回
Total is $ 5.5
5.5
虽然-我确实找到了解决办法
def compute_bill(food):
total = 0
for item in food:
if stock[item]>0:
total += prices[item]
stock[item] -=1
return total
print "Total is $",compute_bill(food)
返回
总共是5.5美元
…但我不明白为什么我不能直接打印变量total,它应该已经更新了。为什么它在那里工作,但不是函数中的提要。这只是一个练习中的问题,但我很难弄清楚它为什么会这样做。在您的第一个示例中
shopping_list = ["banana", "orange", "apple"]
stock = {
"banana": 6,
"apple": 0,
"orange": 32,
"pear": 15
}
prices = {
"banana": 4,
"apple": 2,
"orange": 1.5,
"pear": 3
}
food = shopping_list
def compute_bill(food):
total = 0
for item in food:
if stock[item]>0:
total += prices[item]
stock[item] -=1
print total
return total
您可以定义一个函数
def compute\u bill
。你永远不会调用那个函数。函数在调用时执行,例如,在第一个示例中,compute\u bill([“banana”])
shopping_list = ["banana", "orange", "apple"]
stock = {
"banana": 6,
"apple": 0,
"orange": 32,
"pear": 15
}
prices = {
"banana": 4,
"apple": 2,
"orange": 1.5,
"pear": 3
}
food = shopping_list
def compute_bill(food):
total = 0
for item in food:
if stock[item]>0:
total += prices[item]
stock[item] -=1
print total
return total
您可以定义一个函数
def compute\u bill
。你永远不会调用那个函数。函数在被调用时执行,例如,compute\u bill([“banana”])
我不确定我是否完全理解这个问题,但是你说
但是我不明白为什么我不能直接打印变量total,它应该已经更新了
如果您试图从函数外部打印total
,它将不起作用,因为total
变量仅在函数内部声明。当您返回总计时
允许代码的其余部分从函数外部获取数据,这就是为什么打印计算机票据(食品)
可以工作的原因
编辑,如果您想在每次迭代时打印总数,您的代码:
def compute_bill(food):
total = 0
for item in food:
if stock[item]>0:
total += prices[item]
stock[item] -=1
print "Total is $",total
当然应该有这个缩进,这意味着每次在
for
循环中迭代时都要打印(如果保持原样,它只会在for
之后打印) 我不太清楚这个问题,但你说
但是我不明白为什么我不能直接打印变量total,它应该已经更新了
如果您试图从函数外部打印total
,它将不起作用,因为total
变量仅在函数内部声明。当您返回总计时
允许代码的其余部分从函数外部获取数据,这就是为什么打印计算机票据(食品)
可以工作的原因
编辑,如果您想在每次迭代时打印总数,您的代码:
def compute_bill(food):
total = 0
for item in food:
if stock[item]>0:
total += prices[item]
stock[item] -=1
print "Total is $",total
当然应该有这个缩进,这意味着每次在
for
循环中迭代时都要打印(如果保持原样,它只会在for
之后打印) print语句是函数compute\u bill(..)的一部分,除非调用函数compute\u bill(..),否则它不会执行
print语句是函数compute_bill(..)的一部分,除非调用函数compute_bill(..),否则不会执行它
谢谢你!教程中没有明确说明这一点,因为它们似乎让我们在不调用函数的情况下创建函数。谢谢!教程中没有明确说明这一点,因为它们似乎让我们在不调用函数的情况下创建函数。