pythonturtle嵌套循环_给小朋友讲Python循环的一些有趣好玩的例子更有超级实用的穿搭技巧等着你哦!...

一般来说,讲Python中的循环,会从用turtle画正方形开始,或者画花儿开始,那么有没有更加有趣好玩的例子呢?本文讲解了用turtle绘制简单的视错觉图案,并介绍了视错觉在生活中的应用,可以帮你正确的搭配衣服哦。

形状错觉

正方形?还是圆形?注意文中的命令我都使用了缩写,相信教过logo的老师都懂。

以正方形为例

很多情况下,我们会先用8条命令画一个正方形,代码如下:

from turtle import *

fd(100)

rt(90)

fd(100)

rt(90)

fd(100)

rt(90)

fd(100)

rt(90)

然后我们用for循环简化,代码如下:

from turtle import *

speed(0)

for i in range(4):

fd(100)

rt(90)

运行结果

这里存在的问题是,引入for循环,range没有讲,只好笼统的告诉学生,想要循环几次,就在range里写几,照葫芦画瓢。因为这里还没有将变量,所以讲while的话会更麻烦一些。然后就可以将定义函数了,其实函数的定义不一定放到变量、循环判断后面讲,我们把函数看做是命令的集合,就像是刷牙包含很多不同的动作一样,学生照样是可以理解的不是吗?

from turtle import *

speed(0)

def square():

for i in range(4):

fd(100)

rt(90)

接下来就可以用循环调用这个函数了,这样可以避免循环嵌套,代码如下:

正方形的旋转

又或者,在讲for的时候为了不讲函数,绘制正方形可以不用for表示:

from turtle import *

speed(0)

for i in range(12):

fd(100)

rt(90)

fd(100)

rt(90)

fd(100)

rt(90)

fd(100)

rt(90)

rt(30)

用这种方法同样可以绘制出相同的图案,理解并不难,用一正方形的纸作为实物演示都是可以的。

以圆为例子+++++++

告诉学生,turtle模块中有一个circle命令可以以特定的直径画圆,代码如下:

from turtle import *

speed(0)

circle(100)

然后就可以用for循环画圆了:

from turtle import *

speed(0)

for i in range(18):

rt(20)

circle(100)

运行程序,结果如图所示:

比绘制正方形有趣一点。

螺旋正方形

from turtle import *

speed(0)

for i in range(360):

fd(i)

rt(91)

运行程序,结果如下图:

螺旋正方形

当然后面学生学了模运算或者列表,还可以给图形上色,在《教孩子学编程》一书中就是用列表保存不同的颜色,然后绘制不同颜色的螺旋正方形。

修改角度

或者可以修改每次循环右转的角度值,形成不同的图形,比如每次循环右转61°:

旋转61°

旋转21°

旋转21°

这很好玩,然后就没什么了,这里绘制的图形都是用基本图形的平移变换实现的,小学数学已经讲解了这方面的内容,其实合理利用平移变换的思路还可以绘制出弧形,在绘制饼图的时候比较有帮助。

这样绘制出的图形很好看,然后也就没有什么了,螺旋正方形的图形还有点不好跟学生解释的,而且这些旋转形成的图形,很多学生都是见过的,所以,我们来想一些更有趣的例子。

当然除了我们设计的例子,学生完全可以把turtle当做普通的画笔,然后一点点的尝试绘制不规则的图形,比如有人绘制出了玫瑰花:

玫瑰花

视错觉

我们知道,熟练掌握编程后,编程可以是创作和表达的工具,我们看书的时候,也可以用编程验证我们的想法,比如我们在阅读《平面构成》一书的时候就想,我能不能把这里面提到的东东用编程来表达呢,点线面的排列尤其是规则的排列,完全可以用循环表示。

平面构成

里面有很多有趣的视错觉图案是用非常简单的方法画出来的。

形状错觉

形状错觉

文章开头的图就是一个很经典的例子,你扪心自问,是不是非常不像是正方形和圆形呢,然而这时货真价实的正方形和圆形,这个时候冲突产生了,我们就可以带领学生通过编程来验证到是我们看错了,还是图画错了。

这里绘制的程序就很简单了,你看有规律的斜线的绘制,就是从中心点到边界上的点画直线,就不是单纯的运用循环了,当然了,要绘制这样的图形,肯定是以前面的指示单为基础了,通过绘制这个图形,学生能够更深刻的领会,哪些是需要重复的部分,turtle没有line函数,在没有讲goto函数的情况下,我们就用前进命令fd和后退命令bk好了。

我们可以让学生先尝试绘制放射状的直线:

from turtle import *

speed(0)

for i in range(36):

fd(500)

bk(500)

rt(10)

当然了,无论是这里,还是前面,旋转的次数和旋转角度的乘积都刻意的是360°,开Python一般是小学高年级的学生,理解起来并没有困难。

运行程序,结果如下图:

放射线

绘制原理

h

然后,我们就需要在不同的位置绘制正方形和圆形了,这里就可以引入抬笔penup命令和落笔pendown命令了,当然goto命令也是可以引入的,相比如forward和backward加上旋转命令left和right,goto的话,需要引入的新知识点比较多,而不用goto的话,学生需要靠旋转,大家觉得那个更好呢?欢迎大家把自己的想法留言。

绘制正方形

在窗口左侧绘制正方形,代码如下:

from turtle import *

speed(0)

for i in range(36):

fd(500)

bk(500)

rt(10)

pu() # penup的缩写

bk(200)

pd() # pendown的缩写

lt(90)

fd(75)

rt(90)

for i in range(4):

fd(150)

rt(90)

ht() # 隐藏乌龟

运行程序结果如下:

正方形

绘制圆形

然后在右侧画一个圆,要提醒学生注意circle命令绘制圆形并不以所在的位置为圆心的。

from turtle import *

speed(0)

for i in range(36):

fd(500)

bk(500)

rt(10)

pu() # penup的缩写

bk(200)

pd() # pendown的缩写

lt(90)

fd(75)

rt(90)

for i in range(4):

fd(150)

rt(90)

ht() # 隐藏乌龟

pu()

fd(320)

rt(90)

fd(150)

lt(90)

pd()

circle(75)

程序的运行结果如下图:

绘制圆

学生绘制完之后,亲身验证了这种形状错觉,对于形状错觉和for循环的运用,已经pd、fd、rt和lt都有了比较详细的掌握。

注意,在绘制完背景的放射线和正方形,我都用pd、fd、rt和lt调整了乌龟的位置,路线如下图:

绘制

小结

实际上,设计课程的时候,我们可以先确定一个大的主题或者概念,然后再考虑用程序实现,比如这里的视错觉,通过本节课学生既可以掌握for循环的使用,又加深了对于视错觉的理解,并通过动手(编程)实际验证了视错觉。

拓展

其余的好玩的视错觉还有很多,比如:

线条弯曲错觉

这个可以用循环绘制,不过一节课的话,估计要相对比较优秀的学生才可以绘制出来呢。

缪勒-莱伊尔错觉

这个错觉的话,其实不用循环就可以的。

平行错觉

像这种平行错觉也很容易用循环绘制的。

卡搭二维码

茶叶

牙膏

要知道大红也好,红配绿也好,都是很俗的好嘛!

衣服

原理

image.png

image.png

衣服能让你看起来更高?加一个帽子的差别有多大?

image.png

image.png

更多原文请直接看知乎上相关问题,长按二维码就可以访问了:

二维码

如果觉得有帮助可以点可以分享给其他人

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值