Python零基础快速入门趣味教程003-循环

在前面的教程中,瓦力博士留了一道练习题给大家—-画正方形,相信聪明的你应该已经画出来了。


下面是瓦力博士实现的代码。 是不是跟你的代码很像呢?

1
2
3
4
5
6
7
8
9
10
11
12

import turtle

turtle.forward(200)
turtle.left(90)
turtle.forward(200)
turtle.left(90)
turtle.forward(200)
turtle.left(90)
turtle.forward(200)
turtle.left(90)
turtle.exitonclick()

虽然这段代码可以成功绘制出一个正方形,但它还有些不足的地方。仔细观察,我们发现,有许多代码是重复的:第 3, 4 行的代码重复了 4 次。在编程的时候,我们要尽量避免重复的代码。遇到需要重复执行的语句,我们应当使用循环来实现。

下面是瓦力博士用循环重新实现的画正方形的功能。怎么样,代码是不是简洁许多了呢?但是好像看不太懂了?

1
2
3
4
5
6
import turtle

for i in range(4):
turtle.forward(200)
turtle.left(90)
turtle.exitonclick()

第 3, 4, 5 行就是一个循环,用于执行重复的语句。

其中,第 4, 5 行的代码和原来的版本”几乎”是一样的,它们是需要重复执行的语句,我们称之为循环体。不过,一定要注意的是,同原来的版本相比,第 4, 5 行的代码不是顶格写的,而是向右缩进了一些(所以是“几乎”一样,而不是完全相同),Python 正是根据缩进来推断哪些语句属于循环体。通常我们使用连续的 4 个空格符来表示一级的缩进。

第 3 行的代码是一个 for 循环。它的作用是重复执行循环体中的语句。可是要重复执行多少次呢?答案是 4 次。为什么?我们先来看 range 函数,range(n) 相当于产生一个从 0 到 n-1 的等差数列, 即 0, 1, 2…, n-1,总共 n 个数字。所以,这里的 range(4) 相当于数列 0, 1, 2, 3,总共是 4 个数字。 for i in range(4): 的意思就是每次循环从数列中取出 1 个数字,赋值给变量 i,直至取完数列中所有的数字,即

第 1 次循环的时候,i = 0
第 2 次循环的时候,i = 1
第 3 次循环的时候,i = 2
第 4 次循环的时候,i = 3
然后呢?然后循环就结束了,因为 range(4) 对应的数列只有 0, 1, 2, 3 这 4 个数字。这 4 个数字通过 4 次循环已经全部取完了。没数字可取了,所以循环也就结束了。因此,第 3 行的代码 for i in range(4): 将执行 4 次循环体(第 4, 5 行的代码)

最后,瓦力博士给大家展示一个更高级一点的例子—-嵌套循环,即循环体里面还有循环!

1
2
3
4
5
6
7
import turtle
for i in range(16):
turtle.left(22.5)
for j in range(4):
turtle.forward(200)
turtle.left(90)
turtle.exitonclick()

练习

先不要运行代码,尝试分析一下,上面这段代码会绘制出什么样的图案?
让代码跑起来,看看你的分析是否正确。