Python Turtle库详解

article/2025/9/19 17:47:57

turtle的英文意思是“海龟”,今天学习的turtle库也叫作海龟绘图库。想象一下一只小海龟在海面上游泳,海龟游过的轨迹变成了一幅幅有趣的图案。

1. Turtle的绘图窗体布局

美术生作画时必不可少的两样东西:画纸和画笔。画纸在画板上,画板放在画架上。当我们需要使用Turtle来进行绘画时,画板就是我们的电脑显示器,画纸就是我们的Turtle窗口,画笔就是那一条小海龟,海龟游啊游啊一幅画就形成了。
图片来源:百度图片
我们将显示器左上角的坐标定义为 (0, 0),将Turtle绘图窗口的左上角定义为我们绘图时的原点,它相对于整个显示器的坐标为(startx, starty)。
在这里插入图片描述
可以使用 Turtle.setup(width, height, startx, starty) 函数来设置启动Turtle绘图窗口的位置和大小,以下是参数解释:

  • width:Turtle 绘图窗口的宽度。
  • height:Turtle 绘图窗口的宽度
  • startx:Turtle 绘图窗口距显示器左侧的距离
  • starty:Turtle 绘图窗口距显示器顶部的距离

注:

  • width 和 height 如果值是整数,则表示该窗口占据多少个像素的宽度;如果为小数,则为宽度占据显示器的百分比,默认width占据 50%,height占据70%。
  • 如果 startx 和 starty 省略,则窗口默认处于显示器的正中心。

2. Turtle空间坐标体系

2.1 绝对坐标

如下图所示,我们将画布的正中心当做绝对坐标(0,0)。海龟默认是向右侧运动的,所以我们将Turtle绘图窗体的右方向定义为 x 轴,上方向定义为 y 轴。
绝对坐标里常用函数:

  • turtle.goto(x, y):指定 x 和 y 的值,海龟将会到达坐标为(x, y)的位置。
    在这里插入图片描述

2.2 海龟坐标

站在海龟的角度,无论海龟当前的行进方向是朝向哪个角度的,都叫做前进方向,反向就后退方向,海龟运行的左侧叫做左侧方向,右侧叫做右侧方向。
在这里插入图片描述
下面是常用的用于控制海龟的函数:

  • turtle.forward(distance):控制海龟前进 distance 个单位像素的距离。forwad 可以简写为 fd,即 turtle.forward(distance) 和 turtle.fd(distance) 的效果是一样的。
  • turtle.backward(distance):控制海龟后退 distance 个单位像素的距离。backward可以简写为 ,即 turtle.backward(distance) 和 turtle.bk(distance) 的效果是一样的。
  • turtle.circle(r,angle):以海龟当前位置,左侧的某一个点为圆心,半径为 r 的距离,画一个角度值为angle 的弧形。如果没有指定 angle 的值,则默认为360度,也就是画一个圆。r 和 angle 的值可以为负数,意为反方向。注意,顺时针旋转的角度度数值为负数,逆时针的为正数。
    在这里插入图片描述

3. Turtle 的角度坐标体系

3.1 绝对角度

turtle建立了一个空间坐标体系,那么在空间坐标中,海龟行进的方向也有一个角度,同样分为绝对角度和海龟角度。
对于绝对角度来讲,绝对坐标的x正轴表示0度或360度,y正轴表示90度或-270度,x负轴表示180度或-180度,y负轴表示270度或-90度。
相关的函数有:
turtle.seth(angle):设置 angel 的值用于改变海龟行进方向,只改变方向不行进。
在这里插入图片描述

3.2 海龟角度

对于海龟角度来讲,为了更好的改变海龟的行进方向,使用左右的方式来改变它的行进角度。
相关的函数有:
turtle.left(angle):让海龟向左改变 angle 个角度
turtle.right(angle):让海龟向右改变 angle 个角度
在这里插入图片描述

4. Turtle 的 RGB 色彩体系

RGB即Red、Green、Blue三种颜色的组合,这三种颜色的组合能够覆盖视力所能感知到的素有颜色。RGB每种颜色的取值范围为0-255之间的整数或者0-1之间的小数。常用的RGB颜色:

英文名词RGB整数值RGB小数值中文名词
white(255,255,255)(1,1,1)白色
yellow(255,255,0)(1,1,0)黄色
black(0,0,0)(0,0,0)黑色
blue(0,0,255)(1,1,1)蓝色

更多更好看的颜色,可以访问以下链接:

https://www.runoob.com/html/html-colorvalues.html

turtle库默认采用RGB的小数值来表示颜色,当然也可以使用函数turtle.colormode(mode)来切换RGB数值模式。当mode为1.0时表示采用小数值来表现RGB,当mode为255时表示采用整数值来表现RGB。

与颜色设置相关的函数:turtle.color()、turtle.pencolor()、turtle.fillcolor(),由于设置画笔颜色和填充色;还有turtle.bgcolor(),设置窗体背景色。

5. Turtle常用函数

5.1 画笔控制函数

  • turtle.penup() 或者 turtle.pu() 或者 turtle.up():抬笔,移动时不绘图

  • turtle.pendown() 或者 turtle.pd() 或者 turtle.down():落笔,移动时绘图

  • turtle.pensize(width):设置画笔尺寸

  • turtle.width(width):画笔宽度

  • turtle.pencolor(*args):如果不给参数,则返回当前画笔颜色,给出参数则是设定画笔颜色。设置颜色有三种方式的参数,pencolor(colorstring)、pencolor((r,g,b))和pencolor(r,g,b)

5.2 运动控制函数

  • turtle.forward(distance) 或者 turtle.fd(distance):前进distance像素

  • turtle.backward(distance) 或者 turtle.bk(distance) 或者 turtle.back(distance):后退distance像素

  • turtle.circle(r,angle):以画笔(海龟)左侧为圆心,半径为r像素,画angle度的圆形。注意:海龟方向同时发生angle度变化

  • turtle.goto(x,y)、setpos(x,y)、setposition(x,y):由当前坐标前往指定坐标,这里使用绝对坐标,但画笔方向不会改变

5.3 方向控制函数

  • turtle.setheading(angle) 或者 turtle.seth(angle):以绝对角度改变方向

  • turtle.left(angle) 或者 turtle.lt(angle):以海龟角度向左改变方向

  • turtle.right(angle) 或者 turtle.rt(angle):以海龟角度向右改变方向

6. 绘图实例

6.1 绘制一个正方形

import turtle
turtle.pensize(2)
for i in range(4):turtle.fd(150)turtle.left(90)
turtle.done()

6.2 绘制一个正六边形

import turtle
turtle.pensize(2)
for i in range(6):turtle.fd(150)turtle.left(60)
turtle.done()

END:声明

博客内容不得用于商业用途,仅做学习交流。部分配图来自于中国大学MOOC网北理工嵩天老师的《Python语言程序》课程。
课程传送门:《Python语言程序设计》


http://chatgpt.dhexx.cn/article/eGXsgqKt.shtml

相关文章

turtle具体详解

一、turtle库概述: turtle(海龟)库是turtle绘图体系python的实现; turtle绘图体系:1969年诞生,主要用于程序设计入门; turtle库是python的标准库之一;属于入门级的图形绘制函数库…

Python入门基础知识(turtle库)

turtle库的概述 turtle(海龟)库是turtle绘图体系的Python实现。 turtle绘图体系:1969年诞生,主要用于程序设计入门,是Python语言的标准库之一,入门级的图形绘制函数库。(Python计算生态 标准…

turtle 库

1.turtle库概述 turttle(海龟)库是turtle绘图体系python的实现。 turtle :1969年诞生,作用:程序设计入门 turtle库是python的标准库之一,入门级别的图形绘制函数 python 计算生态标准库第三方库 标准库:解释器直接安装到操作…

python---turtle库(详解)

turtle库 初识turtle库(python内置库)turtle库基本方法画布(canvas)画笔属性 应用实例彩色python(蟒蛇)多等边三角形无角正方形六角星你猜风车(为什么不会转呢?)龙卷风同心圆(箭靶)五环海绵宝宝 https://blog.csdn.net…

DGL分布式流程

DGL分布式流程 官网documentinteracting processesAPIinitializeDistGraphServerload_partition DLpack DisGraphnum_nodes(), num_edges()g.ndata DisTensorDisEmbeddingDisSamplinglow-levelhigh-level 异构DGL分布式脚本文件copy_files.pylaunch.pyDDP Test DGL 单机版data处…

【HNU分布式与云计算系统】MPI实现矩阵乘矩阵运算

MPI实现矩阵乘矩阵运算 实验环境 操作系统:Ubuntu 20.04 编程语言:C 实验原理 什么是MPI MPI是一个跨语言的通讯协议,用于编写并行计算机。支持点对点和广播。MPI是一个信息传递应用程序接口,包括协议和和语义说明&#xff…

视频矩阵的作用及原理

视频矩阵是指通过阵列切换的方法将m路视频信号任意输出至n路监看设备上的电子装置,一般情况下矩阵的输入大于输出即m>n。有一些视频矩阵也带有音频切换功能,能将视频和音频信号进行同步切换,这种矩阵也叫做视音频矩阵。目前的视频矩阵就其…

spark实现大矩阵运算

目录 一、MapReduce实现大矩阵相乘 二. Spark中分布式矩阵使用 一、MapReduce实现大矩阵相乘 超大矩阵相乘(亿级别)的MapReduce实现思想详解 地址:https://blog.csdn.net/heyuanhao1989/article/details/50218911 MapReduce实现大矩阵乘…

基于Spark框架的大型分布式矩阵求逆运算实现(二)——大型下三角矩阵求逆运算

基于实际需要,需要对五百万阶的方阵进行求逆运算,但查看Spark(v. 2.2.0)的官方api并没有此方面的信息,就自己尝试着实现了一个; 先说一下原理: 对于一个可逆矩阵A,必然会得到它的唯…

一文看懂大数据矩阵运算利器-Spark Distributed Matrix

如今是大数据的时代,数据呈指数型增长,那么如何利用这些数据?离不开大数据计算,今天小普给大家介绍的是:Spark的分布式计算框架,它能很好地适配大数据场景下的计算任务。 【相似度计算】是金融领域或商品推…

紧跟时代步伐,朗强HDMI分布式矩阵可以通过手机来控制

近年来,随着AV与IT不断的深入融合,分布式技术成为信号处理行业的一大热点。朗强科技作为音视频信号行业领导者,一直以来不断加大研发力度,不断推出引领市场潮流的产品。现隆重推出一款集大屏拼接、显示控制功能于一体的分布式矩阵…

朗强:紧跟时代步伐!HDMI分布式矩阵可以通过手机来控制!

近年来,随着AV与IT不断的深入融合,分布式技术成为信号处理行业的一大热点。朗强科技作为音视频信号行业领导者,一直以来不断加大研发力度,不断推出引领市场潮流的产品。现隆重推出一款集大屏拼接、显示控制功能于一体的分布式矩阵…

编码分布式矩阵乘法(Coded Distributed Matrix Multiplication, CDMM)问题简单介绍

许多现代分布式计算框架都会遇到大规模分布式矩阵乘法问题,即计算两个大规模矩阵和的乘积,如MapReduce、Spark。由于分布式计算系统会出现的无法预测的时延,主节点(master node)必须等到最慢的工作节点(worker node)完…

手把手推导分布式矩阵乘的最优并行策略

作者|郭冉、李一鹏、柳俊丞、袁进辉 常用深度学习框架的自动并行机制还不够完善,还需要用户根据经验来配置并行方式,这给开发者带来了不小的智力负担。因此,实现自动最优并行就成为一个有趣的课题。 矩阵乘是深度学习最常用的底层…

CAP原理应用与分布式矩阵

CAP原理是描述一致性,可用性,和分区兼容性的理论,但这个原理用在实际情况下时往往让人很困惑。什么样的情况适用于这样的原理?有哪些先决条件?如何创建一个同时满足一致性和可用性,分区兼容性的分布式系统&…

【Scala-spark.mlib】分布式矩阵——分布式计算的基石与利器

分布式矩阵 1. mlib.linalg.distributed包2. DistributedMatrix特质3. BlockMatrix类4. CoordinateMatrix类5. IndexedRowMatrix类6. RowMatrix类7. 小结 1. mlib.linalg.distributed包 矩阵计算是很多科学计算的重要步骤,而分布式矩阵存储则是分布式计算的基础。根…

Spark Mllib里的分布式矩阵(行矩阵、带有行索引的行矩阵、坐标矩阵和块矩阵概念、构成)(图文详解)...

不多说,直接上干货! Distributed matrix : 分布式矩阵  一般能采用分布式矩阵,说明这数据存储下来,量还是有一定的。在Spark Mllib里,提供了四种分布式矩阵存储形式,均由支持长整形的行列数和…

Shiro权限管理详解(授权和注解开发)【面试点】

Shiro权限管理详解 1. 权限管理1.1什么是权限管理1.2用户身份认证1.2.1 概念1.2.2 用户名密码身份认证流程1.2.3 关键对象 1.3 授权1.3.1 概念 1.3.2 授权流程1.3.3 关键对象1.3.4 权限模型1.3.5 权限分配1.3.6 权限控制1.3.6.1 基于角色的访问控制 1. 权限管理 1.1什么是权限…

Shiro权限管理之自定义Realm

文章目录 1. SpringBoot集成shiro快速入门1. shiro 用户认证2. shiro用户授权 2. SpringBoot 使用IniRealm进行认证授权3. Spring Boot 使用 JdbcRealm 进行认证授权1. 数据库驱动2. 数据库表结构3. 创建 testJdbcRealm方法4. 更改数据库表名 4. Spring Boot 使用自定义 Realm …

权限管理框架Shiro简介

Shiro 1、shiro简介 shiro是一个强大易用的java安全框架,可以帮助我们完成:身份认证、授权、加密、会话管理、与web集成、缓存等。 包括了三个核心组件:Subject、SecurityManage和Realm 外部架构 内部架构 authentication(认证…