-3

是什么food?是局部变量吗?一个全局变量一个列表?为什么我可以使用它?是清单吗?有人可以解释一下为什么for ... in会这样吗?

shopping_list = ["banana", "orange", "apple"]

stock = { "banana": 6,
    "apple": 0,
    "orange": 32,
    "pear": 15
}

prices = { "banana": 4,
    "apple": 2,
    "orange": 1.5,
    "pear": 3
}


def compute_bill(food):
    total = 0
    for item in food:
        if stock[item] > 0:
            stock[item] -= 1
            total += prices[item]
    else:
            pass
    return total
print compute_bill(food)
4

2 回答 2

5

food是您传递给compute_bill函数的参数。但是当你这样做时:

print compute_bill(food)

它试图找到一个名为 的全局变量food。这不存在。我想你正在寻找shopping_list.

compute_bill函数内部,food是一个局部变量。您不能在变量之外访问它(除非您将其全球化)。

如果您传递shopping_listcompute_bill,那么food将是该列表。然后,您只需使用 for 循环遍历列表。

于 2013-09-22T00:37:05.133 回答
0

我强烈建议在询问有关 Python 的问题之前学习 Python 的基础知识。

在这种情况下,食物就是所谓的参数。参数有点像一个占位符,它被传递到一个函数中,这样您就可以在不知道您正在执行操作的确切内容的情况下执行操作。让我们看一个例子:

创建一个将两个数字相加并返回结果的函数。

问题:你不知道这两个数字的值。

这就是参数非常有用的地方。参数基本上是您使用函数定义的变量。因此,我们可以像普通变量一样命名它们,并将它们放在()函数的括号内。

我们将第一个参数命名为number1

我们将第二个参数命名为number2

让我们看一下它的样子:

def add_nums(number1,number2):

    return number1 + number2

如您所见,我们在add_nums函数内部传递了两个参数,并返回了将两者相加的结果。

现在我们有了函数,我们可以决定这两个数字应该是什么。假设number1等于 3 和number2等于 5。我们现在可以将这些称为参数的值插入到函数调用中:

add_nums(3,5)

将返回 3 (number1) 和 5 (number2) 的总和,等于 8。如您所见,当计算机阅读代码时,它接受了两个参数 3 和 5,并将它们替换为您的函数中的number1and 。number2请记住,该函数仅返回结果。如果您想查看结果,请使用:

print add_nums(3,5)

8 将被打印到控制台。至于你问的 for 循环,很明显你需要一些好的教程来通读。这是我学习 Python 的路线:

  1. 通读文档的基础知识。

    没有什么比通读 Python 的官方语法更有帮助了。您将获得 Python 语言的一些重要知识,并学习掌握必要的基本格式。我从“满足你的胃口”开始,然后通读到“4.5 pass statements”。尝试尽可能多地理解,但如果您没有得到所有内容,请不要担心 - 这就是下一部分的内容:

  2. 找到一个好的实践教程

    最好的学习方法是经验。但是当你刚刚开始时,你需要一些帮助来磨练你的技能并真正了解它是如何工作的。Codecademy 是一个很棒的教程,它教你开始编写基础到中级程序所需的一切。离开 Codecademy 时,你会获得更多你认为自己会得到的知识,并且从那里学习的可能性是无穷无尽的。它确实从基础开始,所以上面的步骤 1 不是必需的,但我仍然建议在进入 Codecademy 之前这样做。

这是我学习 Python 的途径,它对我帮助很大。我仍然认为自己是一个初学者,还有很多东西要学,但是从这些基础开始是成为最好的我的第一步。我希望你和我一样喜欢 Codecademy 和 Python!

资料来源:

http://docs.python.org/2/tutorial/index.html

http://www.codecademy.com/

于 2013-09-22T01:02:17.930 回答