6. 循环
顺序执行和条件执行仅仅是程序设计三个基本语句块架构方式中的两个。第三个则是循环执行。在上个段落中我假设了一种情况,检查火腿是否烧好,但很明显它并不适用。如果下次检查时火腿仍然没烧好该怎么办?我们怎么知道需要检查多少次?事实上,我们不知道。而且我们也没必要知道。我们可以要求计算机持续检查直到烧好了为止。怎么表达这个?你猜到了--我们使用循环,或者说是重复执行。
python有两种循环类型:while循环和for循环。for循环大概是最简单的。举个例子:- for food in "spam", "eggs", "tomatoes":
- print "I love", food
复制代码 它的意思是:对于列表"spam", "eggs", "tomatoes"中的每个元素,都打印出你喜欢它。循环中的语句块为每个元素执行一次,而且每次执行,当前的元素都被赋给变量food(在这个例子中)。另外一个例子:- for number in range(1, 100):
- print "Hello, world!"
- print "Just", 100 - number, "more to go..."
-
- print "Hello, world"
- print "That was the last one... Phew!"
复制代码 函数range返回给定范围的数字列表(包括第一个数字,不包括最后一个……这个例子中是[1……99])。所以,这样解释它:
循环体为1(包括)到100(不包括)之间的数字每个执行一次。(哪个是循环体以及随后的表达式事实上做什么留下来做为练习。)
但这对我们的烧菜问题并没有实质的帮助。如果我们打算检查火腿一百次,那么这是个很好的解决方案;但是我们不知道这是否够--或者太多了。我们只是希望它在温度达不到(或者,直到它足够热--大致某个状态)的时候持续检查。所以,我们使用while:- # Spam-cooking program
-
- # Fetch the function sleep
- from time import sleep
-
- print "Please start cooking the spam. (I'll be back in 3 minutes.)"
-
- # Wait for 3 minutes (that is, 3*60 seconds)...
- sleep(180)
-
- print "I'm baaack :)"
-
- # How hot is hot enough?
- hot_enough = 50
-
- temperature = input("How hot is the spam?")
- while temperature < hot_enouth:
- print "Not hot enough... Cook it a bit more..."
- sleep(30)
- temperature = input("OK, How hot is it now?")
-
- print "It's hot enough - You're done!"
复制代码 这个例子中的新东西……
1. 有些有用的函数被存储在模块中而且可以被导入。此例中我们从python自带的time模块中导入了函数sleep(它休止给定的多少秒的时间)。(做你自己的模块当然也是可能的……) |