python中的turtle

turtle个别指令

初始箭头默认指向为东(右)

往前(右)三个格:turtle.forward(3)

往后(左)三个格:turtle.backward(3)

往左转90度:turtle.left(90)

往右转90度:turtle.right(90)

画笔设置成小海龟:turtle.shape('turtle')

小海龟朝东:turtle.setheading(0)

小海龟朝西:turtle.setheading(180)

将画笔抬起:turtle.penup()

移动坐标系:turtle.goto(-50, 0)

将画笔落下:turtle.pendown()

为图画署名:turtle.write('By 黄帮主',  font = ('SimHei', 12, 'bold'))

【(箭头:arrow)、(圆:circle)、(正方形:square)、(三角形:triangle)和 (经典:classic)】

turtle简介

turtle 是 Python 中自带的绘图模块,最初来自于 Wally Feurzeig, Seymour Papert 和 Cynthia Solomon 于 1967 年所创造的 Logo 编程语言。

大家有兴趣可以去官方文档了解更多。官方文档地址:turtle --- 海龟绘图 — Python 3.12.4 文档

你可以把教学环境中运行结果区域想象成一个画板,而你使用 turtle 控制画笔在画板上画画。而这个画笔是有形状的,默认是一个小箭头,我们可以使用 turtle.shape('turtle') 将其设成一个小海龟。除了变成小海龟外,还支持传入 'arrow'(箭头),'circle'(圆),'square'(正方形),'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 表示红色等。这里只是提及一下,不要求掌握,有兴趣的同学可以自行了解更多。

编程练习

说了这么多,试一下你就知道 turtle 绘图究竟是怎么回事了。

下面向前画了一条长 100 像素的红色直线,请你按要求改写代码。

要求:

  1. 将画笔形状设置为小海龟;
  2. 将画笔颜色设置成黄色(yellow);
  3. 向后画一条长 100 像素的直线。
import turtleturtle.shape('turtle')
turtle.color('yellow')
turtle.backward(100)

我们初步了解了 turtle,并学会了使用 turtle 画一条任意颜色的直线了。前后移动我们学会了,接下来跟着我一起学习如何让小海龟转弯!

注意:如果你在本地环境使用 turtle 画图,图形绘制完毕后程序会自动退出。需要在代码最后加上 turtle.done() 来防止程序自动退出。

转弯其实很简单,分为左转和右转。左转是 turtle.left(),右转是 turtle.right()。它俩的参数是角度,比如 turtle.right(90) 表示右转 90 度。同理,turtle.left(90) 表示左转 90 度。

转向后,小海龟的朝向就变了。再调用 turtle.forward() 会朝着转向后小海龟头指着的方向前进。想想一下,重复 4 次向前走 100 像素然后右转 90 度会画出什么形状?

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)

想到了吗?是一个宽 100 像素的正方形!上面代码重复了四次,我们可以用循环来简化一下:

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)

这样,我们就得到了一个边长 为 100 像素的五角星了。但这还不够,我们还要给五角星上色。上色需要设置填充颜色,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()  # 结束填充

编程练习

说了这么多,你肯定很好奇用 Python 画出来的五角星长什么样了吧,那就赶快来画一个看看吧!

补全下列代码,画出一个漂亮的五角星!

提示:你也可以试着改变五角星的颜色和大小哦~

import turtleturtle.color('red')  # 画笔颜色和填充颜色都设为红色
turtle.hideturtle()turtle.begin_fill()
for i in range(5):turtle.forward(100)turtle.right(180 - 36)
turtle.end_fill()
 

移动五角星

我们现在已经成功画出一颗五角星啦!(*^▽^*)

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

 

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

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

但直接移动画笔位置是有问题的,因为我们的画笔一直处于落下的状态,移动的过程中也会画出一条直线。我们可以调用 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()
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/27065.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

r语言数据分析案例25-基于向量自回归模型的标准普尔 500 指数长期预测与机制分析

一、背景介绍 2007 年的全球经济危机深刻改变了世界经济格局,引发了一系列连锁反应,波及各大洲。经济增长停滞不前,甚至在某些情况下出现负增长,给出口导向型发展中国家带来了不确定性。实体经济受到的冲击尤为严重,生…

ATFX汇市:日本央行维持0.1%利率不变,植田和男发言偏鹰

ATFX汇市:北京时间11:25,日本央行公布6月利率决议结果,宣布维持0~0.1%的基准利率区间不变,此前市场预期其将再次加息。消息公布后,USDJPY的5分钟内从157.09上涨至157.70,涨幅61基点。25分钟之后&#xff0c…

Ollama在MacOS、Linux本地部署千问大模型及实现WEB UI访问

一、前言 阿里通义千问发布了Qwen2,提供了0.5B~72B的量级模型,在​​Ollama官网​​可以搜索qwen2查看,本文提供了Ollama的下载(在线/离线安装)、Ollama运行模型、使用WebUI连接模型以及页面简单配置。 …

Leetcode刷题笔记10

14. 最长公共前缀 14. 最长公共前缀 - 力扣(LeetCode) 首先,检查边界条件 如果输入的字符串数组为空,直接返回空字符串。 然后使用minmax_element函数找到数组中字典序最小和最大的字符串。 因为公共前缀一定会出现在字典序最…

c++实战知识点

c实战知识点 一、概述1.数据2.C11的原始字面量3.数据类型的别名4.const修饰指针5.void关键字6.内存模型7.二级指针8.函数指针和回调函数9.数组10.C风格字符串11.二维数组用于函数的参数行指针(数组指针) 12.引用引用与const 13.各种形参的使用场景14.重载…

Parallels Desktop for Mac 19.4.0 (build 54570) - 在 Mac 上运行 Windows

Parallels Desktop for Mac 19.4.0 (build 54570) - 在 Mac 上运行 Windows Parallels Desktop 19 请访问原文链接:Parallels Desktop for Mac 19.4.0 (build 54570) - 在 Mac 上运行 Windows,查看最新版。原创作品,转载请保留出处。 作者…

Linux 基本指令2

cp 指令 cp[选项]源文件 目标文件 将源文件的内容复制到目标文件中,源文件可以有多个,最后一个文件为目标文件,目标文件也可以是一段路径,若目的地不是一个目录的话会拷贝失败。若没有路径上的目录则会新建一个,若源是…

特殊医学用途配方食品注册数据库

在这个追求健康的时代,特殊医学用途配方食品(简称特医食品)已成为众多特殊需求人群的膳食选择。它们不仅满足了特定疾病状态下的营养需求,更是病患康复之路上的重要伴侣。然而,面对市场上琳琅满目的特医食品&#xff0…

只要往前走,至少能到达自己所能做到的部分

很多说自己力不足的人,往往是中道而废,在通往目标的途中就失败了。 无论怎么力不足,只要往前走,至少也能到达自己所能做到的部分。 《刻意练习》有个原则:如果有人能做到一件事,其他人就都能做到。 &…

优维运营治理三件套:可用性x性能x容量管理

对于系统/应用运维人员,日常工作中需要保证系统/应用的可用性、稳定性和关注系统/应用的性能表现。为了帮助IT人员更好地管理和优化企业的系统和应用,我们引入了三大关键能力:可用性管理、性能管理和容量管理。这些能力不仅能够帮助IT人员发现…

【ai】blender4.1 安装插件

开源软件,所以资料充足插件及配置 下载插件插件是python开发的 编辑中的偏好设置 点击选中 点击一键切换中文英文 切换主题 插件源码

AI绘画SD下载安装教程,学习AI绘画软件必看(SD怎么安装,SD安装教程,安装stable diffusion软件必看)

大家好,我是设计师阿威 最近很火很有趋势的便是AI人工智能了,提到AI大家肯定都不陌生(AIGC)大家也很熟知,但是要问应用的工具有哪些肯定很多人说不出来几个,但是比较厉害的就是大众所认识的SD-stable diff…

力扣每日一题 6/14 动态规划+数组

博客主页:誓则盟约系列专栏:IT竞赛 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ 2786.访问数组中的位置使分数最大【中等】 题目: 给你一个下标…

JavaSE---类和对象(上)

1. 面向对象的初步认知 1.1 什么是面向对象 Java是一门纯面向对象的语言(Object Oriented Program,简称OOP),在面向对象的世界里,一切皆为对象。 面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。用面向对象…

如何用R语言ggplot2画高水平期刊散点图

文章目录 前言一、数据集二、ggplot2画图1、全部代码2、细节拆分1)导包2)创建图形对象3)主题设置4)轴设置5)图例设置6)散点颜色7)保存图片 前言 一、数据集 数据下载链接见文章顶部 处理前的数据…

免杀笔记 ----> 后续更新安排

前一段时间,我疯狂更新了内网,本来想把NTLM-Relay给更上的,但是计划安排不允许了,之后后续再给大家进行深入的内网更新了!! :: 真不是我托更 嘻嘻嘻~~~ 说回正题,接下来…

算法体系-22 第二十二节:暴力递归到动态规划(四)

一 最小距离累加和 1.1 描述 给定一个二维数组matrix,一个人必须从左上角出发,最后到达右下角 沿途只可以向下或者向右走,沿途的数字都累加就是距离累加和 返回最小距离累加和 1.2 分析

GitLab教程(六):通过rebase来合并commit

文章目录 1.理解和操作rebase(1)rebase的逻辑(2)实践演示 2.rebase的优缺点 1.理解和操作rebase (1)rebase的逻辑 Git Rebase的基本逻辑是将一个分支的更改移到另一个分支上,同时看起来好像这…

流批一体计算引擎-9-[Flink]中的数量窗与时间窗

1 数量窗 1.1 数量滚动窗口 0基础学习PyFlink——个数滚动窗口(Tumbling Count Windows) 1.1.1 代码分析 Tumbling Count Windows是指按元素个数计数的滚动窗口。 滚动窗口是指没有元素重叠的窗口。 (1)构造了一个KeyedStream,用于存储word_count_data中的数据。…

【Linux】Linux环境基础开发工具_6

文章目录 四、Linux环境基础开发工具gdb 未完待续 四、Linux环境基础开发工具 gdb 我们已经可以写代码了,也能够执行代码了,但是代码错了该如何调试呢?Linux中可以使用 gdb 工具进行调试。 我们写一个简单的程序: 但是我们尝试…