作者:老齐
在上一篇中,绘制了一个正方形,但是,其中要不断重复某些语句。幸亏是正方形,如果是更多边的图形,重复就更多了。在Python语言中,为了让重复的事情做起来不那么烦人,就设计了一种名字为for循环的循环语句。注意,for循环,只是循环语句中的一种。
下面我们就来看看for循环如何实现。
还是要打开IDLE,新建文件,并命名为for_loop.py
。然后输入下面的代码:
for i in range(2):
print("hello")
这里使用了range()
函数,它是一个内置函数,通过变量i
可以依次得到这个函数执行之后返回对象中所包含的东西。那么,这个函数返回了什么呢?它的返回对象中包含了两个整数,0和1。也就是说range(2)
中以2为参数,得到了0-2的整数,但是不包含2。如果是range(10)
,这个函数返回值中就包含了0-10但不包含10的整数,即:0、1、2、3、4、5、6、7、8、9。
在上面的代码中,就意味着变量i
可以先等于0,然后等于1,也就是要执行2次。
第一行,用for
开始的,就是for循环。注意观察,这句以冒号结束。
然后空四个空格,再写语句print('hello')
。这个语句就是循环的内容。前面已经说了,i
先是0,然后就执行print('hello')
;而后i
又是1,再次执行这句。这就是所谓循环。
执行这个文件(注意:先保存,再按F5
执行),会打印出下面的结果。
hello
hello
range(2)
就重复了2次,你可以尝试其他数值,比如rang(10)
是不是重复10次?自己试试。
把i
的值打印出来,看看是不是跟上面分析一样?把文件中的代码修改为:
for i in range(10):
print(i)
输出结果是:
0
1
2
3
4
5
6
7
8
9
现在回到正方形的绘制,让我们来使用刚刚学会的循环语句实现。打开myturtle.py
文件,输入一下代码:
from turtle import *
shape("turtle")
for i in range(4):
forward(100)
right(90)
正方形,一共4条边,重复4次,所以使用range(4)
。每次循环,都执行向前走100个像素,这是画出了边的长度;然后right(90)
,即向右转90度,为下次绘制边长做好准备。
保存文件,然后执行,得到一个正方形。此处不显示结果了。
如果,要绘制正6边形,应该怎么写这个程序?
首先,正六变形一共有6条边,那么就是循环6次,即range(6)
。
然后分析一下,每条边画完之后,海龟应该转多少度?向什么方向转?
上面画了一个正六边形,假设现在海龟在D点了,如果要绘制DC这条边,就要向右转60°,也就是正多边形的外角度数。
理解了上面的道理,就可以修改myturtle.py
文件,代码如下:
from turtle import *
shape("turtle")
for i in range(6):
forward(100)
right(60)
最后得到如下输出结果:
如果理解了上面的程序,再研究一下,正八边形怎么画?