毛京宇 魏云靖
Python turtle的发展
Python中的turtle模塊受启发于在欧美有着广泛基础且历史悠久的LOGO语言。LOGO语言形式非常直接,通过一组简单的指令就可以指挥计算机在屏幕上绘制出或极具现代感或抽象复杂的图像。正是因为LOGO教学的广泛开展,使得很多青少年不再将编程等同于geeks或nuts的专长,并对数学、逻辑和计算机等相关学科产生了浓厚的兴趣。
初代turtle模块随2001年12月21日发布的Python 2.2版本被添加到了Python标准库之中。后经多个版本的调整逐渐稳定并形成当前版本中的功能和操作。
Python turtle是向LOGO语言的致敬,可以通过turtle .mode0函数予以调整,尽最大可能还原LOGO语言中小海龟操作的特点。
随着Python语言的流行和普及,一位名叫Ram Rachum的网络工程师重构了Python turtle并单独封装形成了一款叫作PythonTurtle的教学软件,可以在Windows和Mac计算机上安装和运行。
Python海龟绘图课
在正式上课之前,请注意:
(1) Python是一种开放标准的通用开发语言,不少组织发行了各具特色的版本。本文所载程序使用的Python编译器为CPython(官方社区发行版本)3.7.3。当然,如果读者使用其他发行版就不能运行示例脚本。当出现意外情况时,请您在检查时考虑版本因素。
(2)尽管现在互联网上有很多在线版本的Python运行环境(无论是Python官方社区的Interactive Shell,又或者各大厂家提供的在线Jupyter Notebook服务),并且turtle是Python标准库,但是由于无法加载并创建tkinter.Canvas画布的原因,所以在线平台无法让海龟畅游作画。
本文以偏概全仅对绝大多数常用turtle模块函数进行梳理,希望能对初学者有所引领。学习Python晟好的平台当然还是官方社区提供的文档站点,读者可以访问https://docs.python. org/zh-cn/3/Library/turtle. html进行更为全面的学习。
让海龟畅游起来
挥毫创作当然要首先学会运笔。Python Turtle的基础就是让海龟能够在画布中畅快遨游。
有了表1这些基础我们就可以绘图了。
怎么turtle画图一上来就让读者碰了钉子?也许你觉得海龟画图太过平淡,那我们就在上面程序的基础上加入for循环做点儿炫目的效果。这里我有意识地使用了2个之前没有讲解过的turtle模块中的绘图函数,相信聪明的读者在阅读源代码的过程中一定能够理解其中深意。
“油漆桶”工具
一笔一笔“挥毫”虽然有趣,但如果需要大面积着色时还是“泼墨”画法更有效率。表2中的一组turtle函数不但完成画笔“油漆桶”般的填充着色功能,而且还能设置和判断海龟绘图时的状态。
准备好了吗?这回我们加入了函数这种结构化程序设计的技术优化脚本,现在要验证所学的新知识了。
用Python turtle打太极,是不是很有趣?
互动绘图板
Python turtle除了能够完成基本的绘图任务之外,还可以在程序中添加键盘和鼠标交互函数,制作出具有互动功能的程序甚至小游戏。下面是与交互有关的常用函数,让我们一起来学习一下吧。
有了表3这些函数的辅助,我们就可以制作一个绘图板程序。在操作时,鼠标左键控制“画笔”在绘图板中运动,鼠标中键可以切换绘图时的颜色,鼠标右键控制图形填充及“画笔”在绘图板上的“落笔”“抬笔”操作。
总结
turtle绘图模块受LOGO语言启发而创建,能够有效激发初学者的学习热情并释放创意。turtle绘图模块仅仅是Python不断发展壮大标准库中的其中一员,无论是浅尝辄止热衷于在计算机上挥毫泼墨,还是循序渐进探究前沿科技,都是一个非常具有潜力的终南捷径。
参考资料
Python turtle官方文档(https://docs.python.org/zh-cn/3/library/turtle.html)