利用Python语言的Turtle库绘制正多变形
2020-10-09林晓芬
摘要:Python语言是目前最接近自然语言的通用编程语言,目前受关注度非常高,国内许多高校都开设了Python程序设计课程。Python语言的Turtle库是一个简单、易用的绘图库,可以用作Python语言学习的入门库。通过选取一些有趣的绘图案例,来增强学生学习语言的兴趣。
关键词:Python语言;Turtle库
中图分类号:TP311 文献标识码:A
文章编号:1009-3044(2020)22-0111-03
开放科学(资源服务)标识码(OSID):
Python语言是一种面向过程又面向对象的编程语言,语法简单、易读。同时,还是开源的编程语言,拥有丰富而强大的扩展库。Python代码简洁、语法简单、上手容易,应用广泛。目前,全国有多所高校都开设了Python程序设计课程。我校作为福建省知名的职业院校,也开始开设Python课程。Python语言的Turle库是一个简单、易用的绘图库,可以用作Python语言学习的入门库[1]。
Turtle库也叫海龟绘图库,它是Python语言最基础的图形绘制函数库,基本原理是用程序控制一只海龟爬行,并将其轨迹动态生成图形进行输出。Turtle图形绘制的概念诞生在1969年,最初成功应用于LOGO编程语言。由于turtle图形绘制概念十分直观且非常流行,Python接受了这个概念,并形成了Python的turtle库[2]。
本文首先引导学生画一个等边三角形,然后扩展到画正n变形,引出循环语句的概念,然后引导学生如何来画一个五角星。
1 绘制正n边形
我安装的python版本是Python -3.8.1( 32-bit)。安装完成以后,在“开始“菜单里面点击Python 3.8下的IDLE,就会出现Python的界面。
首先,我们在命令提示符后面输入几行代码:
在上面的语句中,import turtle的作用是调用turtle库。第2个语句设置一个宽500像素、高600像素的画布,画布的颜色是绿色。第3个语句设置画笔的宽度是6像素。第4个语句设置画笔的颜色是红色。这个时候,就会在画布的正中间出现一个代表画笔的三角形箭头。画笔的初始位置是画布的正中,这个位置为坐标原点(0,0),往左是x轴的正方向,往上是v轴的正方向。
1.1采用for循环绘制正n边形
第一种方法,考虑用for循环语句,如图3所示。turtle.reset()语句的作用是清空窗口,重置turtle的状态为初始状态。也就是说,原来画的图形都没有掉了,画笔重新回到了画布正中心。
在这里面,用到了一个for循环,和一个range函数,range函數是一个左闭右开的函数。
其中,for num in range(0,10):语句的作用是循环10次。命令turtle.forward( 100)的作用是画笔向前画100个像素,命令turtle.right(36)的作用是画笔方向顺时针转动36度。这样循环十次就可以画出一个正10边形,其边长为100像素。同理,可以画出正9边形、正8边形、正6边形、正5边形、正4边形、正3边形。最开始的时候,考虑到360度不能被7、11整除,无法绘制正7、11边形。后来想到在命令turtle.right()命令中,参数直接输入360/7或者360/11,就可以绘制正7、11边形了。这样,就可以绘制任意正n变形了。就是画笔方向转动的角度是360/n,n为正n边形的边数。
1.2采用turtle.circle()命令绘制正n变形
第2种方法,是采用turtle库的turtle.circle()命令来画正n边形。
Turle.circle(radius,extent,steps)有三个参数,第一个半径,第二个是弧度,当第三个参数steps的值为正整数时,绘制steps=n的内切正n变形。语句turtle.Circle(150,steps=3)的含义是画一个内切圆半径为150的正3边形。因此要绘制一个内切圆为150的正n边形,其代码为turtle.circle(150,steps=n)。
2 绘制五角星
在绘制正n边形方法一的基础上,将代码稍做修改,绘制五角星。将turtle.right()命令的参数,改成180-180/n。如图所示,五角星就输入turtle.right(180-180/5),21角星就是turtle.right(180-180/21)。通过试验发现,n为奇数才能画出正确的n角星,如果输入的n为偶数,则绘制的图形有错误。
3 结论
在引导学生学习Python语言的过程中,我们应该选取一些趣味性较强的案例,来激发学生的学习兴趣。通过渐进式的趣味性案例的讲解,使学生产生浓厚的兴趣。兴趣是最好的老师,只有学生容感兴趣时,才能够学得好。课堂教学只依靠老师一人的努力是不够的,只有充分调动学生的积极性、激发学生的学习兴趣,才能更好地完成教学[3-4]。
参考文献:
[1]刘梅彦,徐英慧,周淑一.基于成果导向的“Python程序设计”教学设计[J]‘电脑知识与技术,2017,13(20):105-107.
[2]嵩天,黄天羽.Python语言程序设计教学案例新思维[J].计算机教育,2017(12):11-14,19.
[3]嵩天,黄天羽,礼欣.Python语言:程序设计课程教学改革的理想选择[J],中国大学教学,2016(2):42-47.
[4]嵩天,黄天羽,礼欣.面向计算生态的PYthon语言入门课程教学方案[J].计算机教育,2017(8):7-12.
【通联编辑:唐一东】
作者简介:林晓芬(1981-),女,硕士研究生,副教授。