7C: 循环

第七节课有三个部分A, B, C,顺序不限。

到目前为止,我们学习了基本的编程指令(比如赋值,打印),通过if语句可以来控制执行哪一个语句。这节课,我们介绍循环(有时也叫做重复迭代):让计算机重复做同一件事(或相似的事)。比如,查看文档中的每一个词可以通过循环实现。在这节课中我们会描述两种Python循环:while循环和for循环。

while循环

一个while语句会一遍又一遍的重复一段代码,只要某些条件是正确的。下面是一个例子:

下面是一般的结构:

  • 第一行是while «条件»:«条件» 是一个判断表达式(输出TrueFalse(Boolean表达式,和if 语句类似)。
  • 之后,我们插入一个缩进块(就像我们在if语句中做得那样),输入我们想重复做的事情。这个叫做主体
  • 当你运行程序时,会重复以下事情:
    • 检查条件;如果条件是正确的(True),那么主体就会运行,运行后回到检查条件;一旦某一次条件是错误的(False),循环就停止了。

所以在上面的例子中,我们会一直循环主体直到timeLeft小于等于0。

编程练习: 向上数
更改上面的例子,得到一个程序,从1数到10,然后打印Blastoff!

使用循环时,经常会使其变成无限循环
示例
无限循环
你会得到错误提示"超过时限",因为CS Circles网站有一个时间限制;1秒之后程序终止。如果你在家里运行一个程序,它会永远地运行下去(直到你强制终止它,通常通过按 Ctrl-C 键来进行此操作)。

for循环

这是Python中的另一种循环,名为for循环。在很多情况下,两种循环(for/while)都可以使用,但是会有一种比另一种更简单,所以最好两种都会使用。for循环更适合进行一个范围里数字的循环(或是任何数据列表,我们会在后面的课程中看到)。

下面是一个for循环的例子。

for 循环在数字中循环的一般结构是

for «变量名称» in range(«起始值startValue», «终止值tailValue»):
  «缩进以及指令,名为“主体”»
通常,主体部分可以有好几行,只要这几行都有同样的缩进幅度。首先,循环的主体是从variableNamestartValue开始运行。然后随着variableName的值变成startValue+1,主体再次运行。接着,变量名称的值变成startValue+2。一直重复,直到variableName变成tailValue-1,之后循环停止。

循环会在tailValue-1停止,而不是tailValue!
示例

下面是一个 for 循环嵌入另一 个 for 循环的例子。

示例
这个代码打印出5×5个1。
注意:当我们将一个数字X乘10再加1,我们基本上是把1加到X的后面。比如,(1867*10)+1=18671.

编程练习: 一个三角型
将上一个程序用两种方式更改。一,把1从正方形改成三角形:◤。二,将输入的值变成行数input().比如,如果输入是3,输出就应该是

111
11
1
点击这里查看提示。 

break)中断语句和(continue)连续语句

中断语句(break)是whilefor循环的紧急出口:中断语句break会导致程序跳出循环,执行循环后的指令。中断语句break示例:读取所有的输入,直到找到输入是"END"

示例
循环所有的输入行

连续语句continue会让程序在目前的一行停止,跳过这次循环,进行下一次循环(下一次“迭代”)。

示例

这是一个结合中断语句break和连续语句continue的示例。你能够猜到输出是什么吗?

练习题

编程练习: 平方普查
平方数是一个整数的平方,比如9是3的平方。编写一个程序,读取输入值,一个整数n,并输出所有小于n的正平方数,每一行一个,从小到大排列。比如,如果输入是16,输出就应该是

1
4
9
提示
你可以在下面的框中输入程序的输入。

编程练习: 跳过
延伸上面的例子(我们已经为你复制了),实现一个新的功能:任何等于SKIP的行都不打印,而且counter都不增加。Run the program to see an example. 提示

编程练习: 找因数
如果a × b = n,我们就把a × b叫做n因式分解。在这个练习中,编写一个程序,输入一个正整数n,输出n所有可能的因式分解;你需要遵循下面的格式(n=10为例)。

1乘10等于10
2乘5等于10
5乘2等于10
10乘1等于10
提示