目录

  • Turtle
  • 让小海龟转弯
  • 画一颗五角星
  • 移动五角星

Turtle

turtle 是 Python 中自带的绘图模块,最初来自于 Wally Feurzeig, Seymour Papert 和 Cynthia Solomon 于 1967 年所创造的 Logo 编程语言。
你可以使用 turtle 控制画笔在画板上画画。而这个画笔是有形状的,默认是一个小箭头,我们可以使用 turtle.shape(‘turtle’) 将其设成一个小海龟。除了变成小海龟外,还支持传入:

  • ‘arrow’(箭头)
  • ‘circle’(圆)
  • ‘circle’(圆)
  • ‘triangle’(三角形)
  • ‘classic’(经典)

默认状态下,我们的画笔是落在画板最中间的,并以此为原点形成了一个坐标系,单位是像素。并且我们根据“上北下南左西右东”的惯例标注四个方向。实际上这个坐标系是不显示的,但我们要知道小海龟实际上是在坐标系内移动的。

小海龟头的朝向是前方(默认朝东),我们可以调用 turtle.forward(3) 让小海龟前进 3 像素,也就是小海龟移动到了坐标系中 (3, 0) 的位置。因为我们的画笔默认是落下的,因此在移动的过程中会留下一道轨迹,即一条长 3 像素的直线。
除了前进之外,当然也有后退。调用 turtle.backward(3) 即可让小海龟向后倒退 3 像素,移动到坐标系中 (-3, 0) 的位置,同样也会留下一条长 3 像素的直线。

注意:后退后小海龟的朝向是不变的。

画笔的颜色默认是黑色的,我们可以使用 turtle.color(‘red’) 改成红色的。当然,你也可以使用 turtle.color(‘yellow’) 改成黄色,使用 turtle.color(‘pink’) 改成粉色等等。
除了使用颜色的英文外,我们还能传入 16 进制的 RGB 色值。RGB 色值能表示出 1600 多万种颜色,比如 #000000 表示黑色,#FFFFFF 表示白色,#FF0000 表示红色等。

现在我们尝试用小乌龟画一个100像素长的直线

import turtle
turtle.shape('turtle')
turtle.color('brown')
turtle.backward(100)
# turtle.forward(100)
turtle.done()

结果:

注意点:
①这个地方前进后退都可以
②画完图之后一定记得要turtle.done(),否则程序在画完之后会立即退出,你会看不到结果,造成一种闪退的假象。

让小海龟转弯

转弯其实很简单,分为左转和右转。

  • 左转是 turtle.left()
  • 右转是 turtle.right()

它俩的参数是角度,比如 turtle.right(90) 表示右转 90 度。同理,turtle.left(90) 表示左转 90 度。
转向后,小海龟的朝向就变了。再调用 turtle.forward() 会朝着转向后小海龟头指着的方向前进。

我们可以试着画一个正方形:

import turtleturtle.forward(100)
turtle.right(90)
turtle.forward(100)
turtle.right(90)
turtle.forward(100)
turtle.right(90)
turtle.forward(100)
turtle.right(90)#简化一下
import turtlefor i in range(4):turtle.forward(100)turtle.right(90)

结果:

turtle.left() 和 turtle.right() 每次转向都是根据当前朝向来转的,当多次转向后你可能就不知道现在朝向哪了。因此,我们还可以使用 turtle.setheading() 来直接设置朝向。turtle.setheading() 的参数也是角度,只是这个角度对应的朝向是固定的。具体对应方式如下图所示:

因此,我们可以直接调用 turtle.setheading(0) 让小海龟朝东,调用 turtle.setheading(180) 让小海龟朝西。当然,0 到 360 度之间的角度都是可以的,调用 turtle.setheading(45) 可以让小海龟朝向东北方向。

之前显示小海龟是为了方便理解朝向,现在弄清楚了朝向我们就可以将小海龟隐藏了。隐藏小海龟可以加快绘图的速度,并且最后画出的图上也不会有个小海龟影响画风。
要隐藏小海龟非常的简单,只要调用 turtle.hideturtle() 即可。当你想再次显示小海龟时,调用 turtle.showturtle() 即可。

画一颗五角星

五角星每个角的度数都是 36 度,用 180 - 36 得到对应的补角为 144 度。如下图所示:

五角星的五条线的长度是一样的,并且角度也一样。那么,我们就可以用循环来画五角星。五角星要画 5 条线,因此要循环 5 次。每次循环都除了画一条线,还要旋转特定的角度。从上图可知,每次向右旋转 144 度即可。所以画五角星的代码如下:

import turtleturtle.color('red')
turtle.hideturtle()for i in range(5):turtle.forward(100)turtle.right(144)

结果:

在这个基础上我们还可以给五角星上色。
相关方法:
①turtle.color() 会将画笔颜色和填充颜色都设置成一个
②turtle.fillcolor() 能单独设置填充颜色
③turtle.pencolor() 单独设置画笔颜色
④turtle.begin_fill() 开始填充
⑤turtle.end_fill() 结束填充

我们只要在画五角星之前调用 turtle.begin_fill(),在画完五角星之后调用 turtle.end_fill(),我们画的五角星就会被填充上我们设置好的颜色了。

import turtleturtle.color('red')
turtle.hideturtle()turtle.begin_fill()  # 开始填充
for i in range(5):turtle.forward(100)turtle.right(144)
turtle.end_fill()  # 结束填充

结果:

移动五角星

你可能已经发现了,这颗五角星有些“歪”,不在画板的正中间。如果我们脑补出坐标系的话,我们的五角星处于的位置其实是下面这样的:

因此,我们需要将我们的五角星先左移再上移,让五角星处于坐标系的中间,就像下面这样:

我们做不到直接移动五角星,但我们可以移动画笔的初始位置。只要将画笔的初始位置往左上方移动一点,这样我们的五角星就处于坐标系的最中间了。上图中画笔的初始位置在坐标系中大概是 (-50 ,20),我们可以调用 turtle.goto(-50, 20) 来移动画笔的位置。

turtle.goto(x, y)
将画笔移动到指定位置
第一个参数是 x 轴的坐标,第二个参数是 y 轴的坐标。

但直接移动画笔位置是有问题的,因为我们的画笔一直处于落下的状态,移动的过程中也会画出一条直线。我们可以调用 turtle.penup() 将画笔抬起,这样移动的过程中就不会画线。等需要时再调用 turtle.pendown() 将画笔落下开始绘图。

turtle.penup() 将画笔抬起
turtle.pendown() 将画笔落下

所以,将边长为 100 像素的五角星移动坐标系中央的完整代码如下:

import turtleturtle.color('red')
turtle.hideturtle()
turtle.penup()
turtle.goto(-50, 20)
turtle.pendown()turtle.begin_fill()
for i in range(5):turtle.forward(100)turtle.right(144)
turtle.end_fill()

#一闪一闪亮晶晶
我们还可以画一堆星星,实现“一闪一闪亮晶晶,满天都是小星星”的效果~✨
因为画的星星比较多,我们先把之前画五角星的代码封装成一个函数:

import turtledef draw_star():turtle.color('white')turtle.hideturtle()turtle.begin_fill()for i in range(5):turtle.forward(10)turtle.right(144)turtle.end_fill()

星星的光是白色的,因此我将颜色设置成了白色(white)。并且,因为是小星星,我将边长设成了 10 像素。画一个小星星的方法搞定了,接下来是画满天星,就画 50 个吧!满天星的位置都是随机的,我们需要用到 random 模块生成随机位置。
随机画 50 颗小星星的代码如下:

import turtle
from random import randintdef draw_star():turtle.color('white')turtle.hideturtle()turtle.begin_fill()for i in range(5):turtle.forward(10)turtle.right(144)turtle.end_fill()for i in range(50):turtle.speed(0)  # 最快速turtle.penup()x = randint(-150, 150)  # x 轴y = randint(-100, 100)  # y 轴turtle.goto(x, y)turtle.pendown()draw_star()

上述代码涉及的方法:
①turtle.speed(x)
控制绘图速度
turtle.speed(x) 的参数是 0-10 的整数,其中 1-10 数字越大,绘图速度越快。1 最慢,10 最快,默认是 6。而 0 表示没有动画效果,因此 0 比 10 的速度还要快。
②turtle.write()
在画板上写字
参数为要写的内容。我们还能设置字的字体、大小等,比如turtle.write(‘By CSDN’, font = (‘SimHei’, 12, ‘bold’)),font 参数是个元组,其中第一个是字体,第二个是字体大小,最后一个是字重。

完整代码:

import turtle
from random import randintdef draw_star():turtle.color('black')turtle.hideturtle()turtle.begin_fill()for i in range(5):turtle.forward(10)turtle.right(144)turtle.end_fill()for i in range(50):turtle.speed(0)turtle.penup()x = randint(-150, 150)y = randint(-100, 100)turtle.goto(x, y)turtle.pendown()draw_star()turtle.penup()
turtle.goto(0, -130)
turtle.pendown()
turtle.write('By CSDN',  font = ('SimHei', 12, 'bold'))

结果:

Python绘图模块 -- turtle相关推荐

  1. python中的绘图模块turtle的使用

    python中的绘图模块turtle的使用(7-20190125) 文章目录: 还是从一个有趣的小应用开始,turtle的骚操作吧 最近小猪配齐比较流行,下面用turtle绘制一个粉红色的小猪猪吧-- ...

  2. python樱花代码_使用python图形模块turtle库绘制樱花、玫瑰、圣诞树代码实例

    今天为大家介绍几个Python"装逼"实例代码,python绘制樱花.玫瑰.圣诞树代码实例,主要使用了turtle库 Python绘制樱花代码实例 动态生成樱花 效果图(这个是动态 ...

  3. 用python画圣诞树-使用python图形模块turtle库绘制樱花、玫瑰、圣诞树代码实例

    今天为大家介绍几个Python"装逼"实例代码,python绘制樱花.玫瑰.圣诞树代码实例,主要使用了turtle库 Python绘制樱花代码实例 动态生成樱花 效果图(这个是动态 ...

  4. python使用turtle库绘制一个100长度的十字架_使用python图形模块turtle库绘制樱花、玫瑰、圣诞树代码实例...

    使用python图形模块turtle库绘制樱花.玫瑰.圣诞树代码实例 发布时间:2020-08-22 15:57:19 来源:脚本之家 阅读:76 作者:Soul fragments 今天为大家介绍几 ...

  5. 绘制图形可以使用什么python数据库_使用python图形模块turtle库绘制樱花、玫瑰、圣诞树代码实例...

    今天为大家介绍几个Python"装逼"实例代码,python绘制樱花.玫瑰.圣诞树代码实例,主要使用了turtle库 Python绘制樱花代码实例 动态生成樱花 效果图(这个是动态 ...

  6. 海龟编程 python绘图工具turtle库的用法 turtle库使用方法大全,画笔设置 画布设置 绘图设置,画笔粗细,画笔颜色, 画笔速度。Python二级必须会的命令(已获取证书)

    目录 海龟编程 python绘图工具turtle库的用法 画布: 画笔 画笔运动命令: 画笔的控制命令: 全局控制命令: 简单turtle绘图示例: 圆中方: 三色同心圆: 四个圆中方: 螺旋正方: ...

  7. python绘图模块概述

    python标准库中包含了下列图形绘制相关模块. 1,tkinter :画布绘图 2,turtle:海龟绘图 常用的开源绘图模块如下: (1) Matplotlib (官网:http://matplo ...

  8. Python绘图:turtle库基础语法介绍

    目录 一.turtle库的导入 二.绘图命令介绍 1.  画布属性设置 2.  画笔属性设置 3.  移动画笔和转角绘图 4.  图形绘制与图形填充 三.turtle绘图实例:绘制太阳花 Python ...

  9. 【Python绘图】turtle库乌龟绘图官方文档详细整理

    [函数表格整理在最下方] Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x.纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面 ...

  10. python绘图模块pandas_python绘图:matplotlib和pandas的应用

    在进行数据分析时,绘图是必不可少的模式探索方式.用Python进行数据分析时,matplotlib和pandas是最常用到的两个库. 1.matplotlib库的应用 准备工作如下:打开ipython ...

最新文章

  1. YOLOv4-5D:一种高效的自动驾驶物体检测器
  2. 网络15软工个人作业5——软件工程总结
  3. javaScript——内置函数1
  4. Lodash-一个一致性、模块化、高性能的 JavaScript 实用工具库介绍
  5. 抖音做综艺,差点意思
  6. Fiddler抓包 - 系统找不到相应的文件FSE.exe,未能找到路径CustomRules.js的一部分,未能加载程序或程序集 “fiddle“ 或它的依赖项
  7. 计算机无法 鼠标没反应,鼠标插电脑上没反应怎么回事_鼠标连接电脑没反应的解决步骤...
  8. java4.25生成车牌号_泸牌16年涨882倍 超25万人拍一张车牌为哪般?
  9. 第十七周助教工作总结——NWNU李泓毅
  10. 关于SQL Server中left join on and 用法的介绍
  11. 「GoTeam 招聘时间」深信服科技 Go 开发工程师(成都)
  12. 澤火革 (易經大意 韓長庚)
  13. office@microsoft365@官方在线安装@第三方离线下载并安装(word+ppt+excel)
  14. JSON数据 与 JSON数据的使用
  15. python 完全面向对象_python之面向对象
  16. 你知道什么是 短路与 和 短路非吗 ???
  17. 阿里CEO张勇解读入股高鑫零售:婚后怎么过日子已经谈得很好了
  18. 文件操作 - 三元运算/chardet/文件操作r w/文件的操作方法
  19. 建议收藏!财务报表制作的要点
  20. 可用于 主成分分析、R型因子分析、简单相应分析 的R语言函数总结

热门文章

  1. 直方图均衡化的数学原理
  2. 基于Java毕业设计大学生旅游拼团网站源码+系统+mysql+lw文档+部署软件
  3. 斐讯k2路由器刷固件一条龙——从小白到大神
  4. vs2013下载安装
  5. 8086CPU的寻址方式
  6. OFDM系统中的信号检测算法分类和详解
  7. 为什么标签天线振子长度小于半个波长?
  8. 如何实现阿里云短信接口使用短信业务
  9. javascript的几种继承方式
  10. 测试wi-fi信号软件是什么,Wi-Fi Inspector - WIFI 信号检测及连接工具