首页 >> 大全

Python的海龟 turtle 库使用详细介绍(画任意多边形,全网最详细)

2023-12-17 大全 21 作者:考证青年

学库,其实就是学数学,而且还能提高对数学和学习的兴趣。库还能够帮助孩子更好地理解几何学和数学概念,比如角度、比例、几何图形的性质等等,是中一个很有趣的库。

前言

库是中一个很有趣的库,可以用来绘制各种图形,比如直线、圆、正方形等等。掌握库的意义在于可以培养孩子的创造力和想象力,让他们通过编写代码来实现自己的创意,同时也可以提高他们的编程能力和逻辑思维能力。此外,库还能够帮助孩子更好地理解几何学和数学概念,比如角度、比例、几何图形的性质等等,学库其实就是学数学,但更有趣味性。

库介绍

库是的一个标准库,提供了一个绘图的海龟机器人,可以使用代码控制海龟机器人的移动和动作,从而实现绘制图形的功能。库支持绘制直线、圆、椭圆、曲线、填充颜色等功能,可以用来绘制各种各样的图形和图案。使用库可以加深对语言的理解和掌握,同时也可以进行艺术创作和教育活动。

内置了库。在1966年, 和Wally 发明了一种专门给儿童学习编程的语言——LOGO语言,它的特色就是通过编程指挥一个小海龟()在屏幕上绘图。海龟绘图( )后来被移植到各种高级语言中,内置了,基本上100%复制了原始的 的所有功能。

库的使用

使用前需先引入库,可以使用 from *或者 。前者使用方法不需要加,后者需要加。

简单示例:

import turtle# 创建一个Turtle对象
t = turtle.Turtle()#turtle.setup(width,height,startx,starty)
# 移动Turtle对象前进100步
t.forward(100)# 向左旋转Turtle对象90度
t.left(90)# 移动Turtle对象前进50步
t.forward(50)# 创建另一个Turtle对象
t2 = turtle.Turtle()# 移动Turtle对象t2前进80步
t2.forward(80)# 绘制线段连接两个Turtle对象的位置
t2.goto(t.xcor(), t.ycor())# 调用done()使得窗口等待被关闭,否则将立刻关闭窗口:
turtle.done()

画出长方形

从简单的开始,画个长方形。

# 导入turtle包的所有内容:
from turtle import *# 设置笔刷宽度:
width(4)# 前进:
forward(200)
# 右转90度:
right(90)# 笔刷颜色:
pencolor('red')
forward(100)
right(90)pencolor('green')
forward(200)
right(90)pencolor('blue')
forward(100)
right(90)# 调用done()使得窗口等待被关闭,否则将立刻关闭窗口:
done()

从程序代码可以看出,海龟绘图就是指挥海龟前进、转向,海龟移动的轨迹就是绘制的线条。要绘制一个长方形,只需要让海龟前进、右转90度,反复4次。

调用width()函数可以设置笔刷宽度,调用()函数可以设置颜色。更多操作请参考库的说明。绘图完成后,记得调用done()函数,让窗口进入消息循环,等待被关闭。否则,由于进程会立刻结束,将导致窗口被立刻关闭。

绘制任意多边形

增加点难度,学习下数学的几何知识。

多边形的内角公式: 内角 =(n-2) * 180 / n,其中n是多边形的边数。

多边形的所有内角之和等于 180*(n - 2),其中 n 是多边形的边数。

海龟库画圆__小海龟画多边形

以正五边形为例,将n设置为5,代入公式得到 (5-2) * 180 / 5 = 3 * 180 / 5 = 108度,因此,正五边形的每个内角为108度。

其实类似这类画图问题,都是数学问题,算对了角度,就很容易画了。

多边形内角公式的推导,来学习下数数学知识。

多边形的内角是指多边形内部的任意两个相邻顶点之间的夹角。

证法一:

因为每个三角形的内角之和为 180°,一个n边行,可以分为n-2个三角形。因此,多边形的内角和等于 180*(n - 2)。那么每个内角=(n-2) * 180 / n。

证法二:

任意凸多边形的外角和都为360°,在一个n边形中,每个顶点的外角度数为360度/n。由于多边形有n个顶点,所以外角度数的总和为360度。因此可以得到公式:n * 外角度数 = 360度,即外角度数 = 360度 / n。内角+外角=180度,可以得到多边形的内角公式:内角 = 180度 - (360度 / n) = (n - 2) * 180度 / n。

例如,在一个三角形中,每个顶点的外角度数为 360° / 3 = 120°。 在一个四边形中,每个顶点的外角度数为 360° / 4 = 90°。 在一个五边形中,每个顶点的外角度数为 360° / 5 = 72°。

举例,画几个正五边形:

from turtle import *
import timedef draw5(x, y):pu()goto(x, y)pd()# set heading: 0seth(0)for i in range(5):fd(40)rt(72)time.sleep(1)for x in range(0, 250, 50):draw5(x, 0)done()

出题,如何绘制出五角星?

根据上述公式,如果要绘制五角星,关键是得知道每次转向多少角度?

五角星是144度。为什么是144度,你知道吗?因为正五边形的内角是108度,则它的的补角是72度,五角星的每个角是180-72-72=36度,因此 每次转向180-36 = 144 度。

#绘制一个五角星
from turtle import *
import timedef drawStar(x, y):pu()goto(x, y)pd()# set heading: 0seth(0)for i in range(5):fd(110)rt(144)time.sleep(1)drawStar(0,0)done()

以此类推,你能绘制出六角星吗?

也很简单,关键是知道六角星的每个角的角度,求得转向角度。根据多边形的内角公式,多边形内角 = (n-2) * 180 / n,其中n是多边形的边数。

_小海龟画多边形_海龟库画圆

先画出每个小三角形,每次转向60度,再画出剩余5个小三角形,总共是6个小三角形组成了六边形。

from turtle import *def triangle():pensize(2)pencolor('black')for i in range(3):fd(60)right(120)def test():colors=['green','red','yellow','pink','purple','orange']speed(1)for i in range(6):begin_fill()fillcolor(colors[i])triangle()fd(60) left(60) #以坐标系为基准,左转60°end_fill()#填充中心颜色fillcolor("blue")begin_fill()for i in range(6):fd(60)left(60)end_fill()ht()#隐藏画笔done()test()

from turtle import *
def triangle(x):pensize(2)pencolor('black')for i in range(3):fd(x)right(120)def main():speed(8)colors=['green','red','yellow','blue']for j in range(1,7):for i in range(4):if j >= 2:triangle(160 + j * 10)left(90)else:fillcolor(colors[i])begin_fill()triangle(160)left(90)end_fill()ht()
main()
done()

猜一猜以下代码将画出什么图形?

from turtle import *
def triangle():pensize(2)pencolor('black')for i in range(3):fd(160)right(120)def test():penup()setpos(-100,140)#画笔移动到一个绝对坐标。(开始默认画笔居中)pendown()speed(5)colors=['green','red','pink','purple','blue','yellow','orange']for i in range(6):fillcolor(colors[i])begin_fill()triangle()fd(160)right(60)end_fill()ht()#执行
test()done()

出题,你能画出如下的风车吗?

画个龙卷风

from turtle import *
# 龙卷风
setup(800,600)pensize(1)speed(6)colors=['green','red','yellow','grey','orange','blue','pink','purple']bgcolor('black')for i in range(1,10):pencolor(colors[i%8])penup()goto(5*i,0)pendown()circle(10*i)done()

同心圆(箭靶)

# 同心圆
from turtle import *
setup(800, 600, 450, 50)
pensize(5)
bgcolor('white')
speed('fastest')
colors = ['blue', 'yellow', 'red', 'green', 'white', 'black', 'orange', 'grey']
for i in range(10, 1, -1):penup()goto(0, -20 * i)pendown()begin_fill()fillcolor(colors[i % 4])circle(20 * i)end_fill()
hideturtle()
done()

主要函数介绍

绝对坐标

海龟初始位置为(0,0),位于画布中央。

海龟默认朝向右侧。(在模块中,可使用()函数(可简写为seth)用于设置海龟的朝向。它的作用是设置海龟当前的前进方向,参数是一个0-360之间的整数,表示海龟的朝向角度。例如(90)将使海龟朝向上方,seth(180)将使朝向指向左方。

行进函数

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了