内容正文:
第二单元 2.2 触摸生活中的标志:turtle
Python程序设计基础
同步精品课堂
高等教育出版社
任务一
初识海龟
任务二
循环的魔力
任务三
综合创作
掌握国家标准《机械制图》中有关图幅、比例、字体图线等基本规定。
教学目标
一
1、理解turtle的概念以及画图原理
2、掌握turtle模块的常用语句
3、掌握用Python的turtle模块绘制图形
教学重难点
二
教学重点:
掌握turtle模块的常用语句
教学难点:
掌握用Python的turtle模块绘制图形
导入新课
三
你能用电脑绘制出这样的图形吗?可以用什么软件实现?
其实,这些图形除了可以用绘图软件完成,用几行简单的代码也能实现。python中有一个很方便的工具——海龟(turtle)。
任务一
初识海龟
机位固定:摄像机本身不移动(如不推、拉、摇、移)。
新知讲授
四
1、海龟(turtle)的概念及画图原理
请大家想象这样一个场景:在我们的电脑屏幕上,有一只小小的、虚拟的“海龟”。它背着一支画笔,听从我们的指挥。
当我们下达 forward(100) 指令,它就会向前爬行100步,并画出一条线。
当我们下达 right(90) 指令,它就会原地向右转90度。
通过组合指令,我们就能指挥这只海龟绘制出各种图形。
机位固定:摄像机本身不移动(如不推、拉、摇、移)。
新知讲授
四
1、海龟(turtle)的概念及画图原理
Turtle(海龟)是 Python 的一个标准库(模块),专门用于入门级的图形绘制。它源自于 20 世纪 60 年代的 Logo 编程语言,其设计初衷就是通过直观的绘图方式来教授编程概念。
我们通过编写代码指令(如“前进100步”、“右转90度”)来控制这只海龟,而它的运动轨迹就会在屏幕上形成图形。因此,编程的过程就变成了指挥海龟画画的过程。
机位固定:摄像机本身不移动(如不推、拉、摇、移)。
新知讲授
四
1、海龟(turtle)的概念及画图原理
画布(Canvas):海龟活动的区域就是一个窗口画布。
原点(Home Position):海龟的起始位置(原点)在画布的正中央,坐标为 (0, 0)。
方向(Heading):海龟有初始方向。默认方向是向右(东),也就是x轴的正方向。
左侧方向
右侧方向
前进方向
后退方向
起始位置(0,0)
画布
原点
机位固定:摄像机本身不移动(如不推、拉、摇、移)。
新知讲授
四
2、turtle模块的常用语句——①环境设置语句
import turtle:导入海龟绘图模块。这是所有turtle程序的第一步。
turtle.done():结束绘图,保持窗口打开。 如果没有它,绘图窗口可能会在程序结束后立刻闪退。
turtle.hideturtle() 或 turtle.ht():隐藏画布上的小海龟(箭头)图标。当图形绘制完成后,那个小箭头会影响最终效果的美观。这个命令让它“隐身”,只留下纯粹的图形。
机位固定:摄像机本身不移动(如不推、拉、摇、移)。
新知讲授
四
2、turtle模块的常用语句——②画笔控制语句
turtle.pensize(width):设置画笔的粗细,单位是像素。就像选择不同粗细的马克笔。width 值越大,画出的线条越粗。
turtle.penup() 与 turtle.pendown():penup()(提笔)使移动时不画线;pendown()(落笔)使移动时画线。
这是绘图中最关键的技巧之一。想象你在一张纸上画画,提笔就是把手抬起来移动到新位置,落笔就是开始画。
应用场景: 绘制不连续的图形(如同心圆、虚线)、调整起始位置。
机位固定:摄像机本身不移动(如不推、拉、摇、移)。
新知讲授
四
2、turtle模块的常用语句——③运动命令语句
turtle.forward(distance) 与 turtle.backward(distance):让海龟沿当前方向前进或后退指定距离(像素)。这是最基本的移动命令。海龟有方向性,forward 是朝它“脸”对着的方向走。
机位固定:摄像机本身不移动(如不推、拉、摇、移)。
新知讲授
四
2、turtle模块的常用语句——③运动命令语句
turtle.left(angle) 与 turtle.right(angle):让海龟向左或向右旋转一个角度。改变海龟的朝向,为下一次移动做准备。参数是角度,如90度是直角。
机位固定:摄像机本身不移动(如不推、拉、摇、移)。
新知讲授
四
2、turtle模块的常用语句——③运动命令语句
turtle.goto(x, y):将海龟精确移动到画布的指定坐标点。画布中心是(0, 0)。x轴向右为正,y轴向上为正。这是进行精确定位的核心命令,通常与 penup() 配合使用。
turtle.circle(radius, extent=None):绘制一个指定半径的圆或圆弧。
radius:半径。正数表示圆心在海龟的左侧,负数表示圆心在海龟的右侧。
extent:可选参数,表示绘制圆弧的角度。不提供则默认为360度,即整圆。
机位固定:摄像机本身不移动(如不推、拉、摇、移)。
新知讲授
四
2、turtle模块的常用语句——④颜色填充语句
turtle.color(*args):设置画笔颜色和填充颜色。
一个参数: color("red") - 同时设置画笔(边框)和填充颜色为红色。
两个参数: color("red", "blue") - 设置画笔颜色为红色,填充颜色为蓝色。
turtle.begin_fill() 与 turtle.end_fill():用于填充一个封闭图形。begin_fill() 标记开始,end_fill() 标记结束。它们本身不画任何东西,而是告诉计算机:“接下来我画的这个封闭图形,请用设置好的填充色涂满。”
机位固定:摄像机本身不移动(如不推、拉、摇、移)。
新知讲授
四
3、小试牛刀
基础任务:绘制一个绘制一个半径为50像素,边框为红色,填充也为红色的圆。
画画时,我们如何涂色?
先勾勒轮廓,再填充颜色
在代码中,我们用 begin_fill() 和 end_fill() 来模拟这个过程。
如何将海龟隐藏起来?
turtle.hideturtle()
机位固定:摄像机本身不移动(如不推、拉、摇、移)。
新知讲授
四
3、小试牛刀
进阶任务:绘制两个同心圆,外圈红色,半径100,内圈黄色,半径65。
第一个圆的圆心在起始位置 (0, 0),半径为100。
要绘制第二个同心圆(圆心相同),但半径为65,如果直接从 (0, 0) 开始画,两个圆就会完全重叠。
解决方案:turtle.goto()、turtle.penup() 、turtle.pendown()
第一个圆:半径100,圆心在 (0, 0),海龟起始点也是 (0, 0)。
第二个圆:半径65,圆心仍在 (0, 0)。
要让半径为65的圆与半径为100的圆同心,海龟的起始点需要从 (0, 0) 向上移动 (100 - 65) = 35 像素。
因此移动到的位置是 (0, 35)。
机位固定:摄像机本身不移动(如不推、拉、摇、移)。
新知讲授
四
3、小试牛刀
进阶任务:绘制两个同心圆,外圈红色,半径100,内圈黄色,半径65。
penup和pendown的重要性:如果不使用 penup(),海龟从 (0, 0) 移动到 (0, 35) 时会画出一条难看的直线。penup() 和 pendown() 的作用就是在需要重新定位时不留下移动轨迹。
任务二
循环的魔力
新知讲授
四
1、基础任务:绘制一个红色边框、黄色填充的五角星,边长为200
画五角星需要画5条边,转5次弯。如果不用循环,代码会怎样?
循环结构
for i in range(n):
五角星的角度奥秘
每次右转 144° (180° - 36° = 144°)
如何设置两种颜色?
turtle.color("red", "yellow")
填充应该在什么时候开始
循环开始前就开始填充,turtle.begin_fill()
填充应该在什么时候结束
循环结束时结束填充,turtle.end_fill()
新知讲授
四
1、基础任务:绘制一个红色边框、黄色填充的五角星,边长为200
新知讲授
四
2、进阶任务:使用 turtle 绘制一条线粗为 5px 的螺旋线,从内到外依次增加线长,顺时针旋转画线 20 次。
螺旋线形成的核心原理:在每次循环中,让海龟移动的距离逐渐增加。
在 turtle.forward(10 * x) 中,x 是循环变量,从 0 开始,每次循环增加 1。
因此,移动距离依次为:0, 10, 20, 30, ..., 190 像素。
每次移动后都向左转90度,由于移动距离不断变长,轨迹就不会重合,从而“螺旋”向外。
新知讲授
四
2、进阶任务:使用 turtle 绘制一条线粗为 5px 的螺旋线,从内到外依次增加线长,顺时针旋转画线 20 次。
如果把旋转角度改为120°,螺旋线会是什么样的?请大家试一试
任务三
综合创作
新知讲授
四
基础任务:绘制一个标准的禁止停车标志,包括红色外圈、蓝色内圈和中间的红色斜杠。
禁止停车标志可以分解为三个简单的图形组合
外层:红色实心圆
中层:蓝色实心圆(覆盖作用,形成圆环)
内层:红色粗斜杠
第一步:在位置 (0, -60) 画一个半径为60的红色大圆
第二步:在位置 (0, -50) 画一个半径为50的蓝色小圆
第三步:斜杠绘制角度为向右转45°,长度要足够贯穿整个圆环
新知讲授
四
基础任务:绘制一个标准的禁止停车标志,包括红色外圈、蓝色内圈和中间的红色斜杠。
第一步:在位置 (0, -60) 画一个半径为60的红色大圆
第二步:在位置 (0, -50) 画一个半径为50的蓝色小圆
新知讲授
四
基础任务:绘制一个标准的禁止停车标志,包括红色外圈、蓝色内圈和中间的红色斜杠。
第三步:斜杠绘制角度为向右转45°,长度要足够贯穿整个圆环
这个位置在圆心的左上方,确保斜杠能贯穿整个圆环。
向右转45度,形成从左上到右下的斜杠。
新知讲授
四
进阶任务:绘制一个简单的笑脸表情。可以适当发挥。
图形分解:将复杂图形分解为基本图形(圆、半圆)。
精确定位:使用 goto(x, y) 精确放置各个部分。
提笔落笔:在不同部件间移动时不画线。
师生互动
五
1、海龟绘图的原理是什么
2、turtle的常用语句有哪些
3、penup()和pendown()有什么作用
答案:
1、通过编写代码指令来控制海龟,它的运动轨迹就会在屏幕上形成图形。
2、import turtle、turtle.done()、turtle.hideturtle()、turtle.pensize(width)、turtle.penup()、turtle.forward(distance)、turtle.left(angle)、turtle.goto(x, y)等。
3、penup()(提笔)使移动时不画线;pendown()(落笔)使移动时画线。
随堂练习
六
1 、提笔移动,不绘制轨迹的命令是( )
A.turtle.penup()
B.turtle.lift_pen()
C.turtle.nopen()
D.turtle.up()
答案:A
解析:penup()或pu()函数用于提笔,移动时不绘制轨迹。
随堂练习
六
2 、结束绘图的命令是( )
A.turtle.done()
B.turtle.clear()
C.turtle.clean()
D.turtle.remove()
答案:B
解析:done()函数用于结束绘图。
随堂练习
六
3 、要获取海龟当前坐标,使用( )
A.turtle.position()
B.turtle.get_pos()
C.turtle.where()
D.turtle.location()
答案:A
解析:position()或pos()函数用于获取海龟当前坐标。
随堂练习
六
4 、在绘制图形时,保留绘图结果的命令是( )
A.turtle.keep()
B.turtle.done()
C.turtle.remain()
D.turtle.stay()
答案:B
解析:done()函数用于停止绘画并保留绘图结果。
随堂练习
六
5 、(多项选择题)关于begin_fill()和end_fill(),下列说法正确的是( )
A.必须成对使用
B.用于填充封闭图形
C.可以单独使用
D.参数是填充颜色
答案:AB
解析:这两个函数必须成对使用,用于填充封闭图形,颜色通过color()设置。
随堂练习
六
6 、(多项选择题)以下( )可以绘制圆形。
A.turtle.circle(50)
B.turtle.circle(50, 180)
C.turtle.circle(50, 360)
D.turtle.round(50)
答案:ABC
解析:circle()函数可以绘制整圆或圆弧,round()不是turtle函数。
随堂练习
六
7、(是非选择题)turtle.circle(100)绘制的是直径为100的圆。
A.正确
B.错误
答案:B
解析:circle(100)绘制的是半径为100的圆。
随堂练习
六
8、(是非选择题)海龟的初始方向是向右(东)。
A.正确
B.错误
答案:A
解析:默认海龟指向右方,即x轴正方向。
随堂练习
六
9、color(参数m,参数n)表示设置 ,颜色取值均可为 ,如“red”、“green”、“blue”,画笔颜色 可忽略,表示与填充颜色 相同。
答案:颜色 英文单词 m n
解析:color(参数m,参数n)表示设置颜色,颜色取值均可为英文单词,如“red”、“green”、“blue”,画笔颜色m可忽略,表示与填充颜色n相同。
课堂小结
七
谢谢
$