从Scratch到Python——python turtle

一种比pygame更加简洁的实现

现在很多学校都开设了Scratch课程,学生可以利用Scratch创作丰富的作品,然而Scratch之后的图形化编程语言学习什么内容,是一线老师和Scratch官方共同关注的问题。

就目前来看可以选择的有C语言、Logo、Python和SmallBasic。就我个人而言是倾向于Python的。因为C语言虽然经典,但是学了很久也不能做出可视的成型的作品,极大的降低了孩子们的积极性;Logo语言仅仅是一门玩具型的编程语言;Smallbasic和Logo语言的情况类似;而Python语言已经做为编程入门语言得到了广泛的任何,相比于c语言,入门简单,而且Python可以用很少的代码完成复杂的工作,在以后的工作学习中都会用到,对于一般人来说C语言是屠龙之技,即便是在大学里的C语言通修课也是如此,而且目前部分大学的已经开始慢慢的把通识课的入门编程语言改成Python了。毕竟人生苦短我用Python呢。

但是Python作为一种文本编程语言,对于小学生来说还是有一定难度的,所以从Scratch到Python肯定需要一个过渡,我对于这个问题思考了很长时间,我觉得在学习了Scratch基础上,结合Scratch来学习Python是合适的。

学习任何一种编程语言,首先要了解诸如变量、循环、分支判断这些基本的程序结构,经过Scratch的学习,学生对于这些概念基本掌握,在学习Python的时候,用Scratch来描述程序,作为思维可视化的工具,有助于学生快速的掌握Python。

闲言少叙,下面我们就开始Python的学习,话说如果一开始就讲Python的变量肯定会被吐槽,全部是文本,黑咕隆咚的窗口,没什么意思啊,那么们就从窗口开始。

安装Python

(从官网下载Python 3.6如果是xp下载3.5,然后看下基本的Python安装和使用介绍,启动IDLE)

启动IDLE

安装python之后,开始菜单,python,IDLE,就可以启动了。

神奇的小乌龟

在正式学习Python之前我们先来体验下用Python来绘制图形,如果你看不懂也没有关系,先照着教程把代码查下来就是了,就像是联系书法开始肯定有个临摹的阶段,我们先体验,后面详细讲解为什么这么做

下面我们隆重的请我们的Python小乌龟入场。

首先在IDLE的代码编辑器输入以下代码

2.png (13.46 KB, 下载次数: 20)

2019-2-2 14:53 上传

然后单击运行

3.png (2.41 KB, 下载次数: 21)

2019-2-2 14:53 上传

解释

我们来解释下这段代码

from turtle import *复制代码是从Python的库中导入turtle这个类,当导入的时候,其实小乌龟已经存在了,只是我们看不到而已。当你通过

forward(90)复制代码

命令让小乌龟前进90个单位的时候惫懒的小乌龟才出现在舞台上,forward的意思是前进,forward后面括号里的是参数,描述乌龟前进的距离,这是一个固定的写法。

4.png (5.17 KB, 下载次数: 19)

2019-2-2 14:53 上传

是不是觉得眼熟呢,在Scratch,是不是有点像Scratch里面让小猫动起来呢?

5.png (37.84 KB, 下载次数: 20)

2019-2-2 14:53 上传

在turtle里面,默认画笔是落下的,所以小箭头移动的时候就会画图,我们记得scratch里面有一个抬笔积木,在turtle也有,不过是

6.png (18.99 KB, 下载次数: 17)

2019-2-2 14:53 上传

from turtle import *

# 神龟前进100单位

forward(90)

penup()

# 抬笔

forward(90)复制代码

首先我通过penup()命令抬笔,然后利用goto(10,90)命令让小乌龟移动到(10,90)

其实这个时候,调用前面的向前移动forward命令也不会留下痕迹的

7.png (18.99 KB, 下载次数: 18)

2019-2-2 14:53 上传

绘制正方形

下面我们来绘制一个正方形,首先我们用scratch来实现绘制正方形这个功能,我们用最简单的顺序命令来实现

Scratch程序绘制正方形

8.png (68.63 KB, 下载次数: 22)

2019-2-2 14:53 上传

可以看到

+首先拖动绿旗模块到舞台

+然后清空舞台

+落笔

+让小企鹅前进90步,然后右转90°,等1s钟

+重复以上步骤四次

+抬笔,准备下一次绘图

这是一个典型的绘制正方形的程序,采用了顺序结构来编制程序,便于理解。

接下来我们用python中的turtle库实现这个程序

Python版本的正方形绘制程序

9.png (7.61 KB, 下载次数: 16)

2019-2-2 14:53 上传

from turtle import *

# 神龟前进100单位

forward(90)

right(90)

forward(90)

right(90)

forward(90)

right(90)

forward(90)

right(90)复制代码

看,虽然一个是图形编程,一个是文本编程,但是都成功的绘制出了正方形。下面我继续完善,我们知道在Scratch中是可以改变画笔属性的,比如画笔粗细,画笔的颜色等等,在python也是可以的,看下面的表格

10.png (35.64 KB, 下载次数: 15)

2019-2-2 14:53 上传

比如我们要画一个边框粗为4,颜色为红色的正方形

Scratch版本

11.png (73.73 KB, 下载次数: 16)

2019-2-2 14:57 上传

Python版本的画正方形

12.png (6.67 KB, 下载次数: 20)

2019-2-2 14:57 上传

代码如下

from turtle import *

# 神龟前进100单位

pensize(4)

pencolor("red")

forward(90)

right(90)

forward(90)

right(90)

forward(90)

right(90)

forward(90)

right(90)复制代码可以看到,我们用python里面的命令完成了与scratch相同的功能,是不是相当有趣呢?

变量

前面我们画了一个边长为90的正方形,如果我们想让正方形的边长是100怎么办呢?我们先来看最原始的方法,那就是把scratch或者Python中代表边长的数字90分别改成100:

13.png (80.51 KB, 下载次数: 16)

2019-2-2 14:57 上传

你会发现这次不是正方形啊,哦,原来是我把最后一个右转90°,也改成100,导致右转了100°,你看,这样一个个的修改不仅麻烦,而且容易出错,怎么办呢,我们用一个变量代表边长。

变量是一个容器,里面存放着代表边长的数字。

在Scratch中新建变量

经过前面多学习,大家已经掌握了在scratch中新建变量,下面我们新建一个代表边长的变量side,然后把程序中代表边长的100改成变量side

14.png (29.25 KB, 下载次数: 18)

2019-2-2 14:57 上传

然后我们改变side值,就可以轻松的绘制不同边长的正方形了

在Python中新建变量

python是一种解释语言,无需声明就可以新建变量,新建变量只需要用下面的语法

side = 100复制代码这样就新建了一个side变量,代表100,这里的=等号的含义是,把右侧100的值放到变量side中,side代表100.

我们看如何用python来实现用变量来代表数值绘制正方形

from turtle import *

# 神龟前进100单位

side = 100

pensize(4)

pencolor("red")

forward(side)

right(90)

forward(side)

right(90)

forward(side)

right(90)

forward(side)

right(90)复制代码

15.png (7.5 KB, 下载次数: 22)

2019-2-2 14:57 上传

那么,亲爱的朋友,你能够新建一个angle变量,代替角度吗?

重复循环

在日常生活中,我们经常会遇到一个枯燥而重复的事情,为了从这些劳动摆脱出来,人们发明机器以及机器人,代替人类完成这些枯燥重复的事情。与人类不同的是,计算机特别擅长做简单重复的事情,效率和准确率比我们人类要高很多。通过合理的使用重复循环,我们可以大大提高程序的效率。

from turtle import *

forward(90)

right(90)

forward(90)

right(90)

forward(90)

right(90)

forward(90)

right(90)复制代码

仔细观察以上代表,是不是,是不是感觉有很多地方是重复的呢?一般在计算机中超过三次重复就可以考虑使用循环来简化代码

在scratch中,控制积木分类中有重复积木:

16.png (2.16 KB, 下载次数: 22)

2019-2-2 14:57 上传

下面我们利用scratch中的循环来简化代码

17.png (12.88 KB, 下载次数: 15)

2019-2-2 14:57 上传

仔细观察以上代码,想一想在重复4次内部应该放入那些积木块呢?这样代码是不是简单了很多?

Python循环

python中的循环,需要用到for...each...语句,在这里会涉及到python一个非常有意思的地方,缩进语法

from turtle import *

for each in range(4):

forward(90)

right(90)复制代码

执行以上代码,会发现,出现了一个正方形,需要注意的是,forward(90)以及right(90)语句比for缩进了4个空格,这也是python的特点之一,缩进语法,这是for的固定写法,大家要知道,而且一定不要漏掉冒号哦。

更多类似

有人说,不是python turtle小乌龟吗,为什么只有箭头呢?scratch舞台上有各种各样的角色,python turtle只有个箭头是不是太寒酸了呢?turtle也可以多种多样哦!

需要改变箭头的形状要用到shape()命令,下面我们来试一下

from turtle import *

shape('turtle')

for each in range(4):

forward(90)

right(90)复制代码

18.png (596 Bytes, 下载次数: 19)

2019-2-2 14:57 上传

有没有觉得小乌龟太小了?我们来改变小乌龟的大小

from turtle import *

shape('turtle')

shapesize(5,5,5)

for each in range(4):

forward(90)

right(90)复制代码运行以上代码,是不是发现小乌龟变大了呢?

19.png (916 Bytes, 下载次数: 24)

2019-2-2 14:57 上传

当然python turtle中小乌龟的形象不仅可以是小乌龟,箭头,还是是圆和正方形。

小结:python urtle某种程度上跟logo小乌龟是比较类似的,肯定有人会疑问为什么不直接学习logo呢?因为logo基本上已经被淘汰了,我们最主要的目的还是学习python,python turtle以及结合scratch只是防止单纯的学习python过于枯燥的弱点,当然真正的掌握了python以后就不会有这样的感觉,基本上scratch大部分功能都可以用python turtle来实现,这样就可以顺利的帮助小孩子从scratch过渡到python。

先来看最经典的例子

在scratch教程中,一般开始都是先做一个小猫来回跑动的例子,来吸引小盆友,python turtle做这样的例子其实很简单的,我们先来看用scratch怎么做:

20.png (13.43 KB, 下载次数: 22)

2019-2-2 14:57 上传

下面我们用python来实现,现在看不懂不要紧,看完后面的就能看懂了。

from turtle import *

shapesize(4,4,4)

penup()

x = 0

v = 5

while 1:

goto(x, 0)

x += v

if x < -200:

v = -v # 当箭头到了左侧边界,让x增加

if x > 200:

v = -v # 党建头到了右侧边界,让x减少复制代码

以上代码实现了箭头来回走动,其实原理很简单的v = 5跟

21.png (1.53 KB, 下载次数: 19)

2019-2-2 15:01 上传

的作用类似,是用来设定角色移动的速度,而与

22.png (1.1 KB, 下载次数: 16)

2019-2-2 15:01 上传

对应的则是以下代码:

if x < -200:

v = -v

if x > 200:

v = -v复制代码我来解释下这段程序,首先导入必要的库,然后利用shapesize()命令设置箭头的大小,然后while循环的作用于scratch的重复类似,不停的执行以下代码,首先让箭头移动到(0, 0)坐标,然后把x坐标增加步数v,然后判断改变后的x坐标是否大于200,大于200则意味着箭头超过了右侧的边界,那么x就应该向相反方向移动,这也就是scratch中的

22.png (1.1 KB, 下载次数: 18)

2019-2-2 15:02 上传

含义,本来向右移动是让x坐标不断的增加步数v,如果要向左移动,就要减去步数,所以当箭头的横坐标大于x的时候就让x减去步数;同样的当x的坐标比-200小时,意味着箭头到了左侧边界,那么不再让x坐标减去步数v,而是让x坐标增加。

关于事件

在scratch中事件是很常用的功能,比如当鼠标被单击的时候,角色说话:

23.png (36.79 KB, 下载次数: 15)

2019-2-2 15:01 上传

其实小乌龟也是可以的,不过呢这里要用到函数的功能,不知道各位看官在Scratch里有没有学习函数的功能呢,这里要介绍python里面函数的语法

def function_name():

pass复制代码可以看到,首先要有def关键字,然后空一格,然后是函数名,括号以及冒号,冒号是必不可少的内容!

from turtle import *

shape('turtle')

def sayhello(x, y):

write('2007-2017高考十年')

onclick(sayhello)复制代码

24.png (920 Bytes, 下载次数: 22)

2019-2-2 15:01 上传

运行上述代码,会发现当你单击小乌龟的时候,小乌龟会说出我们指定的话语,'2007-2017高考十年',有没有很唏嘘。

这里需要注意但是函数sayhello有两个参数x,y分别代表小乌龟当前的横纵坐标。同时onclick函数的参数,是一个函数名,这里面涉及到了回调,当然我们知道怎么一回事就可以了,当你希望被单击的时候执行那个函数对应的功能呢,你就在onclick的参数里面写上这个函数就可以了。

关于动作积木块的类比

25.png (45.45 KB, 下载次数: 12)

2019-2-2 15:01 上传

作者:郎咸蒙

來源:简书

从scratch到python轻松学下载_STEAM教育-[少儿创客] 从Scratch到Python——python turtle-电路城论坛 - 电子工程师学习交流园地...相关推荐

  1. python rgb led控件_Raspberry Pi-用树莓派实现RGB LED的颜色控制——Python版本-电路城论坛 - 电子工程师学习交流园地...

    用树莓派实现RGB LED的颜色控制 RGB色彩模式是工业界的一种颜色标准,是通过对红(R).绿(G).蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代 表红.绿. ...

  2. python led屏控制_Raspberry Pi-简单几步实现通过Python编程控制USBLCD屏显示-电路城论坛 - 电子工程师学习交流园地...

    树莓派B/B+  USBLCD字符屏 目前市面上树莓派可用的LCD1602系列字符屏主要是两种,一种是通过树莓派上数目可怜的GPIO直接控制(GPIO大量被占用,可用的IO更少了),一种是做成扩展板插 ...

  3. thonny python ide_学习用 Thonny 写代码:一个面向初学者的Python IDE

    原标题:学习用 Thonny 写代码:一个面向初学者的Python IDE 编译自: https://fedoramagazine.org/learn-code-thonny-python-ide-b ...

  4. python编辑器安卓下载-三款可以在安卓手机上运行Python代码的软件

    导 语 READ 我相信大家平时大多数时间肯定都是在电脑上面敲Python代码,有时候出门外或者不方便使用电脑的时候,你是否曾想用手机就能编写和运行Python代码呢?本文将会介绍3款不同的安卓软件帮 ...

  5. 中小学线上教学平台让孩子轻松学,大屏教育软件打造居家小课堂

    疫情之后,学生居家上网课逐渐成了趋势,居家上网课没有了学校课堂的氛围,也缺乏老师面对面的监督,孩子难免会上课走神漏掉知识点,在家没有老师也没办法问,久而久之就会出现问题.面对这样的情况,父母们也很着急 ...

  6. python单击url下载网页文件_使用不带url的python脚本从网页下载文件,调用onClick函数 - javascript...

    有一个网页带有链接"单击下载",单击该链接可以下载文件. 我可以通过转到网页并单击此链接来手动下载此文件,但是我需要通过python脚本下载此文件. 如果我看到源代码,则可以看到锚 ...

  7. python 项目学编程_《从问题到程序:用Python学编程和计算》——3.5 练习-阿里云开发者社区...

    复习下面概念:数值积分,区间分割法,舍入误差,简单重复,累积,累积变量,生成和筛选,递推,递推变量,素数(质数),因子和真因子,哥德巴赫猜想,输入循环,输入控制的循环,递归定义,递归函数,循环定义,无 ...

  8. 学php丢人吗,大学里一个人吃饭很丢人吗? - 窗外事 - 简单学习网论坛_中高考学习交流论坛_中学生学习论坛 - Powered by phpwind...

    大学里一个人吃饭很丢人吗? 01. 前两天在网上看到一个问题:"你上大学的时候,觉得最丢人的事情是什么?" 我觉得比较好奇是,有个网友回复说:"每次一个人到食堂吃饭总觉得 ...

  9. php教程适合高中生学吗,高中生请进 - 高一 - 简单学习网论坛_中高考学习交流论坛_中学生学习论坛 - Powered by phpwind...

    1语文知识点20条 1.小说三要素: A 人物 B 情节 C 环境 2.议论文三要素: A 论点 B 论据 C 论证 3.比喻三要素: A 本体 B 喻体 C 喻词 4.记叙文六要素(五W+H): 何 ...

最新文章

  1. Java知识点总结——装箱与拆箱
  2. 【OpenGL】用OpenGL shader实现将YUV(YUV420,YV12)转RGB-(直接调用GPU实现,纯硬件方式,效率高)...
  3. 写博客必备的复制黏贴
  4. “让Keras更酷一些!”:层中层与mask
  5. gwt的mvp模式_GWT MVP变得简单
  6. 判断数据类型的几种方法
  7. 使用树莓派3获取CPU温度
  8. 线性代数及其应用:绪论
  9. 微信小程序开发【前端+后端(java)】
  10. 最难学的十大编程语言,Java排第三,C++排第二,第一名竟是它
  11. 如何将PPT导出为60帧的视频
  12. 大学计算机专业用ipad pro够用吗,苹果iPad Pro上很合适学生党的几个专业App
  13. mysql实验视图与索引_视图和索引(数据库实验4)【借鉴实操】
  14. Contrastive Loss (对比损失)
  15. 为什么DDR电源设计时需要VTT电源?
  16. 汇编语言、寄存器分类及程序计数器
  17. 插入图片的时候,总是只是能漏出一点点其他部分都看不到,改变格式从插入型改成浮于文字上方才能完全显示,但浮于文字上方的格式最后不好排版和编辑,稍微一改,整个就乱了,求助如何让插入型的文字图片完全显示出来
  18. 【优化系列】汇编优化技术(九):WebAssembly(wasm)平台SIMD优化
  19. 敏捷.敏捷项目管理V2.Jim Highsmith
  20. 安徽2021年高考成绩什么时候查询,2021年安徽高考成绩什么时候出来,几点可以查询到...

热门文章

  1. Verilog语法-模块module[Day2学习笔记]
  2. 实验室GPU管理神器Determined
  3. telnet 正在连接127.0.0.1:8888...无法打开到主机的连接。 在端口 23: 连接失败
  4. 区块链笔记:典型应用:数据资产、交易系统、即时通信、链上游戏、追踪溯源等
  5. Android之电话拨号器
  6. Swagger使用方式,告别postman
  7. Oracle查询连续几年,几月,几天的数据
  8. ajax动态加载div,JQuery/AJAX:使用动态内容加载外部DIV使用动态内容
  9. 流程引擎动态任务实现(收发文流程案例)
  10. 代理模式-Proxy Pattern