初探海龟绘图

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm=1001.2014.3001.5501

海龟绘图是Python内置的模块,在使用前需要导入该模块,可以使用以下几种方法导入:

l  直接使用import语句导入海龟绘图模块,代码如下:

import turtle

通过该方法导入后,需要通过模块名来使用其中的方法、属性等。

l  在导入模块时为其指定别名,代码如下:

import turtle as t

通过该方法导入后,可以通过模块别名t来使用其中的方法、属性等。

l  通过from…import语句导入海龟绘图模块的全部定义,代码如下:

from turtle import *

通过该方法导入后,可以直接使用其中的方法、属性等。

了解海龟绘图的坐标系

在学习海龟绘图之前,需要先了解海龟绘图的坐标系。海龟绘图采用的是平面坐标系,即画布(窗口)的中心为原点(0,0),横向为x轴,纵向为y轴,x轴控制水平位置,y轴控制垂直位置。例如,一个400×320的画布,对应的坐标系如图15.1所示。

图15.1  海龟绘图的坐标系

在图15.1中,绿色虚线框为画布大小。海龟活动的空间为绿色虚线框以内。即x轴的移动区间为-200~200 ;y轴的移动区间为-160~160。同数学中一样,表示海龟所在位置(即某一点)的坐标为(x, y)。

海龟绘图的三要素

采用海龟绘图有三个关键要素,即方向、位置和画笔。在进行海龟绘图时,主要就是控制这些要素来绘出我们想要的图形。下面分别进行介绍。

l  方向

在进行海龟绘图时,方向主要用于控制海龟的移动方向。主要有以下3个方法进行设置:

Ø  left()/lt()方法:让海龟左转(逆时针)指定度数。

Ø  right()/rt()方法:让海龟右转(顺时针)指定度数。

Ø  setheading()/seth()方法:设置海龟的朝向为0(东)、90(北)、180(西)或270(南)。

l  位置

在进行海龟绘图时,位置主要用于控制海龟移动的距离。主要有以下6个方法进行设置:

Ø  forward(distance) :让海龟向前移动指定距离,参数distance为有效数值。

Ø  backward(distance) :让海龟向后退指定距离,参数distance为有效数值。

Ø  goto(x,y) :让海龟移动到画布中的特定位置。即坐标(x, y)所指定的位置。

Ø  setx(x) :设置海龟的横坐标到x,纵坐标不变。

Ø  sety(y) :设置海龟的纵坐标到y,横坐标不变。

Ø  home() :海龟移至初始坐标 (0,0),并设置朝向为初始方向。

l  画笔

海龟绘图中的画笔就相当于现实生活中绘图所用的画笔。在海龟绘图中,通过画笔可以控制线条的粗细、颜色和运动的速度。关于画笔的详细介绍请参见第15.3节。

绘制第一只海龟

下面我们就来绘制第一只海龟,以此来了解海龟绘图的基本步骤。

       实例15.1   绘制一只向前爬行的海龟

  创建一个Python文件,在该文件中,首先导入turtle模块,然后通过RawTurtle类的子类Turtle(别名为Pen)创建一只小海龟并命名,再调用forward()方法向前移动200像素。代码如下:

import turtle # 导入海龟绘图模块

t_ufo = turtle.Turtle() # 创建一只小海龟,命名为t_ufo

t_ufo.forward(200) # 向前爬行200像素

turtle.done() # 海龟绘图程序的结束语句(开始主循环)

说明:在上面的代码中,第2 行代码也可以替换为:“t_ufo = turtle.Pen()”;最后一行也可以替换为“turtle.

mainloop()”。

运行程序,在打开的窗口中,可以看见一个箭头从屏幕中心的位置向右移动,并且保留一条200 像素的线,如图15.2所示。在图15.2中,并没有一只海龟,这是因为在海龟绘图的默认情况下,光标形状为箭头,可以通过海龟的shape()方法进行修改。如果想要修改为海龟形状,可以在【实例15.1】的代码中添加以下代码:

t_ufo.shape('turtle') # 设置为海龟形状

再次运行程序,将显示如图15.3所示的效果。可以看出,图15.2中的箭头变为一只小海龟。

图15.2 从屏幕中心向右画一条200 像素的线           图15.3 光标的形状变为一只小乌龟

说明:如果在屏幕上只需要有一只小海龟,那么也可以不创建海龟对象,直接使用turtle作为海龟对象即

可。例如,【实例15.1】的代码也可以修改为以下代码:

turtle.forward(100) # 向前爬行200像素

turtle.shape('turtle') # 设置为海龟形状

turtle.done() # 海龟绘图程序的结束语句(开始主循环)

另外,在15.1节中介绍导入turtle模块的几种方法时,介绍了通过from…import语句导入全部定义。通过该方法导入模块后,如果屏幕中只有一只海龟,则可以将代码简化为以下内容:

from turtle import * # 导入海龟绘图的全部定义

forward(100) # 向前爬行200像素

shape('turtle') # 设置为海龟形状

turtle.done() # 海龟绘图程序的结束语句(开始主循环)

动手试一试

任务一:让小海龟留下Z字形的足迹

本任务要求:应用海龟让一只小海龟在沙滩上留下Z字形的足迹,效果如图15.4所示。(提示:可以通过移动和旋转实现)

图15.4  让小海龟留下Z字形的足迹

任务二:绘制一个小于号“<”

本任务要求应用海龟绘制一个小于号“<”,效果如图15.5所示。(提示:可以通过移动和旋转实现)

图15.5  绘制一个小于号“<”

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

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

相关文章

【OceanBase诊断调优】—— 如何通过trace_id找到对应的执行节点IP

1. 前言 OceanBase作为分布式数据库&#xff0c;查问题找对节点很关键。好在OceanBase执行的每一条SQL都能通过trace_id来关联起来&#xff0c;知道trace_id怎么知道是在哪个节点发起的呢&#xff0c;请看本文。 2. trace_id生成规则 ob内部trace_id的生成函数如下&#xff0…

[AIGC] ClickHouse:一款高性能列式数据库管理系统

轮流探索数据库的世界&#xff0c;我们不得不提到一个重要的角色——ClickHouse。ClickHouse是一个开源的列式数据库管理系统(DBMS)&#xff0c;以其卓越的性能&#xff0c;高效的查询能力和易扩展性而被业界广泛关注&#xff0c;尤其在大数据分析方面。 文章目录 1. 什么是 Cl…

LeetCode 算法:将有序数组转换为二叉搜索树 c++

原题链接&#x1f517;&#xff1a;将有序数组转换为二叉搜索树 难度&#xff1a;简单⭐️ 题目 给你一个整数数组 nums &#xff0c;其中元素已经按 升序 排列&#xff0c;请你将其转换为一棵 平衡 二叉搜索树。 示例 1&#xff1a; 输入&#xff1a;nums [-10,-3,0,5,9]…

LinkedBlockingQueue 原理

基本的入队出队 public class LinkedBlockingQueue<E> extends AbstractQueue<E>implements BlockingQueue<E>, java.io.Serializable {static class Node<E> {E item;/*** 下列三种情况之一* - 真正的后继节点* - 自己, 发生在出队时* - null, 表示是…

解决因国内各大镜像站关停导致无法下载镜像的问题

方法1 配置镜像加速 vim /etc/docker/daemon.json {"exec-opts": ["native.cgroupdriversystemd"],"registry-mirrors": ["https://0fivaqt3.mirror.aliyuncs.com","https://hub.appifa.com","https://dockerproxy.co…

[面试题]Zookeeper

[面试题]Java【基础】[面试题]Java【虚拟机】[面试题]Java【并发】[面试题]Java【集合】[面试题]MySQL[面试题]Maven[面试题]Spring Boot[面试题]Spring Cloud[面试题]Spring MVC[面试题]Spring[面试题]MyBatis[面试题]Nginx[面试题]缓存[面试题]Redis[面试题]消息队列[面试题]…

windows桌面运维----第九天

1、新的电脑需要安装哪些驱动&#xff1a; 显卡驱动、声卡驱动、主板驱动、网卡驱动、打印机驱动、外设驱动、 2、网络打印机如何开启打印机共享核客户端连接共享打印机&#xff1a; 一、打开控制面板并定位到设备和打印机&#xff1a; 首先&#xff0c;我们在电脑桌面上找…

【C/C++】Code Style

命名规范 代码元素命名风格注释Namespaceunder_scored为了跟类名做区分Class nameCamelCase为了跟标准库的类名做区分 (建议不要使用大写"C" 或者 “T” 作为前缀)Function namecamelCase小写开头的函数名基本是通用的&#xff0c;除了.Net自成一格Parameters/Local…

【C语言】操作符(上)

目录 1. 操作符的分类 2. 原码、反码、补码 3. 移位操作符 3.1 左移操作符 3.2 右移操作符 4. 位操作符&#xff1a;&、|、^、~ 5. 单目操作符 6. 逗号表达式 最近准备期末考试&#xff0c;好久不见啦&#xff0c;现在回归—— 正文开始—— 1. …

fc-list命令使用指南

fc-list命令使用指南 一、什么是fc-list? fc-list是FontConfig库的一部分&#xff0c;最初为Linux和其他Unix-like系统开发。我们可以用这个命令行快速查询和列出系统中安装的字体。 现在&#xff0c;Windows用户也集成了这个工具&#xff0c;所以我们来讲解一下用法。 二、…

路经src里的文件是?

说明&#xff1a; src 目录指的是源代码&#xff08;source code&#xff09;目录&#xff0c;存放项目应用的源代码&#xff0c;包含项目的逻辑和功能实现&#xff0c;实际上线之后在浏览器中跑的代码就是它们 apis - 业务接口assets - 静态资源 &#xff08;图片&#xff09…

《昇思 25 天学习打卡营第 7 天 | 模型训练 》

《昇思 25 天学习打卡营第 7 天 | 模型训练 》 活动地址&#xff1a;https://xihe.mindspore.cn/events/mindspore-training-camp 签名&#xff1a;Sam9029 模型训练 本章节-结合前几张的内容所讲-算是一节综合实践 mindscope 框架使用张量 数据类型数据集下载与加载网络构建函…

mulesoft --环境安装与搭建

1.mavenjdkpostman 2.anypoint statdio 下载安装 下载 Anypoint Studio & Mule |骡子软件 (mulesoft.com) 填好基本信息后&#xff0c;会发邮件&#xff0c;在邮件中下载&#xff0c;跳到官网下载 3注册账号 Download Anypoint Studio & Mule | MuleSoft 4.Connect…

PostgreSQL 高可用性与容错性(十三)

1. 备份与恢复策略 1.1 数据备份 1.1.1 基于 pg_dump 的逻辑备份 pg_dump -U username -d dbname -f backup_file.sql 1.1.2 基于 pg_basebackup 的物理备份 pg_basebackup -U username -D /path/to/backup/directory -Ft -Xs -P -R 1.2 恢复数据库 1.2.1 恢复逻辑备份 …

详解 ClickHouse 的分片集群

一、简介 分片功能依赖于 Distributed 表引擎&#xff0c;Distributed 表引擎本身不存储数据&#xff0c;有点类似于 MyCat 之于 MySql&#xff0c;成为一种中间件&#xff0c;通过分布式逻辑表来写入、分发、路由来操作多台节点不同分片的分布式数据 ClickHouse 进行分片集群的…

C语言基础——函数(2)

ʕ • ᴥ • ʔ づ♡ど &#x1f389; 欢迎点赞支持&#x1f389; 文章目录 前言 一、return语句 二、数组做函数参数 三、嵌套调用和链式访问 3.1 嵌套调用 3.2 链式访问 四、函数声明和定义 4.1 单个文件 4.2 多个文件 总结 前言 大家好啊&#xff0c;继我们上一…

优化系统小工具

一款利用VB6编写的系统优化小工具&#xff0c;系统优化、桌面优化、清理垃圾、查找文件等功能。 下载:https://download.csdn.net/download/ty5858/89432367

构造,析构,垃圾回收

构造函数 基本概念 在实例化对象时 会调用的用于初始化的函数 如果不写&#xff0c;默认存在一个无参构造函数 构造函数的写法 1.没有返回值 2.函数名和类名必须相同 3.没有特殊需求时&#xff0c;一般都是public的 4.构造函数可以被重载 5.this代表当前调用该函数的对…

前端JS计算精度损失的问题

例子: 0.10.2 //0.30000000000000004 1.2-1 //0.19999999999999996 1.15*100 //114.99999999999999 1.2/0.2 //5.999999999999999 方式1 // 两个浮点数求和 function num_add(num1,num2){var r1,r2,m;try{r1 num1.toString().split(.)[1].length;}catch(e){r1 0;}try{r2num…

【UE5.3】笔记1

内容浏览器&#xff1a;存放项目中所有的资源&#xff1a;关卡、蓝图类...... 关卡--Map 至少有一个关卡&#xff0c;可以有多个关卡 -漫游 视野漫游&#xff1a;鼠标右键WASD QE 鼠标滑轮控制摄像机速度 运行&#xff0c;ESC退出运行,快捷键F8不停止运行单独弹出功能 -创…