海龟画图(画三角形)
- 格式:ppt
- 大小:24.50 KB
- 文档页数:6
《重复命令的嵌套》教学设计教学目标:1、学生学会使用重复命令的嵌套绘制图形。
2、激活学生思维、提高学生的动手能力。
教学重难点:重点:重复命令的嵌套,难点:小海龟画下一个基本图形应该旋转的角度。
教学过程:师:同学们,请看大屏幕(出示下图),这些图片好看吗?生:好看!师:那同学们想不想动手来画一画呢?生:想。
师:好的,现在大家用小海龟画出第一个图形。
(学生操作,教师巡视指导)师:大部分同学已经完成了,现在请放下手中的鼠标,转身面向老师,老师有个疑问?同学们是不是分三步?一步一步把三个三角形给凑到一起啊?学生:是。
师:那我们能不能一步就把它画出来呢?生:……师:今天,我们就一起来学习如何一步就画出这样的图形。
现在大家仔细观察这个图形,然后回答下面三个问题:①组成这个图形的基本图形是什么?画这个基本图形的绘图命令是什么?②小海龟每画完一个基本图形,再画下一个基本图形时,是不是可以旋转得到,如果可以,应旋转多少度?③小海龟一共重复画了几次基本图形?(学生思考,讨论)师:好的,哪位同学愿意来和大家分享你的答案?请xx同学。
生:①组成这个图形的基本图形是三角形,三角形的绘图命令:repeat 3[fd 50 rt 360/3]②要旋转120°(rt 360/3 )③重复了3次师:这位同学前面的知识点学的很扎实,三角形的绘图命令很熟练,也很善于思考和观察,谢谢你!请坐。
老师还有一个疑问,如果我要在这个图形中在加入一个三角形,那么,画完第一个图形后,我应该旋转多少度?重复几次?生:旋转90°,重复四次。
师:你是怎么知道要旋转90°,重复四次的?生:因为有四个基本图形,所以要旋转90°,重复四次。
师:看来你已经抓住了图形重复的规律,很好,那么如果要5个基本三角形,要重复几次(生:5次),要旋转多少度?(适当提问几个学生)。
5个的时候要旋转72°。
师:大家请看大屏幕(出示):3个旋转120°、4个旋转90°、5个旋转72°,大家观察一下,这些数字和360°,存在什么样的关系?生:360/基本图形个数=旋转的角度。
python海龟画图知识点总结一、海龟绘图简介海龟绘图是Python语言中的一个标准库,它提供了一个简单的图形绘制功能。
这个模块的灵感来源于小孩子玩耍时的画画游戏,通过调用不同的函数来控制海龟的行为,我们可以在画布上绘制出各种各样的图案和图形。
海龟绘图是一个很好的初学者入门编程的工具,因为它的操作简单直观,而且很容易理解。
二、海龟模块的基本功能在Python中使用海龟绘图,首先我们需要导入turtle这个模块:```pythonimport turtle```接着我们创建一个海龟对象,我们可以给海龟对象取一个名字,比如叫做“t”:```pythont = turtle.Turtle()```接下来,我们就可以开始控制海龟来绘制图形了。
海龟绘图主要通过控制海龟对象的移动和转向来完成,下面是一些常用的海龟操作方法:- 前进:t.forward(distance),表示海龟向当前方向前进一定距离。
- 后退:t.backward(distance),表示海龟向当前方向后退一定距离。
- 左转:t.left(angle),表示海龟向左转动一定角度。
- 右转:t.right(angle),表示海龟向右转动一定角度。
- 提起笔:t.penup(),表示海龟抬起笔,不在绘制图形。
- 落下笔:t.pendown(),表示海龟落下笔,开始绘制图形。
- 设置颜色:t.color(color),表示设置海龟的颜色。
通过组合这些操作方法,我们就可以控制海龟画出各种各样的图案。
下面我们来看几个简单的例子,来演示一下海龟绘图的具体操作。
```pythonimport turtlet = turtle.Turtle()t.forward(100)t.left(90)t.forward(100)t.left(90)t.forward(100)t.left(90)t.forward(100)t.left(90)```这段代码就是使用海龟绘制了一个正方形。
海龟绘图(TurtleGraphics)python2.6版本中后引⼊的⼀个简单的绘图⼯具,叫做海龟绘图(Turtle Graphics),turtle库是python的内部库,使⽤导⼊即可import turtle先说明⼀下turtle绘图的基础知识:1. 画布(canvas)画布就是turtle为我们展开⽤于绘图区域, 我们可以设置它的⼤⼩和初始位置1.1 设置画布⼤⼩turtle.screensize(canvwidth=None, canvheight=None, bg=None)参数分别为画布的宽(单位像素), ⾼, 背景颜⾊如:turtle.screensize(800, 600, "green")turtle.screensize() #返回默认⼤⼩(400, 300)turtle.setup(width=0.5, height=0.75, startx=None, starty=None)参数:width, height: 输⼊宽和⾼为整数时, 表⽰像素; 为⼩数时, 表⽰占据电脑屏幕的⽐例(startx, starty): 这⼀坐标表⽰矩形窗⼝左上⾓顶点的位置, 如果为空,则窗⼝位于屏幕中⼼如:turtle.setup(width=0.6, height=0.6)turtle.setup(width=800, height=800, startx=100, starty=100)2. 画笔2.1 画笔的状态在画布上,默认有⼀个坐标原点为画布中⼼的坐标轴, 坐标原点上有⼀只⾯朝x轴正⽅向⼩乌龟. 这⾥我们描述⼩乌龟时使⽤了两个词语:坐标原点(位置),⾯朝x轴正⽅向(⽅向), turtle绘图中, 就是使⽤位置⽅向描述⼩乌龟(画笔)的状态2.2 画笔的属性画笔(画笔的属性,颜⾊、画线的宽度)1) turtle.pensize():设置画笔的宽度;2) turtle.pencolor(); 没有参数传⼊,返回当前画笔颜⾊,传⼊参数设置画笔颜⾊,可以是字符串如"green", "red",也可以是RGB 3元组,>>> pencolor('brown')>>> tup = (0.2, 0.8, 0.55)>>> pencolor(tup)>>> pencolor()'#33cc8c'3) turtle.speed(speed): 设置画笔移动速度,画笔绘制的速度范围[0,10]整数, 数字越⼤越快2.3 绘图命令操纵海龟绘图有着许多的命令,这些命令可以划分为3种:⼀种为运动命令,⼀种为画笔控制命令,还有⼀种是全局控制命令(1)画笔运动命令:命令说明turtle.forward(distance)向当前画笔⽅向移动distance像素长turtle.backward(distance)向当前画笔相反⽅向移动distance像素长度turtle.right(degree)顺时针移动degree°turtle.left(degree)逆时针移动degree°turtle.pendown()移动时绘制图形,缺省时也为绘制turtle.goto(x,y)将画笔移动到坐标为x,y的位置turtle.penup()移动时不绘制图形,提起笔,⽤于另起⼀个地⽅绘制时⽤turtle.speed(speed)画笔绘制的速度范围[0,10]整数命令说明(2)画笔控制命令:命令说明turtle.pensize(width)绘制图形时的宽度turtle.pencolor()画笔颜⾊turtle.fillcolor(colorstring)绘制图形的填充颜⾊turtle.color(color1, color2)同时设置pencolor=color1, fillcolor=color2turtle.filling()返回当前是否在填充状态turtle.begin_fill()准备开始填充图形turtle.end_fill()填充完成;turtle.hideturtle()隐藏箭头显⽰;turtle.showturtle()与hideturtle()函数对应(3) 全局控制命令命令说明turtle.clear()清空turtle窗⼝,但是turtle的位置和状态不会改变turtle.reset()清空窗⼝,重置turtle状态为起始状态turtle.undo()撤销上⼀个turtle动作turtle.isvisible()返回当前turtle是否可见stamp()复制当前图形turtle.write(s[,font=("font-name",font_size,"font_type")])写⽂本,s为⽂本内容,font是字体的参数,⾥⾯分别为字体名称,⼤⼩和类型;font为可选项, font的参数也是可选项3. 命令详解3.1 turtle.circle(radius, extent=None, steps=None)描述: 以给定半径画圆参数:radius(半径); 半径为正(负),表⽰圆⼼在画笔的左边(右边)画圆extent(弧度) (optional);steps (optional) (做半径为radius的圆的内切正多边形,多边形边数为steps)举例:circle(50) # 整圆;circle(50,steps=3) # 三⾓形;circle(120, 180) # 半圆4. 绘图举例4.1 太阳花import turtle as timport timet.color("red", "yellow")t.speed(10)t.begin_fill()for _ in range(50):t.forward(200)t.left(170)end_fill()time.sleep(1)4.2 绘制⼩蟒蛇import turtledef drawSnake(rad, angle, len, neckrad):for _ in range(len):turtle.circle(rad, angle)turtle.circle(-rad, angle)turtle.circle(rad, angle/2)turtle.circle(neckrad, 180)turtle.forward(rad/4)if __name__ == "__main__":turtle.setup(1500, 1400, 0, 0)turtle.pensize(30) # 画笔尺⼨turtle.pencolor("green")turtle.seth(-40) # 前进的⽅向drawSnake(70, 80, 2, 15)4.3 绘制五⾓星import turtleimport timeturtle.pensize(5)turtle.pencolor("yellow")turtle.fillcolor("red")turtle.begin_fill()for _ in range(5):turtle.forward(200)turtle.right(144)turtle.end_fill()time.sleep(2)turtle.penup()turtle.goto(-150,-120)turtle.color("violet")turtle.write("Done", font=('Arial', 40, 'normal'))time.sleep(1)4.4 ⼩猪佩奇感谢的⼩猪佩奇, 很传神:)#!/usr/bin/python# -*- coding: utf-8 -*-"""@time :2018/10/10 10:18@author: yang.bin"""# coding:utf-8import turtle as t# 绘制⼩猪佩奇# ======================================= t.pensize(4)t.hideturtle()t.colormode(255)t.color((255, 155, 192), "pink")t.setup(840, 500)t.speed(10)# ⿐⼦t.penup()t.goto(-100,100)t.pendown()t.seth(-30)t.begin_fill()a = 0.4for i in range(120):if 0 <= i < 30 or 60 <= i < 90:a = a+0.08t.left(3) # 向左转3度t.forward(a) # 向前⾛a的步长else:a = a-0.08t.forward(a)t.end_fill()t.penup()t.seth(90)t.forward(25)t.seth(0)t.forward(10)t.pendown()t.pencolor(255, 155, 192)t.seth(10)t.begin_fill()t.circle(5)t.color(160, 82, 45)t.end_fill()t.penup()t.seth(0)t.forward(20)t.pendown()t.pencolor(255, 155, 192)t.seth(10)t.begin_fill()t.circle(5)t.color(160, 82, 45)t.end_fill()# 头t.color((255, 155, 192), "pink") t.penup()t.seth(90)t.forward(41)t.seth(0)t.forward(0)t.pendown()t.begin_fill()t.seth(180)t.circle(300, -30)t.circle(100, -60)t.circle(80, -100)t.circle(150, -20)t.circle(60, -95)t.seth(161)t.circle(-300, 15)t.penup()t.goto(-100, 100)t.pendown()t.seth(-30)a = 0.4for i in range(60):if 0 <= i < 30 or 60 <= i <90:a = a+0.08t.left(3) # 向左转3度t.forward(a) # 向前⾛a的步长 else:a = a-0.08t.left(3)t.forward(a)t.end_fill()# ⽿朵t.color((255, 155, 192), "pink") t.penup()t.seth(90)t.forward(-7)t.seth(0)t.forward(70)t.circle(-50, 50)t.circle(-10, 120)t.circle(-50, 54)t.end_fill()t.penup()t.seth(90)t.forward(-12)t.seth(0)t.forward(30)t.pendown()t.begin_fill()t.seth(100)t.circle(-50, 50)t.circle(-10, 120)t.circle(-50, 56)t.end_fill()#眼睛t.color((255, 155, 192), "white") t.penup()t.seth(90)t.forward(-20)t.seth(0)t.forward(-95)t.pendown()t.begin_fill()t.circle(15)t.end_fill()t.color("black")t.penup()t.seth(90)t.forward(12)t.seth(0)t.forward(-3)t.pendown()t.begin_fill()t.circle(3)t.end_fill()t.color((255, 155, 192), "white") t.penup()t.seth(90)t.forward(-25)t.seth(0)t.forward(40)t.pendown()t.begin_fill()t.circle(15)t.end_fill()t.color("black")t.penup()t.seth(90)t.forward(12)t.seth(0)t.forward(-3)t.pendown()t.begin_fill()t.circle(3)t.end_fill()# 腮t.color((255, 155, 192))t.seth(0)t.forward(65)t.pendown()t.begin_fill()t.circle(30)t.end_fill()# 嘴t.color(239, 69, 19)t.penup()t.seth(90)t.forward(15)t.seth(0)t.forward(-100)t.pendown()t.seth(-80)t.circle(30, 40)t.circle(40, 80)# ⾝体t.color("red", (255, 99, 71))t.penup()t.seth(90)t.forward(-20)t.seth(0)t.forward(-78)t.pendown()t.begin_fill()t.seth(-130)t.circle(100,10)t.circle(300,30)t.seth(0)t.forward(230)t.seth(90)t.circle(300,30)t.circle(100,3)t.color((255,155,192),(255,100,100)) t.seth(-135)t.circle(-80,63)t.circle(-150,24)t.end_fill()# ⼿t.color((255,155,192))t.penup()t.seth(90)t.forward(-40)t.seth(0)t.forward(-27)t.pendown()t.seth(-160)t.circle(300,15)t.penup()t.seth(90)t.forward(15)t.seth(0)t.forward(0)t.pendown()t.seth(-10)t.circle(-20,90)t.penup()t.seth(90)t.forward(30)t.seth(0)t.circle(-300,15)t.penup()t.seth(90)t.forward(20)t.seth(0)t.forward(0)t.pendown()t.seth(-170)t.circle(20,90)# 脚t.pensize(10)t.color((240,128,128)) t.penup()t.seth(90)t.forward(-75)t.seth(0)t.forward(-180)t.pendown()t.seth(-90)t.forward(40)t.seth(-180)t.color("black")t.pensize(15)t.forward(20)t.pensize(10)t.color((240, 128, 128)) t.penup()t.seth(90)t.forward(40)t.seth(0)t.forward(90)t.pendown()t.seth(-90)t.forward(40)t.seth(-180)t.color("black")t.pensize(15)t.forward(20)# 尾巴t.pensize(4)t.color((255, 155, 192)) t.penup()t.seth(90)t.forward(70)t.seth(0)t.forward(95)t.pendown()t.seth(0)t.circle(70, 20)t.circle(10, 330)t.circle(70, 30)t.done()。
利⽤Turtle绘制各种图形⾸先引⼊函数库:第⼀种:import turtleimport turtle as t第⼆种:from turtle import *1:使⽤ turtle 库的 turtle.fd() 函数和 turtle.left() 函数绘制⼀个等边三⾓形,边长为 200 像素。
import turtle as tfor i in range(3):t.fd(200)t.left(120)2、使⽤ turtle 库的 turtle.fd() 函数和 turtle.seth() 函数绘制⼀个边长为 200 的正⽅形,效果如下图所⽰。
import turtle as tfor i in range(4):t.fd(200)t.left(90)⽅法⼆:import turtled = 0for i in range(4):turtle.fd(200)d=d+90turtle.seth(d) #seth()海龟⽅向始终为正东⽅向。
3.⽤ turtle 库的 turtle.fd() 函数和 turtle.seth() 函数绘制⼀个五边形,边长为 200 像素,效果如下图所⽰。
import turtled = 0for i in range(5):turtle.fd(200)d += 72turtle.seth(d)效果图:4.⽤ turtle 库的 turtle.fd() 函数和 turtle.left() 函数绘制⼀个六边形,边长为 200 像素,效果如下图所⽰。
import turtle as tfor i in range(6):t.fd(200)t.left(60)效果图:5.使⽤ turtle 库的 turtle.circle() 函数、turtle.seth() 函数和 turtle.left() 函数绘制⼀个四瓣花图形,从左上⾓花瓣开始,逆时针作画,效果如下图所⽰import turtle as tfor i in range(4):t.seth(90 * (i + 1))#90,180,270,360t.circle(200,90)#-90,0,90,180t.seth(-90 + i * 90)t.circle(200,90)⽅法2:import turtlefor i in range(4):turtle.left(90)turtle.circle(50,180)6.使⽤ turtle 库的 turtle.right() 函数和 turtle.circle() 函数绘制⼀个四叶草,效果如下图所⽰。
第一课小海龟画正三角形教学目标:1、初步认识sm all basic语言,了解其基本的操作使用方法。
2、理解什么是对象及其属性、操作方法。
3、认识“Turtle”对象,掌握其属性、操作方法。
4、掌握使用sm all basic命令(语句)画正三角形的方法。
教学重难点:重点:掌握使用对象的属性、操作的方法;难点:理解对象及其属性、操作。
教学方法:演示法、任务驱动法、讲授法教学过程:一、认识Smal l Basic二、命令的分析三、实例教学(教师演示)四、学生动手实践1、经过自主练习,同学们能够成功运行程序吗?最终画出什么图形呢?2、不成功的话,又存在着哪些问题呢?为什么呢?该如何解决呢?五、深入学习1、思考问题:A、小海龟能不能在窗口的任意位置画三角形?B、小海龟能不能“爬”快点?C、小海龟开始“爬”时,头能否不垂直向上,能否改变方向?2、属性、操作的学习3、实例教学六、自主练习任务:请同学们利用已经学习的T urtl e属性和操作,自己动手试一试,画出各种图形。
七、学生演示八、总结第二课小海龟画彩色正五边形教学目标:1、理解变量及其命名规则2、掌握变量的赋值及变量的应用3、认识”Graphi csWin dow”对象及常用属性设置教学重难点重点:变量及其应用难点:理解赋值语句,不要将赋值语句和数学中的等式混为一谈。
教学方法讲授法、演示法、任务驱动法教学过程一、引入教学1、小海龟画一个正三边形。
2、小海龟画正五边形命令:命令:2、疑问?小海龟画正五边形的方法与画正三边形的方法相似:画一条边,旋转一定的角度,然后再画一条边,旋转一定的角度……直到画完。
然而,两者唯一不同的地方就是边数和旋转的角度。
假如小海龟要画正N边形,需要修改旋转的角度,以及画的边长的大小,这时候一个一个地修改,会不会很麻烦呢?为了简化工作,对于边长的大小和旋转的角度,我们能否分别用代表未知数的“符号”来表示呢?比如:Turtle.Move(100)中的“100”能否用未知数“Length”来表示呢?二、变量1、变量:1、我们将程序中代表某个值的符号称为“变量”。
绘制第一个海龟图形功能要求导入海龟模块、创建画笔、移动和旋转画笔等,绘制线段和正方形。
相关要点(1)导入海龟绘图模块(2)创建画笔(3)向前移动(4)画笔旋转实例代码运行结果知识说明海龟绘图(turtle)是Python内置的一个趣味模块。
使用这个模块通过代码创建视觉效果,也可以通过代码影响海龟的移动。
import turtle:将“海龟”导入程序。
Python中import语句的作用是,将Python中自带的或其他编程人员编写好的程序模块导入到自己的程序中使用。
Python一个优势是拥有庞大的模块库。
t=turtle.Pen():让海龟“拿起画笔”。
turtle.Pen()是海龟的画笔(P必须大写),在这里使用t代表海龟的画笔【t被称为“变量”,也可以去其他的名字代替turtle.Pen()】t.forward(100):让海龟移动100步(默认向右移动),其中t代替前面定义的turtle.Pen()。
运行结果的图中,黑色的小三角是小海龟。
三角后面的直线就是小海龟前进的轨迹。
知识说明在使用Python turtle画图时,画完图形窗口一下子消失,退出窗口的几个解决方法:第一种方法:在程序的最后面加上:turtle.exitonclick(),该语句让程序等待用户点击界面后才能够退出第二种方法:在程序的最后面加上:turtle.mainloop(),该语句必须放到最后一句,该句子后面的所有代码都无法执行第三种方法:在程序的最后面加上:turtle.done(),该语句的功能和mainloop(),差不多。
改变海龟的方向功能要求让海龟向右转弯,右转90°。
实例代码运行结果知识说明:right():表示向右转;left():表示向左转,括号里面填写旋转的角度。
right(90)表示向右旋转90°。
海龟画正方形功能要求继续添加代码,将“前进100步”和“向右转90°”重复3遍。
技术与应用tougao1@53APR 2018 NO.08趣学Python神秘的图腾——Python 海龟绘图王丽丽 上海市世界外国语中学相信很多信息技术教师对Logo语言中的小海龟画图都有所了解。
在Python语言中,也有一个内置图形化模块——turtle库,它是由Logo语言发展而来。
海龟绘图,直观而有趣,非常适合初期接触Python学习内容的学生。
本篇内容就从笔者学校的校本课程《阿派历险记》的第2课“神秘的图腾”中海龟绘图的故事开始:话说阿派在一次寻找古代文明的探险旅程中,失足掉落进时光隧道,穿越到已经失落的一处古代文明。
当他(她)缓过神来,矗立在眼前的是一座古村落,那就是让每一个探险家都魂牵梦绕的古代文明世界。
欣喜之余,他(她)赶忙奔去。
进口处有一扇大门,这扇传说了几百年的大门上有一个隐形的图腾,如能正确画出该图案,就能打开大门,通向另一个世界,一个神话的世界,那里有开天辟地的圣物,有操纵天地的伟力……由此,引出本课的学习内容——利用海龟模块绘制图腾。
这节课的教学设计遵循三个原则:①任务分解,由易到难,先绘制简单图腾,再绘制复杂图腾;②自主学习,摸索尝试,通过对比图腾的运行效果和代码,理解海龟模块中基础语句的作用;③模仿学习,不断创新,先模仿再创作,综合运用海龟模块设计复杂图腾。
● 绘制简单图腾,掌握海龟模块的基础语句教师先以范例“长方形图腾”为例,说明如何利用Python的海龟模块绘制简单图形,再给出课堂基本任务:绘制三角形、五角星和圆形等图腾样式。
1.范例学习教师让学生观察范例“长方形图腾.py”的代码和运行效果,猜一猜每一行代码的作用。
这样,将代码和运行效果进行对比,学生才能直观感受和理解每一行代码的作用,加深印象,激发兴趣。
:如表1,利用turtle库的运动方法,控制海龟(黑色箭头)移动。
“#”号是单行注释符号,一般单独一行或在同一行代码之后进行注释,方便读程序和修改。
这在项目合作时,显得尤为重要。