这一节我们不讲新的知识,我们通过几个常见的例子,来进一步强化掌握分支和循环的应用。
一、打印1-100之间的所有偶数
先看代码:
for i in range(1, 101):
if i % 2 == 0:
print(i, end=',')
这是个特别简单的三行小程序,相信你能够马上看明白。唯一以前没接触过的是print()的end
参数。为什么要设置end=','
呢?原来,print()函数默认每次调用都会换行,而我们想把1-100之间的偶数写在一行上,中间用逗号分开,就加上了这个参数。记住,这个参数在有的场景下很好用,你马上会用到它。
二、打印九九乘法表
估计你早已经会背上面的九九乘法表了,如果让你写程序来输出这个乘法表,你将如何解决呢?
让我们来看看,首先,这个乘法表有九行,每行的乘数依次加一,要打印这九行数据,我们至少要循环九次吧?每一行的数据呢?实际上是从一到当前行的乘数变换的,循环的次数是第一行一次,第二行两次,第三行三次……也就是要循环乘数次。所以,我们可以用变量i来表示乘数,变量j来表示被乘数,外层用i来循环9次,每次执行的时候再循环让j从1到i递增,输出乘数和被乘数的积即可,让我们来试试:
for i in range(1,10):
for j in range(1,i+1):
print('%d*%d=%d'% (j,i,i*j),end=' ')
print()
这里需要注意的是,在内层的for循环结束后,我们加了一个不带参数的print()函数,它起到换行的作用。如果你想不明白为什么要换行,就把这一行代码删除后再运行,就马上清楚了。
在内循环打印的时候,我们使用了以前学习的字符串格式化知识,在字符串里放了三个%d占位符,然后用%符号将(j,i,i*j)中的三个参数替换进去,就得到了相应的乘法运算表达式。
是不是挺简单?也不过四行代码呀?这就是循环的好处了,只要有规律,表面上复杂的东西很可能用简短的代码实现。
三、旋转的多边形
前面我们使用turtle画过简单的图案,现在我们尝试用循环来发挥turtle的强大功能。
import turtle
for i in range(150):
turtle.forward(i)
turtle.left(51.42)
turtle.done()
运行程序,你会发现画出了下面的图案:
这是怎么回事呢?我们涞看看,每次移动步数为i,旋转51.42(即360/7)度,这不是在画正七边形吗?我们以前用Scratch画笔的时候就经常这么画。可是为什么画出了这样的图案呢?秘密就在于我们让i 从0增长到149(不包括150,不理解的同学要复习上一节关于range函数的内容),这样七边形边长会越来越大,形成了一个螺旋状的七边形。
如果把循环里的角度变大一些或变小一些呢?你可以试一下,把left()的角度分别设置成53、50,将分别画出下面的图。总结一下就是,当每次画笔左旋的角度大于正七边形外角时为逆时针旋转,否则为顺时针旋转:
尝试修改度数,你会发现更多有趣的东西!
四、来画一朵花儿
编写下面的代码:
import turtle
turtle.bgcolor('black') # 设置背景色为黑色
turtle.color('orange') # 设置前景色为橙色
for i in range(18):
turtle.setheading(20*i) # 设置小海龟面向的角度,每次增加10度
turtle.circle(-90,90) # 画半径为90像素,弧长90度的圆弧
turtle.right(90)
turtle.circle(-90,90)
turtle.done()
这里面有点陌生的函数,我都加了注释,其实就是通过循环、旋转、画圆弧作为花瓣,形成了这么美妙的图案:
五、总结
循环、分支正是计算机的令人着迷的地方,只要你深入掌握它们,你就掌握了一把打开编程宝藏的金钥匙。但是,逻辑复杂的分支与循环结构也是容易出错的,这就需要你勤加练习了。
今天没有作业,请你把示例完成,并尝试修改参数,运行得到不同的结果。