从Scratch到Python 09 分支与循环的应用

这一节我们不讲新的知识,我们通过几个常见的例子,来进一步强化掌握分支和循环的应用。

一、打印1-100之间的所有偶数

先看代码:

for i in range(1, 101):
    if i % 2 == 0:
        print(i, end=',')

这是个特别简单的三行小程序,相信你能够马上看明白。唯一以前没接触过的是print()的end参数。为什么要设置end=','呢?原来,print()函数默认每次调用都会换行,而我们想把1-100之间的偶数写在一行上,中间用逗号分开,就加上了这个参数。记住,这个参数在有的场景下很好用,你马上会用到它。

二、打印九九乘法表

 

img

 

估计你早已经会背上面的九九乘法表了,如果让你写程序来输出这个乘法表,你将如何解决呢?

让我们来看看,首先,这个乘法表有九行,每行的乘数依次加一,要打印这九行数据,我们至少要循环九次吧?每一行的数据呢?实际上是从一到当前行的乘数变换的,循环的次数是第一行一次,第二行两次,第三行三次……也就是要循环乘数次。所以,我们可以用变量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()

这里面有点陌生的函数,我都加了注释,其实就是通过循环、旋转、画圆弧作为花瓣,形成了这么美妙的图案:

 

画一朵花

 

五、总结

循环、分支正是计算机的令人着迷的地方,只要你深入掌握它们,你就掌握了一把打开编程宝藏的金钥匙。但是,逻辑复杂的分支与循环结构也是容易出错的,这就需要你勤加练习了。

今天没有作业,请你把示例完成,并尝试修改参数,运行得到不同的结果。

给TA赞助
共{{data.count}}人
人已赞助
综合资讯

从Scratch到Python 08 分支与循环

2023-6-3 9:36:46

综合资讯

九宫格游戏-第14届蓝桥杯省赛Scratch初级组真题第5题

2023-6-3 9:43:34

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索