在网页上用画画的方式学Python
2019-12-02林赛雅谢作如
林赛雅 谢作如
毫无疑问,Python已经成为当前中小学最热门的编程语言。据了解,普通高中信息技术的五套新教材,全部选择了Python。当孩子们具备了以Scratch、Blockly或者扣叮为代表的图形化编程基础后,在代码编程方面,Python成为最好的选择之一。
Logo语言是MIT著名计算机教授西蒙·派珀特专为儿童设计的编程语言,曾经风靡全球,直到最近十年才慢慢被Scratch所替代。有人开发了一个叫Turtle的Python库,继承了Logo语言的所有功能。笔者希望能够借助画画的方式,让初学者熟悉Python语法,但是Python命令行形式的编程界面总不够友好。直到有一天发现了Jupyter和Ipyturtle,实现了在网页上一边画画,一边学习Python的愿望。
● 编程环境搭建
1.Jupyter简介和安裝
Jupyter的全称为Jupyter Notebook(此前被称为IPython NoteBook),是一个交互式笔记本,支持运行40多种编程语言。Jupyter的本质是一个Web应用程序,便于创建和共享程序文档,支持实时代码、数学方程、可视化和MarkDown。很多人喜欢直接在Jupyter上写代码,并同步记录学习心得,这样的学习笔记实际上就是一个很好的教程。
除了通过Jupyter,还可以通过Web页面运行Python代码和系统命令。开源硬件虚谷号上,就集成了Jupyter,通过访问Jupyter页面,就能用无线的模式来给虚谷号编程,也可以管理虚谷号上的种种应用。如果没有虚谷号,建议安装Winpython或者Anaconda,二者都集成了Jupyter。如果自己对Python比较熟悉,也可以自行安装。
2.Ipyturtle简介和安装
顾名思义,Ipyturtle是Jupyter的插件,用于在Jupyter上模拟海龟,即Jupyter上的Turtle画画。Ipyturtle的语法和Turtle也基本一致,仅有几个常用的动词。例如,forward为前进,back为后退,right和left分别表示右转和左转。访问官方开源网站,可以得到具体的文档资料。
Ipyturtle的Github地址:https://github.com/gkvoelkl/ipython-Turtle-widget。
和其他的Python库类似,Ipyturtle可以用pip或者pip3命令安装,但首先需要安装Jupyter。安装命令如下:
pip install Ipyturtle Jupyter nbextension enable --py --sys-prefix Ipyturtle
Jupyter安装好后,可以视为计算机上安装了一个默认端口为8888的Web服务。在命令行中输入Jupyter,即可启动这一服务。
Jupyter的访问地址为:http://[ip地址]:8888,如果访问的是本机,可以直接用127.0.0.1作为IP地址。
● 开始画画吧
1.显示我的画布
在Jupyter的页面中新建一个Python3文件,这时将新建一个笔记。在笔记的文本框中输入如图1所示的代码,然后点击“运行”,看一看,网页上是不是出现了一张带箭头的图片(如图2)。注意:如果网页没有出现图片,请使用谷歌浏览器访问Jupyter。
然后,在新的文本框中输入“t.forward(60)”,看看画面有什么变化,是不是出现了一条直线(如图3)。
这里对Ipyturtle的常见语法做简单介绍。
(1)“from Ipyturtle import Turtle”的作用是在Ipyturtle库中导入Turtle模块。
(2)“t=Turtle()”表示建立Turtle对象,名称是t。直接输入t,网页上就能显示画布。“t.close()”表示关闭画布。“t=Turtle(fixed=False, width=100, height=100)”表示建立一个宽度和高度为100像素的画布。
(3)“t.forward(60)”表示前进60,“t.back(20)”表示后退20,单位是像素。
(4)“right(10)”和“left(10)”表示右转和左转10,单位是角度。
怎么样?命令是不是很简单?
2.画一个矩形
画一个矩形,其实只需要控制箭头右转三次90度,画四条对称的线。在文本框中输入如图4所示的代码,看看是不是动态画出了一个矩形?
用如图5所示的代码,可以画出三角形、圆形等。
在画圆形的时候,我们就用到了循环语句,不然就得写360行同样的语句,初学者很快就体会到循环语句的重要性。需要特别强调的是,画布可以另存为图片。如果熟悉了语法,完全可以用这种方式来画一些常见的图形。
● 写一个交互式笔记
Jupyter的最大优势在于可以编写交互式的笔记。将输入代码的文本框的类型(默认为“代码”)换成“标记”,即可写上说明性文字。Jupyter的文字支持标准的MarkDown语法,能够输入段落、列表、超链接和数学公式等不同格式的文本。MarkDown是程序员常用的一种纯文本格式的标记语言,通过简单的标记语法,可以使普通文本内容具有一定的格式。
我们把探索、测试Ipyturtle语法的过程,即在网页上画画的过程,一步一步记录下来,在代码旁边增加说明性文字,这就完成了一个交互式笔记(如图6)。这既是学习笔记,也是一个支持在线运行代码的交互课件。
将自己编写的笔记保存为.ipynb格式,就可以分享给其他人使用。开源硬件虚谷号上已经整合了笔者写的各种交互式编程笔记,打开无线模式即可使用。
西蒙·派珀特认为,计算机是一种新的表达工具,用Logo语言可以帮助孩子们用更好的方式学习数学和编程。在笔者看来,用画画的形式来熟悉Python语法,是很不错的选择。尤其是在虚谷号和Jupyter的支持下,打开浏览器就能学习,降低了学习门槛。Ipyturtle的功能虽然很简单,但如果结合网络爬虫、百度AI和板载Arduino等功能,画画会更加有趣。例如,用画图的形式呈现各种传感器数据,让物联网数据可视化,能更好地激发学生的学习兴趣。