结果没有打印,为什么`return`在`return`之后被忽略了?

时间:2017-05-02 18:12:39

标签: python printing

我正在使用CodeAcademy中的初学者Python课程。这是其中一个练习的一部分,你在杂货店“退房”,但我想要代码打印最终的账单/“总计”,而不是只返回“总计”。我不明白为什么不打印。在迭代之后,我已经尝试将它放在最后,并且,就像在这里一样,在递归中查看它是否会在每个步骤之后打印。当我运行此代码时,没有任何显示。

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
    return total
    print total
compute_bill(food)

谢谢 - 所以我现在明白在return total之后一切都被忽略了 - 一个更好的问题可能是为什么会这样? 是否存在以这种方式在print total之后包含return total并且希望两者都发生的情况?

1 个答案:

答案 0 :(得分:1)

我喜欢你的方法,因为它结构合理,程序流程清晰。但是,您没有用于调用函数的正确语法。使用您当前的布局,您需要这样做:

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 # Not needed as it is used as input parameter

def compute_bill(food):
    global stock # Not strictly needed, see below.
    total = 0
    for item in food:
        if stock[item]>0:
            total += prices[item]
            stock[item] -=1
    return total

print compute_bill(shopping_list) # Calling function and printing result

将来可能会咬你的另一件事是,通常不可能更新函数中的全局变量stock,因为对于大多数变量,它只是一个可用于函数的副本,该副本不可写,如果它不在输入参数列表中 - 除非使用关键字global。但是,对于词典(以及列表和其他集合),不需要global关键字。