基于循序渐进方式的Python-turtle库教学设计

作者: 尹建新 胡彦蓉

基于循序渐进方式的Python-turtle库教学设计0

摘要:本文针对turtle绘图一堂课的实践教学,以任务为驱动,全面覆盖turtle知识点,以循序渐进方式将内容综合融入其中,结合线上线下混合式课堂,引导学生找到解决问题的方法,极大地提高了学生的编程兴趣,培养了学生的创新思维。

关键词:任务驱动;循序渐进;线上线下混合课堂;turtle库

中图分类号:G434  文献标识码:A  论文编号:1674-2117(2024)08-0071-05

引言

Python程序设计语言因具有“开源、共享、通用”等特征,拥有丰富多元的计算生态,而成为许多高校非计算机专业首选的程序设计语言课程。[1-2]笔者根据教学实践提出了“课前1+课中2+课后4”的线上线下混合教学模式,即:课前教师对教学内容及任务布置1学时的自主预习,用来初步了解教学内容;课中教师授课2学时;课后学生至少花4学时来巩固与消化课堂内容,充足的时间投入是学好该课程的必要条件。同时,笔者采取循序渐进的教学方式,通过环环相扣,由浅入深,引导学生不断思考,解决问题,最后形成一个完整的知识构架。这种教学方式能集中学生注意力,让学生在问题解决的过程中获得学习成就感,激发学习兴趣,培养学生使用程序解决问题的能力,同时提升创新意识和创新能力。

基于循序渐进方式的Python-turtle库教学设计

1.教学内容

turtle是Python内置标准库,turtle海龟绘图体系是入门级的图形绘制函数库。其原理是利用一个小海龟,从坐标系原点(0,0)位置开始,根据一组函数指令的控制,在平面坐标系中爬行,由爬行轨迹构建图形。turtle库教学知识点包括认识turtle库、画布设置、画笔控制、运动控制、方向控制和图形效果等六个方面。

2.教学模式

混合式课堂的教学过程分为课前、课中、课后三个部分。课前,教师以知识导图为提纲,上传基础知识讲解视频,并设置明确的任务导入,让学生带着任务去预习。课中,教师主导课堂,以循序渐进方式,从最初的海龟动起来到海龟行走自如,设计教学过程和教学情境,通过提问交流、小组讨论、学生演示等方式进行课堂内化。课后,教师根据学生的学习情况分析和总结,并通过网络教学平台布置具有拓展性的任务,实现知识的提高与扩展;通过教学反馈与评价,不断改进,提高质量与教学效率,利用网络平台和雨课堂,完成翻转课堂模式的混合式教学模式。教学策略与流程如下页图1所示。

3.基于任务驱动的循序渐进教学实施

任务一:海龟动起来(绘制正方形)

①任务要求:让海龟动起来,从原点处向东出发,每向前爬行100像素后左转90°,回到起点停止。

②任务目标:初识turtle图形绘制;了解画布;重点熟悉turtle绘图坐标系统;感受海龟爬行轨迹。

③任务分析:turtle绘图有绝对角度坐标和海龟角度坐标。绝对角度坐标是以海龟为坐标原点建立坐标系,分为四个象限,用(x,y)来表示具体位置,如图2(a)所示,使用turtle.goto(x,y)语句海龟移动到绝对位置(x,y)点处;海龟角度坐标是以海龟当前点为起点,分前后左右,如图2(b)所示,海龟使用turtle.forward(d)、turtle.left(angle)、turtle.right(angle)等方法做相对运动。

具体实现以顺序结构逐条执行语句,每向前爬行100像素,向左转90°,让学生先熟悉turtle绘图画布及坐标系统,掌握画笔运动命令,以直观的思维方式感受海龟的爬行过程,然后绘制出正方形。参考代码及其运行效果如图3所示。

任务二:绘制以原点为中心点的正方形

①任务要求:绘制以原点为中心点的正方形,正方形各条边分别对应红、绿、蓝和紫色。

②任务目标:重点掌握画笔起落;改进任务一中代码冗余;复习与巩固列表或元组的应用。

③任务分析:任务二是对任务一的改进与提高,从任务一中的代码可以看出,其中语句t.fd(100);t.left(90)重复四次,引导学生使用循环结构;若要使每一条线的画笔颜色发生变化,就既要使用循环来控制画线,又要让画线颜色变化,由此引导列表知识的引入。列表是有序序列,可以通过索引号来访问列表中的元素。因此,可以使用列表来存储颜色,每绘制一条边从列表中通过索引号取得对应颜色;任务中要求正方形中心点在原点,由此引入penup()或pendown()方法,实现在画笔的抬笔、落笔时的运动控制。任务二参考代码及运行效果如下页图4所示。

任务三:绘制红色框线绿色填充的正方形

①任务要求:绘制红色框线绿色填充的正方形(中心点位置不作要求)。

②任务目标:掌握画笔颜色控制命令pencolor()、fillcolor()、begin_fill()、end_fill()和color();掌握画笔颜色的RGB体系。

③任务分析:显示屏显示的颜色是R(红)、G(绿)、B(蓝)互相组合形成的,每种颜色取值范围是0~255的整数或0~1的小数,在Python中默认是采用0~1的小数来表示RGB每种颜色的值。R(红)、G(绿)、B(蓝)数值大小不同成份的组合构成五颜六色,turtle绘图中的RGB色彩体系如右表所示。

pencolor(colorstr)和fillcolor(colorstr)分别对应画笔颜色和填充颜色,也可以使用color(colorstr1,colorstr2)进行设置,其中,函数中的参数colorstr(或colorstr1、colorstr2)可以直接使用颜色字符串常量,如turtle.pencolor("green")或者RGB数值三元组,如turtle.pencolor((0,1,0))或者turtle.pencolor(0,1,0)。在使用填充时有begin_fill()和end_fill()两个相关方法,类似是否填充的开关。任务三参考代码及运行效果如图5所示。

任务四:绘制正方形阵列

①任务要求:以原点为中心点,绘制n个正方形阵列,由内到外第1个正方形边长为20像素,第2个边长为40像素,第3个边长为60,依次类推,下一个正方形边长在前一个正方形边长基础上增加20像素。

②任务目标:重点是函数的创建与调用;循环语句与range()函数;进一步强化画笔起落控制。

③任务分析:绘制多个以原点为中心的正方形,构成正方形阵列。因此,每绘制完一个正方形都要抬笔,将海龟移动到落笔绘制起点位置,起点位置可以在y=x直线上;引入函数的使用、自定义函数paint()、函数的功能绘制一个正方形;绘制多个正方形,使用循环,因此,自然引入计数循环range()函数。自定义函数的引入,使双重循环结构程序更简洁,结构更清晰可读、可理解,在前三个任务的基础上,在知识的综合应用上再递进一层次。任务四参考代码及运行效果如下页图6所示。

任务五:绘制五彩正方形阵列

①任务要求:在任务四的基础上修改,绘制五彩正方形阵列,即不同颜色的正方形。

②任务目标:熟悉random库的使用;熟悉颜色模式与画笔颜色pencolor()参数设置。

③任务分析:任务五与任务四的区别只是画笔颜色的变化,在任务二中是使用列表来存放预置颜色,但这里颜色未明确。turtle绘图颜色体系除了使用字符常量来表示,也可以使用RGB模式,其中RGB模式下其参数是在一定范围内的数据,由此,引入random库,random库中的randint()方法随机产生[a,b]范围内整数,random()方法随机产生[0,1)范围内小数。具体使用整数形式还是0~1·内小数,与turtle.colormode()保持一致即可,系统默认为RGB体系为1。通过任务练习,让学生理解属性之间的相互约束与协调关系。任务五参考代码及运行效果如图7所示。

任务六:绘制爱心

①任务要求:绘制爱心形状。

②任务目标:熟悉circle()方法的使用;培养分析和创新能力。

③任务分析:

方法一,从图形效果分析,turtle中没有直接对应的方法实现爱心图形的绘制,通过拆解与分析,爱心图形可以拆分为两个半圆和两条直线的组成,填充颜色即可。半圆的绘制最直接的是使用circle()方法,根据特殊到一般的方法,首先可以选择比较特例的参数来绘制,即爱心由一个正方形和两个半圆构成。海龟在左转135°后向前进2R像素(R为圆的半径),然后以R为半径顺时针画半圆,在画右半圆前海龟须左转90°,在绘制好右半圆后,再向前进2R像素,回到起点。

方法二,圆弧的绘制除了用circle()外,还可以使用fd()方法绘制,在前进中逐步地转角度,绘制效果就是曲线。使用循环语句,循环的次数与每次转角相关。如果循环180次,则每次转角1°,绘制出半圆曲线,若每次转角2°,则绘制出看似圆的曲线。这种方法的难点是海龟在直行多少像素后再开始绘制半圆曲线。示例中给出的参考代码计算公式为π*R=180,推得d=180/π*2,参考代码如上页图8所示。

任务七:绘制分形树

①任务要求:应用递归思想绘制分形树。

②任务目标:深入理解递归函数;培养程序设计思维。

③任务分析:递归可以把一个复杂问题转化为一个与原问题相似的规模较小的问题,通过自己调用自己,找到最终解决这个问题的条件,这个条件即为递归的出口,达到条件返回。递归函数是学生在学习过程中难以理解及运用的难点之处,通过本任务的实践练习,理解递归函数的原理与使用方法。图9为深度为3的分形树,分析每个分支节点处,发现每个分支具有相同的结构,每右转角度∂后,绘制一个枝干,枝干逐步变短,设定最后一个枝干的长度为递归出口。因此,使用递归思想绘制,参考代码如图10所示。

4.课后扩展

课后作业是扩展学习的途径,学生根据课堂所学,发挥创造力和想象力,编程创作一幅有新意的画面。通过给学生布置这种开放性的任务,启发学生理解并发展与其专业或者兴趣相关的其他领域的新想法和新观念,培养学生的创新思维和能力。

结语

实践证明,相对数学方法的编程,图形案例教学通过循序渐进的方式,以解决具体问题为导向,更能吸引学生的注意力,使其对编程产生兴趣,建立编程学习的信心。

参考文献:

[1]嵩天,黄天羽,礼欣.面向计算生态的Python语言入门课程教学方案[J].计算机教育,2017(08):7-12.

[2]嵩天,黄天羽,礼欣.Python语言:程序设计课程教学改革的理想选择[J].中国大学教学,2016(02):42-47.

[3]张莉,金莹,张洁.多样化可扩展的Python教学体系探索与实践[J],计算机教育,2017(8):18-22.

作者简介:尹建新,女,副教授,研究方向为智能图像识别、机器视觉。

基金项目:浙江省“十四五”教学改革项目(jg20220344);全国高等院校计算机基础教育研究会计算机基础教育教学研究项目(2023-AFCEC-116);2023教育部产学研合作项目(230701416280935)。

经典小说推荐

杂志订阅