本文首发于家长之家jiazhanghome.com版权归社区原作者codeboy所有
基本情况:码农,加班多,零星陪娃(几年来累计辅导时间不超过3人/日);娃还在学前,有数学基础,机构跨两级高端班
敲代码还行,码字有点慢,我每天尽量抽时间写一点
觉得有用的朋友,点个赞,鼓励我加快更新速度
佛系学前编程启蒙
为什么说是佛系启蒙?
社区里的早早陪简历,好几个提到编程特长的,孩子已经基本入门,可以自己动手解决问题了。
由于本人时间不多,只是孩子培养兴趣。目前孩子的编程活动还是以简单功能的娱乐为主,要求也是可以照猫画虎,能够稍加改进优化即可。
并没有让孩子未来做码农的打算,是玩编程的思路。适合低龄培养兴趣,顺道带动英语和数学的学习。
第一阶段:3岁左右,免费的scratch软件玩一玩,顺带意外学会了左右,投入时间:半下午
Scratch维基百科
Scratch是麻省理工学院开发的一款简易图形化编程工具。这个软件的开发团队称为“终身幼儿园团队”(Lifelong Kindergarten Group)。几乎所有的孩子都会一眼喜欢上这个软件。建立起做编程的欲望。
建立程序的过程,用到涂鸦,录音,找图片这些有趣的过程。孩子的成品可以通过软件直接发布到官方网站上。官方网站给每个注册用户开通了一个个人空间,放置发布的程序。
用户发布后的程序,在官网可以找到。制作中的程序只能在软件环境下运行,发布后的程序则是在网页内运行的。就是说,孩子们的作品可以通过网络被无数人看到。官方网站具有交友和评论的功能。国内亦有类似官网发布程序后在网页内运行的网站,方便国内爱好者和孩子们对作品进行交流
Scratch的下载是完全免费的。这个开发组织公布源码,允许任意修改,发布,传播。官方网站的教学影片和介绍在离线编辑器上都是英文的,在官网可以找到部分中文资料。
软件是多语言版本,根据操作系统,自动会改成中文界面。在原版中是没有函数调用的。也就是说复杂的功能用重复编写相同的代码。在自由软件开发组织中有人进一步开发了制作自定义积木(函数)的功能。
第二阶段:5岁半,某天在家写码,娃过来捣乱。心血来潮,带娃认识键盘,练打字,投入时间:1hour
第三阶段:某思2升3考试,必须考编程。临时抱佛脚。拿了本大人的python书,给讲了基本语法,投入时间:半个下午
第四个阶段:给娃一本书,让自己敲python,使用turtle绘图工具,孩子顺带理解了角度,学会了一些英语单词,投入时间:大人答疑,孩子每天30-60分钟
基础总结
turtle库是python标准库之一,入门级绘图库。import turtle之后即可使用。
turtle绘图原理:有一只海龟,其实在窗体正中心,在画布上游, 走过的轨迹形成了绘制的图形,海龟由程序控制,可以变换 颜色、改变宽度等。
file1、绘图窗口设置命令
turtle.setup(400,300,200,100):参数以此(宽,高,距离屏幕左边距离,距离屏幕上方距离),屏幕左上角原点,单位像素。
2、运动命令
turtle.goto(x,y):直接跳转到(x,y)点,以绘图窗口中心为原点,向右为x轴,向上为y轴。
turtle.fd(d)、turtle.forward(d):以当前方向,往前行进d像素。
turtle.bk(d)、turtle.backword(d):保持当前方向不变,往后退行d像素。
turtle.circle(r,angle):从当前位置以r为半径圆的angle角度旋转。
file3、方向设置命令
turtle.seth(angle):以x轴方向为起点将方向偏转为angle度,逆时针为正。只改变行进方向但不行进。
turtle.left(angle):在当前行进方向的基础上,向左旋转angle度。
turtle.right(angle):在当前行进方向的基础上,向右旋转angle度。
4、画笔控制命令
turtle.penup():台笔
turtle.pendown():落笔
turtle.pensize(width):画笔粗细
turtle.pencolor(颜色名red/RGB三元组/颜色编码):画笔颜色
turtle.fillcolor(colorstring):绘制图形的填充颜色
turtle.begin_fill():开始填充
turtle.end_fill():结束填充
turtle.filling():返回当前是否在填充状态
示例
1、使用 turtle 库的 turtle.fd() 函数和 turtle.seth() 函数绘制一个等边三角形,边长为 200 像素,效果如下图所示。
file
import turtle as t
for i in range(3):
t.seth(i*120)
t.fd(200)
2、使用 turtle 库的 turtle.fd() 函数和 turtle.seth() 函数绘制一个边长为 200 的正方形,效果如下图所示。
import turtle
d = 0
for i in range(4):
turtle.fd(200)
d=d+90
turtle.seth(d)
3、使用 turtle 库的 turtle.right() 函数和 turtle.fd() 函数绘制一个菱形四边形,边长为 200 像素,效果如下图所示。
file
import turtle as t
t.right(-30)
for i in range(2):
t.fd(200)
t.right(60*(i+1))
for i in range(2):
t.fd(200)
t.right(60*(i+1))
4、用 turtle 库的 turtle.fd() 函数和 turtle.left() 函数绘制一个六边形,边长为 200 像素,效果如下图所示。
import turtle as t
for i in range(6):
t.fd(200)
t.left(60)
5、用 turtle 库的 turtle.fd() 函数和 turtle.seth() 函数绘制一个五边形,边长为 200 像素,效果如下图所示。
import turtle
d = 0
for i in range(5):
turtle.fd(200)
d += 72
turtle.seth(d)
6、使用 turtle 库的 turtle.circle() 函数、turtle.seth() 函数和 turtle.left() 函数绘制一个四瓣花图形,从左上角花瓣开始,逆时针作画,效果如下图所示。
import turtle as t
for i in range(4):
t.seth(90 * (i + 1))
#90,180,270,360
t.circle(200,90)
#-90,0,90,180
t.seth(-90 + i * 90)
t.circle(200,90)
7、使用 turtle 库的 turtle.right() 函数和 turtle.circle() 函数绘制一个四叶草,效果如下图所示。
import turtle
for i in range(4):
turtle.right(90)
turtle.circle(50,180)
8、使用 turtle 库的 turtle.right() 函数和 turtle.circle() 函数绘制一个星星图形(半径为90),如下图所示。
import turtle
for i in range(4):
turtle.circle(-90,90)
turtle.right(180)
9、使用 turtle 库的 turtle.circle() 函数和 turtle.seth() 函数绘制套圈,最小的圆圈半径为 10 像素,不同圆圈之间的半径差是 40 像素。效果如下图所示。
import turtle
r =10
head = 90
for i in range (4):
turtle.seth(head)
turtle.circle (r)
r = r + 40
turtle.done()
10、使用 turtle 库的 turtle.circle() 函数和 turtle.seth() 函数绘制同心圆套圈,最小的圆圈半径为 10 像素,不同圆圈之间的半径差是 40 像素,效果如下图所示。
import turtle
r = 10
dr = 40
head = 90
for i in range (4):
turtle.pendown()
turtle.circle(r)
r += dr
turtle.penup()
turtle.seth(-head)
turtle.fd(dr)
turtle.seth(0)
turtle.done()
import turtle
import time
turtle.speed(5)
# 设置初始位置
turtle.penup()
turtle.left(90)
turtle.fd(200)
turtle.pendown()
turtle.right(90)
# 花蕊
turtle.fillcolor("red")
turtle.begin_fill()
turtle.circle(10,180)
turtle.circle(25,110)
turtle.left(50)
turtle.circle(60,45)
turtle.circle(20,170)
turtle.right(24)
turtle.fd(30)
turtle.left(10)
turtle.circle(30,110)
turtle.fd(20)
turtle.left(40)
turtle.circle(90,70)
turtle.circle(30,150)
turtle.right(30)
turtle.fd(15)
turtle.circle(80,90)
turtle.left(15)
turtle.fd(45)
turtle.right(165)
turtle.fd(20)
turtle.left(155)
turtle.circle(150,80)
turtle.left(50)
turtle.circle(150,90)
turtle.end_fill()
# 花瓣1
turtle.left(150)
turtle.circle(-90,70)
turtle.left(20)
turtle.circle(75,105)
turtle.setheading(60)
turtle.circle(80,98)
turtle.circle(-90,40)
# 花瓣2
turtle.left(180)
turtle.circle(90,40)
turtle.circle(-80,98)
turtle.setheading(-83)
# 叶子1
turtle.fd(30)
turtle.left(90)
turtle.fd(25)
turtle.left(45)
turtle.fillcolor("green")
turtle.begin_fill()
turtle.circle(-80,90)
turtle.right(90)
turtle.circle(-80,90)
turtle.end_fill()
turtle.right(135)
turtle.fd(60)
turtle.left(180)
turtle.fd(85)
turtle.left(90)
turtle.fd(80)
# 叶子2
turtle.right(90)
turtle.right(45)
turtle.fillcolor("green")
turtle.begin_fill()
turtle.circle(80,90)
turtle.left(90)
turtle.circle(80,90)
turtle.end_fill()
turtle.left(135)
turtle.fd(60)
turtle.left(180)
turtle.fd(60)
turtle.right(90)
turtle.circle(200,60)
import turtle
turtle=turtle.Turtle()
screen=turtle.getscreen()
turtle.color('red', 'yellow')
turtle.begin_fill()
for i in range(50):
turtle.forward(200)
turtle.left(170)
turtle.end_fill()
screen.mainloop()
最后来个惊艳的,一颗树!!!!
效果
以上三个效果为csdn博主”“取个什么名字好的原创文章。原文链接:https://blog.csdn.net/as_csdn/java/article/details/93086075*