python等级考试——一级知识点汇总(turtle画图部分)

news2024/11/25 6:56:13

(本篇文章是针对中国电子学会青少年编程等级考试的,适合初学者以及青少年编程学习者

本篇文章主要介绍turtle画图部分,其他一级考试知识点请移步下方链接:python等级考试——一级知识点汇总(不包含turtle画图)


目录

一. turtle库简介

1.1 导入turtle库

1.2 turtle入门介绍

二. 基本命令——移动

2.1 向前向后移动

2.2 向左向右转

2.3 画点

2.4 画圆/弧线/正多边形

2.4.1 画圆

2.4.2 画弧线

2.4.3 画正多边形

三 . 箭头造型

 四. 画笔设置

4.1 画笔速度

4.2 画笔颜色

4.3 画笔粗细

五. 填充设置

六 . 画布设置

七.  抬笔和落笔

1. 坐标

2. 抬笔与落笔


一. turtle库简介

turtle库也叫海龟画图,它是Python中的一个标准库,用于绘制图形和进行简单的图形编程。我们可以想象屏幕上有一个小海龟,它会根据我们的指令在屏幕上行走,它走过的痕迹,就是我们所绘制的图形。

1.1 导入turtle库

当我们想使用turtle库画图的时候,第一件事,就是要把这个库引入到你自己的py文件中,这样才能使用这个库里面的函数和方法,那么这个引入的过程就是导入,导入的形式你可以下面这样写:

import turtle

或者:

import turtle as t  # 这句话其实就是给turtle起了个简单的名字t

那么这两种有什么区别呢,举个例子,比如你想让小海龟向前走100个单位,需要这样写: turtle.forward(100),但是当你采用第二种引用的方法,你就可以这样写: t.forward(100);这样代码量会减少,当然,使用第一种也没有问题。

1.2 turtle入门介绍

小海龟在我们的绘图空间中其实是有一个隐藏着的坐标系的,而我们的小海龟的起始位置就在原点上,如下图所示:

原点位于画布的正中心,有一个非常非常重要的点,起始默认小海龟是头朝右的,也就是说,如果你在刚开始让小海龟向前走100个单位,它会往右走,这点一定要注意,很多小朋友写着写着就不知道小海龟头朝哪里了。

除此之外,建议在画完图结尾加上turtle.done()命令:用来停止画笔绘制,但绘图窗体不关闭。这样就不会出现死机现象。


二. 基本命令——移动

2.1 向前向后移动

1. 向前移动  t.forward(x)  向前移动指定距离,(引入时候用的 import turtle as t)

小海龟沿着当前方向向前走x距离,会在画布上留下一条直线,如下:

import turtle as t

# 向前(默认向右)画100步
t.forward(100)
t.done()

运行结果如下:

2. 向后移动  t.backward(x)  向后移动指定距离,(引入时候用的 import turtle as t)

此命令是沿着小海龟头的相反方向走,你也可以理解为倒车。

import turtle as t

# 向后(默认向左)画100步
t.backward(100)
t.done()

仔细对比上下两张图可以发现,箭头方向始终是一样的,只是第一幅图在往前走,第二幅图在往后退。

2.2 向左向右转

上面的例子都是在一条直线上运动,那么怎么让小海龟转弯呢,通过下面的命令:

1. 向左转  t.left(x)  括号里的参数是角度

import turtle as t

t.forward(100)
t.left(30)
t.forward(100)
t.done()

运行结果如下

先往前走100像素,再向左转30度,再向前走100像素,得到的效果就是这样,

1. 向右转  t.right(x)  括号里的参数是角度

知道左转,那么右转也一样,我就不再举例了。

2.3 画点

t.dot(x,y) 里面的参数是半径大小和颜色(当然也可以不写参数,就是默认大小)

import turtle as t

# 画一个半径40的点
t.dot(40)
t.done()

运行结果如下

这个命令看似简单,但实际上可以帮助我们完成很多任务,比如这道题

这道题可以先画一个半径很大的黄色的大点,然后再移动小乌龟向右超出这个点,然后再画一个半径小一些的白色的点,这样就可以把黄色的盖上一部分,也就形成了一个小月亮。

2.4 画圆/弧线/正多边形

t.circle(x,y,z) 里面三个参数

这个函数算的上比较的点了,因为参数比较多,组合情况也比较多,掌握基础的画圆很简单,想完全理解这个函数还是需要下点功夫的。

2.4.1 画圆

当里面只写一个参数时,这个参数是半径,它控制着圆的大小,数值越大,画的圆也就越大,如下:

import turtle as t

# 画两个圆,第一个半径50,第二个半径一百
t.circle(50)
t.circle(100)
t.done()
结果如下:

当这个参数设置的是个正数,画笔会沿着小海龟头的方向去逆时针画圆,也就是让小海龟在身体左侧画个圆,如果是负数,画笔则会沿着小海龟尾巴的方向去顺时针画圆。

2.4.2 画弧线

如果写两个参数,那么第一个参数仍然是半径,而第二个参数则是弧度,如果不写的话就是默认值,其默认值是360,也就是一圈。(这也是为什么只填写一个参数的时候会直接画圆的原因)那如果我们想画一个半圆,只需要将其设置为180就可以了,比如:

import turtle as t

t.circle(100, 180)
t.done()

结果如下:真题样例如下:

2.4.3 画正多边形

第三个参数是步数,这个过程其实是这样(能理解就理解,理解不了就死记住):把用前两个参数画的弧线用步数分割,然后拿直线代替,第三个参数越大,整体就趋近于圆。

那利用这个原理,我们就可以通过这个函数非常轻易的出一个等边三角形,正方形,正六边形等等。比如,我们如果只运用前面的知识画三角形,如下:

import turtle as t

# 以前需要写这么多行
t.forward(100)
t.left(120)
t.forward(100)
t.left(120)
t.forward(100)
t.left(120)
t.done()
import turtle as t

# 现在只需要一行
t.circle(100, 360, 3)
t.done()

ok,那移动命令暂时就说这么多,还有一个goto方法,这个方法我们放到抬笔落笔那里将。


三 . 箭头造型

我们默认情况下,就是一个小黑箭头,但是其实可以给它设置成其他的样式(说实话,这个方法没什么意义,作为了解即可)

方法名方法说明
.shape()箭头的造型:arrow、turtle、circle、square、triangle、classic
.hideturtle()绘图结束后,把箭头隐藏起来。
.showturtle()显示箭头。

需要注意的是,考试题中有时候会有误导选项,说turtle画图可以随意改变箭头造型比如dog,这是错误的,虽然可以改动箭头形状,但是并不是想改什么就改什么。想把造型设置成海龟就如下,其他情况同理:

import turtle as t
# 造型设置为海龟
t.shape('turtle')
t.forward(100)
t.done()

 四. 画笔设置

4.1 画笔速度

如果嫌画的慢,可以把画笔速度调的快一些

t.speed(s)   设置绘图的速度:0或大于10表示瞬间绘制,1~10之间,1最慢,10最快

4.2 画笔颜色

有两种方法可以修改笔迹的颜色,第一种是:

t.color(p,q)  

p: 边框和画笔 q:填充颜色【如果只有p参数,则设置所有颜色,包括边框和填充颜色】

比如:

第二种是:

t.pencolor() 设置画笔颜色,绘制的线条以及笔头的轮廓部分

如果这两个参数都设置我们看看会发生什么情况。

import turtle as t

t.shape('turtle')
t.color("red","green")
# 设置画笔颜色
t.pencolor("yellow")
t.circle(100)
t.done()

可以看到,我们先把笔迹设置成红色,然后又设置成了黄色,最后得到的结果是黄色,也就是说,下面的代码会覆盖上面的代码,如果第三行和第四行的代码互换,得到的线就是红色的。

4.3 画笔粗细

t.pensize(s)    设置画笔粗细,填入数字,最小值1

 这部分没啥好解释的,按照题目要求设置就可以了。


五. 填充设置

 可以在一个封闭区域填充颜色,通过下面三个turtle的方法就可以实现。

方法名方法说明
t.fillcolor(x)x 设置填充的颜色
t.begin_fill()在需要填充的封闭区域前设置
t.end_fill()在需要填充的封闭区域后设置

那么这些方法怎么使用呢,用一个例子演示一下,大家就清楚了

import turtle as t

t.shape('turtle')
t.color("red", "green")
t.begin_fill()  # 开始填充
t.fillcolor("yellow")  # 可以在这里改变填充的颜色,将绿色改为黄色
t.circle(100)
t.end_fill()  # 结束填充
t.done()

有了填充颜色的方法,我们就可以绘制各种好看的图案了,比如说上方右侧最经典的美国队长的盾牌。


六 . 画布设置

t.screensize(width,height,bg) ,设置画布的大小【默认大小为(400,300)】

画布就是我们的绘图区域,第一个参数是宽度,第二个参数是高度,默认情况下宽度是400,高度是300,第三个参数是背景颜色。


七.  抬笔和落笔

1. 坐标

默认情况下,海龟绘图在屏幕原点(0,0)位置开始。可以设置对应坐标让其在指定位置绘制.

t.goto(x, y)    到达指定坐标(x,y)

import turtle as t
t.circle(100)

# 将画笔在y轴上移50的位置
t.goto(0,50) 
t.circle(50)
t.done()

结果如下:

虽然绘制出了同心圆,但有一个问题:当绘制第二个圆时,笔头划过路过的区域,会有一条线连起来,此时,我们需要通过抬笔和落笔来解决。

2. 抬笔与落笔

每次当笔头要位移绘制时,我们需要将笔头抬起,然后再绘制处再落笔就可以了。

t.penup()    设置画笔抬起,此时无法绘制内容  简写( t.up()
t.pendown()    设置画笔落下,此时可以绘制内容    (t.down())

那我们用这个方法重新修改一下上面的代码

import turtle as t

t.goto(0,0)
t.circle(100)
t.penup() #抬笔 
t.goto(0,50)
t.pendown() #落笔
t.circle(50)
t.done()

可以发现,成功解决了该问题。


那么一级等级考试的知识点,大概就是这些,对于海龟绘图的掌握,还是需要多练习,把近几年的真题拿过来做一做,找一下自己哪个方法用的不熟练,用的不对,再进行针对性的练习。

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

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

相关文章

【JAVA多线程】线程池概论

目录 1.概述 2.ThreadPoolExector 2.1.参数 2.2.新任务提交流程 2.3.拒绝策略 2.4.代码示例 1.概述 线程池的核心: 线程池的实现原理是个标准的生产消费者模型,调用方不停向线程池中写数据,线程池中的线程组不停从队列中取任务。 实现…

导航栏样式,盒子模型

1.代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><style>li{he…

《机器学习》读书笔记:总结“第4章 决策树”中的概念

&#x1f4a0;决策树 基于树结构进行决策。 一棵决策树包括&#xff1a; 一个 根节点&#xff08;起点&#xff09;若干 叶节点&#xff08;没有下游节点的节点&#xff09;若干 内部节点(分支节点) 即&#xff1a; #mermaid-svg-Mxe3d0kNg29PM2n8 {font-family:"treb…

笔记本电脑内存不够

笔记本电脑内存不够是众多笔记本用户面临的常见问题&#xff0c;尤其是对于一些需要处理大型文件或者运行复杂软件的用户&#xff0c;这个问题可能会严重影响笔记本的使用体验。那么&#xff0c;我们应该如何解决笔记本电脑内存不够的问题呢&#xff1f;本文将从几个方面进行详…

联想电脑更新 Microsoft store 提示 (我们需要更新 Microsoft store 错误码为0x80070422 可在需要时使用)

1. 检查Windows Update服务是否启动 按下WinR组合键打开运行对话框&#xff0c;输入“services.msc”并按回车&#xff0c;打开服务面板。在列表中找到Windows Update服务&#xff0c;双击进入属性。如果服务状态为停止&#xff0c;请点击“启动”按钮&#xff0c;确保启动类型…

缓存-分布式锁-原理和基本使用

分布式锁原理和使用 自旋 public Map<String, List<Catelog2Vo>> getCatalogJsonFromDBWithRedisLock() {Boolean b redisTemplate.opsForValue().setIfAbsent(Lock, Lock, Duration.ofMinutes(1));if (!b) {int i 10;while (i > 0) {Object result redisTe…

上网监控软件有哪些?3款实力出众的上网监控软件

为什么需要上网监控软件&#xff1f; 据说&#xff0c;99%的员工上班都会摸鱼&#xff0c;1%的员工上班会窃取公司信息。 所以&#xff0c;因此&#xff0c;监控员工的上网行为是很有必要滴。 总结下来&#xff0c;上网监控软件的作用是&#xff1a; 1.提高生产力&#xff1…

从零开始读RocketMq源码(一)生产者启动

目录 前言 获取源码 总概论 生产者实例 源码 A-01:设置生产者组名称 A-02:生产者服务启动 B-01&#xff1a;初始化状态 B-02&#xff1a;该方法再次对生产者组名称进行校验 B-03&#xff1a;判断是否为默认生产者组名称 B-04: 该方法是为了实例化MQClientInstance对…

机器学习第四十六周周报 FMP

文章目录 week46 FMP摘要Abstract1. 题目2. Abstract3. FMP3.1 优化框架3.2 优化器 4. 文献解读4.1 Introduction4.2 创新点4.3 实验过程 5. 结论6.代码复现1. FMP2. fairGNN小结参考文献 week46 FMP 摘要 本周阅读了题为Chasing Fairness in Graphs: A GNN Architecture Per…

永磁同步电机控制算法--最大转矩电流比控制(虚拟信号注入法)

目前&#xff0c;国内外相关学者对 MTPA 控制方法进行了一系列的理论研究与仿真分析。通过研究取得的成果综合来看&#xff0c;该控制方法主要有&#xff1a;直接公式计算法、曲线拟合法、查表法、搜索法、高频信号注入法以及参数辨识法等。 之前的文章中已经介绍了直接公式计…

ASP.NET Core----基础学习03----开发者异常页面 MVC工作原理及实现

文章目录 1. 开发者异常页面(1)Startup.cs 页面的基础配置(2)自定义显示报错代码的前后XX行 2. MVC 的原理3. MVC 的实现4.默认路由路径5.返回Json字符串 1. 开发者异常页面 (1)Startup.cs 页面的基础配置 namespace ASP.Net_Blank {public class Startup{private readonly IC…

Matlab协方差矩阵分解法生成随机场

Matlab协方差矩阵分解法生成随机场 相关系数矩阵 % function outcohesion(x,y,mu,theta) % end % xyload(F:\Research-OUC\基于机器许学习模型的海底斜坡可靠度研究\基于comsol的斜坡稳定性分析\comsol网格操作\grid_operate-matlab.mphtxt); % xxy(:,1); % yxy(:,2); Xlinspac…

前端JS特效第22集:html5音乐旋律自定义交互特效

html5音乐旋律自定义交互特效&#xff0c;先来看看效果&#xff1a; 部分核心的代码如下(全部代码在文章末尾)&#xff1a; <!DOCTYPE html> <html lang"en" > <head> <meta charset"UTF-8"> <title>ChimeTime™</title…

Spring源码十二:事件发布源码跟踪

上一篇我们在Spring源码十一&#xff1a;事件驱动中&#xff0c;介绍了spring refresh方法的initMessageSource方法与initApplicationEventMulticaster方法&#xff0c;举了一个简单的例子进行简单的使用的Spring为我们提供的事件驱动发布的示例。这一篇我们将继续跟踪源码&…

谷粒商城学习笔记-使用renren-fast-vue框架时安装依赖包遇到的问题及解决策略

文章目录 1&#xff0c;npm error Class extends value undefined is not a constuctor or null2&#xff0c;npm warn cli npm v10.8.1 does not support Node.js v16.20.2.3&#xff0c;npm error code CERT_HAS_EXPIRED学习心得 这篇文章记录下使用renren-fast-vue&#xff…

花所Flower非小号排名20名下载花所Flower

1、Flower花所介绍 Flower花所是一家新兴的数字货币交易平台&#xff0c;致力于为全球用户提供安全、便捷的交易体验。平台以其强大的技术支持和丰富的交易产品闻名&#xff0c;为用户提供多样化的数字资产交易服务&#xff0c;涵盖了主流和新兴数字货币的交易需求。 2. Flowe…

SQL之delete、truncate和drop区别

MySQL删除数据的方式都有哪些&#xff1f; 常用的三种删除方式&#xff1a;通过 delete、truncate、drop 关键字进行删除&#xff1b;这三种都可以用来删除数据&#xff0c;但场景不同。 一、从执行速度上来说 drop > truncate >> DELETE;二、从原理上讲 1、DELET…

Guitar Pro8.2让你的吉他弹奏如虎添翼!

亲爱的音乐爱好者们&#xff0c;今天我要跟大家安利一个让我彻底沉迷其中的神器——Guitar Pro8.2&#xff01;这可不是一般的软件&#xff0c;它简直是吉他手们的福音。不管你是初学者还是老鸟&#xff0c;这个打谱软件都能给你带来前所未有的便利和价值。 让我们来聊聊Guita…

原理图设计工作平台:capture和capture CIS的区别在于有没有CIS模块

1环境:design entry CIS 2.参数设置命令options——preference&#xff08;7个选项卡colors/print&#xff0c;grid display&#xff0c;miscellaneous&#xff0c;pan and zoom&#xff0c;select&#xff0c;text editor和board simulation&#xff09; 1)颜色设置colors/p…

12 电商高并发缓存实战

序章 项目代码缓存的数据一致性 延时双删 淘汰缓存写数据库休眠1s,再次淘汰缓存缺点:如果mysql是主从复制,去从库中拿去数据,此时同步数据还未完成,拿到的数据是旧数据。 先更新 DB,后删除缓存 采用异步延时删除策略. ①利用消息队列进行删除的补偿。②Mysql 数据库更新操…