哈罗,各位家长朋友们!前两节课我们带孩子摸透了 while 循环的基本玩法,什么计数器啊、紧急刹车 break 啊,孩子们逻辑上是听懂了,但总觉得天天和数字打交道有点枯燥。
实不相瞒,今天推文里的这几个黑科技小案例,是我昨晚陪娃在电脑前足足折腾了两个小时的成果。我们把之前学到的循环知识,跟之前玩过的小海龟画笔(Turtle)结合在了一起。当看到屏幕上刷刷刷闪现出炫彩螺旋线和孩子自己的名字风车时,小家伙眼睛都直了,连连惊呼:“爸爸/妈妈,原来代码能画出这么酷的东西!”
如果你也想让孩子炫一把,赶紧把今晚这份“海龟大变身”的代码复制去带娃试一把,保准成就感直接拉满!
召唤术一:只要你敢输,海龟就敢画的“万能多边形”
以前我们教孩子画正方形,得老老实实写 4 遍前进、4 遍转弯。那要是想画一个正十边形、正一百边形呢?难道代码要写几百行吗?
这时候把 while 循环往上一套,电脑的威力就出来了。而且,这里面还藏着一个超级经典的数学小常识:任何多边形的外角和都是 360 度!所以,想画正几边形,每次转弯的角度就是 360 / 边数。
快让孩子敲下这段魔法代码:
import turtleturtle.color('blue')n = int(input('你想画正几边形?请输入边数:')) # 让孩子输入一个数字i = 0while i < n: # 当数数没达到输入的边数时,就一直画turtle.forward(100) turtle.left(360 / n) # 无论多少边形,用360除以边数就是每次要转的角度!i += 1 # 计数器加1turtle.done()陪娃小互动:
运行后让孩子试着输入 5(正五边形)、8(正八边形),甚至输入 36。你会发现,当输入的数字足够大时,小海龟竟然活生生画出了一个圆!孩子在这个过程中,瞬间就能理解数学里“正多边形无限趋近于圆”的奇妙概念。召唤术二:自带 3D 视觉错觉的“魔幻立体沙漏”
掌握了固定步长的画法,我们带孩子再玩一个好玩的:如果每次循环的时候,让海龟爬行的距离偷偷发生变化,会发生什么?
我们再引入一个小小的数学余数判断(i % 2 == 0),让它走一步换一个颜色:
import turtleturtle.speed(100) # 把海龟速度调到最快,开始炫技!i = 0while i < 200: turtle.forward(200 - i) # 关键点:每一圈走的路,都比上一圈缩短一点点!turtle.left(90)# 奇数步和偶数步用不同的颜色,制造渐变错觉if i % 2 == 0: turtle.pencolor('white') # 甚至可以把背景设成黑的,用白色和粉色交替else: turtle.pencolor('pink') i += 1turtle.done()这段代码跑起来之后,屏幕上会凭空出现一个深邃的、自带立体感的几何沙漏图案。娃在旁边看呆了,直问我是不是加了什么特效。其实,不过是“距离递减”+“颜色交替”的数学小把戏而已!
召唤术三:酷炫到能直接拿来当壁纸的“极光黑夜螺旋”
接下来这个,是我昨晚发朋友圈的素材,科技感直接拉满。 我们把舞台背景抹成神秘的纯黑(black),然后让小海龟开启无限循环模式(while True:)。
最绝的是:我们不转整整 60 度,而是转 60.5 度!就因为这小小的 0.5 度偏差,线条每一圈都会微微错开,最后编织出一幅极光般璀璨的螺旋网!
turtle.speed(100)turtle.pensize(2)turtle.bgcolor("black") # 背景刷成高级黑x = 0while True: # 开启无限大招turtle.forward(x / 6 + x) # 步长随着循环越来越大,螺旋往外扩散# 用余数分配6种不同颜色,让极光更丰富if x % 6 == 1 or x % 6 == 5: turtle.color('purple')elif x % 6 == 2 or x % 6 == 4: turtle.color('yellow')elif x % 6 == 3: turtle.color('red')else: turtle.color('blue') turtle.left(60.5) # 就是这小小的0.5度,创造了密密麻麻的错开美感!x += 1压轴大戏:今天的重头戏——专属“姓名风车”!
玩到最后,孩子问我:“爸爸/妈妈,能不能让海龟画我的名字啊?” 能!当然能!安排!
我们用到一个全新的好玩命令叫 turtle.textinput(),它能在电脑屏幕上弹出一个精美的小输入框,像玩游戏建号一样,让孩子亲手把自己的名字打进去。接着,海龟每走到一个地方,不用笔画线,而是直接把名字写在画布上!
import turtleimport turtleturtle.speed(100)turtle.bgcolor("cyan") # 设置个好看的青色背景# 弹出一个高科技小框,让孩子输入自己的名字my_name = turtle.textinput("姓名大作战", "请输入你的名字:")x = 0while x < 60:# 轮流换颜色,风车就是要五彩斑斓if x % 4 == 0: turtle.pencolor('red')elif x % 4 == 1: turtle.pencolor('orange')elif x % 4 == 2: turtle.pencolor('green')else: turtle.pencolor('blue') turtle.penup() # 抬起画笔,咱们不画线条,咱们写字turtle.forward(x * 4) # 每圈往外走得更远一点turtle.pendown() # 放下画笔# 在当前位置写下孩子的名字!字号也会随着往外走变得越来越大哦!turtle.write(my_name, font=("Arial", int((x + 4) / 4), "bold")) turtle.left(92) # 微微偏过直角,形成旋转风车的效果x += 1turtle.done()当程序运行起来,在框里输入孩子名字的那一刻,海龟就会在屏幕上像转动的风车一样,把孩子的名字以绚丽多彩、由小到大的形式层层铺开!
昨晚我儿子看到自己的名字变成了“大风车”,兴奋得满屋子跑,还非要拿我手机拍下来发给外公外婆炫耀,别提多自豪了。
💡 今日带娃碎碎念
今天带孩子玩的这一手,在编程里管叫“多模态视觉应用”,其实说白了就是把枯燥的代码逻辑用最直观、最震撼的画面展示出来。