有趣的turtle(一)

news2025/1/12 3:57:17

关注“Python专栏”微信公众号,回复暗号【面试大全】,立即领取面试题+简历模板。

turtle 是 Python 中用来绘图的标准库,它简单且有趣,很多Python初学者都愿意将它作为第一个学习对象。

下面的内容主要包含 turtle 的基本用法和一些有趣的turtle 绘图实例。

 1. turtle基本用法

使用 turtle 绘图的时候主要涉及到的内容包括:控制画布、设置画笔、控制画笔的移动、画圆、填充和绘制文字内容。灵活应用这些知识,可以画出各种各样漂亮的图形!

使用 turtle 之前需要先在代码的最前面导入turtle这个模块。为了让完成绘图后画布不消失,需要在程序的最后添加 turtle.mainloop():

# 导入turtle
import turtle  

# (--------中间写绘图过程----------)

# 让画布一直存在,这句代码需要放在最后
turtle.mainloop()

1.1 创建画布

  • turtle.setup(宽度, 高度) - 设置画布的宽度和高度

  • turtle.title(标题) - 设置标题

turtle.setup(800, 600)
turtle.title('hello')

下面就是mac下画布的效果:

1.2 设置画笔

绘图过程中画布上的光标我们可以看成是画笔,在每次绘图前我们可以设置画笔的颜色、线的粗细、画笔移动的速度。

  • turtle.pencolor(颜色) - 设置画笔画出的线的颜色

  • turtle.width(线宽) - 设置线宽

  • turtle.speed(速度值) - 设置笔移动的速度(速度值是1-10逐渐变快;0 对应的速度最

turtle.pencolor
turtle.width(5)
turtle.speed(4)

画笔对应的光标默认是在画布的中心,方向默认是水平向右。在这儿线宽和移动速度无法体现,只有在移动笔的时候才可以看到效果。

1.3 控制笔移动

  • turtle.forward(距离) / turtle.fd(距离) - 控制笔前进指定距离

  • turtle.back(距离)/turtle.bk(距离) - 控制笔后退指定距离

  • turtle.goto(x坐标, y坐标)/ turtle.setx(x坐标) / turtle.sety(y坐标) - 控制笔移动到指定位置(坐标原点在画布的中心)

  • turtle.home() - 笔回到初始状态(回到初始位置和初始方向)

turtle.pencolor('green') 
turtle.width(2)          
                         
turtle.back(200)         
                         
turtle.sety(150)         
turtle.setx(250)  
turtle.goto(-100, -200)       
turtle.home()

1. 4 控制笔的方向

笔的方向默认水平向右,所以前进的时候笔是往右移动的,后退笔向左移动。在移动之前改变笔的方向,前进和后退的代码就会改变移动轨迹。

  • turtle.left(角度) - 向左旋转指定角度

  • turtle.right(角度) - 向右旋转指定角度

  • turtle.setheading(角度) - 设置绝对角度值指定度数

turtle.pencolor('red')
turtle.left(45)
turtle.forward(100)

turtle.pencolor('green')
turtle.right(90)
turtle.forward(200)

turtle.pencolor('purple')
turtle.setheading(10)
turtle.forward(100)

1.5 抬起笔和放下笔

有的时候移动笔不需要在画布上留下痕迹,那在移动笔之前需要先抬起笔。

  • turtle.up() - 抬起笔

  • turtle.down() - 放下笔

1.6 画圆

turtle画圆的时候可以画圆环,也可以直接画实心圆

1.画圆环

  • turtle.circle(半径) - 画一个完整的圆环

  • turtle.circle(半径, 角度) - 画指定角度对应的圆弧

turtle.pencolor('red')
turtle.circle(60)

turtle.up()
turtle.goto(100, -100)

turtle.down()
turtle.pencolor('green')
turtle.circle(80, 120)

2.画实心圆

  • turtle.dot(直径) - 直径为指定值的画实心圆

turtle.dot(200, 'orange')

1.7 填充

在使用填充的时候需要注意,写代码的时候先写需要填充的轮廓对应的代码。再在轮廓代码前面开始填充,轮廓代码的后面结束填充。

  • turtle.fillcolor(颜色) - 设置填充颜色

  • turtle.begin_fill() - 开始填充

  • turtle.end_fill() - 结束填充

# 设置填充颜色
turtle.fillcolor('orange')
# 开始填充
turtle.begin_fill()

# ========以下代码是画需要填充的轮廓对应的代码(一个三角形)========
turtle.width(3)
turtle.forward(200)
turtle.left(120)
turtle.forward(120)
turtle.home()
# ==========================================================

# 结束填充
turtle.end_fill()

1.8 画文字

画文字指的是直接将字符串渲染到画布上。

  • turtle.write(文字内容, font=(字体名称, 字体大小, 文字类型))

# 字体类型:normal、bold、italic
turtle.goto(-100, 0)
turtle.pencolor('pink')
turtle.write('你输入的文字', font=('宋体', 40, 'bold'))

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

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

相关文章

OpenCV(加载、修改、保存图像)

目录 1、图像加载 2、显示图像 3、修改图像 4、图像保存 OpenCV官方文档查询地址:OpenCV: OpenCV modules 1、图像加载 加载图像(用cv::imread )imread功能是加载图像文件成为一个Mat对象,其中第一个参数表示图像文件名称 第二个参数&…

还在一步步搭建平台吗?找对方法更重要喔~

前言: 如今,随着信息化时代互联网的高速发展,繁琐的流程和线下的工作已经不能满足社会发展的需求,这个时候大家都知道系统是唯一一个可以快速解决的方法。但每个企业的需求不一样,成品型的系统未必能满足企业的属性。但…

MySQL数据库--------简单理解文件的相关信息

作者前言 欢迎小可爱们前来借鉴我的gtiee秦老大大 (qin-laoda) - Gitee.com ———————————————————————————————————— 目录 文件的信息 文件的权限 权限的赋予 —————————————————————————————— 插播一些…

INFORMIX存储过程

一、存储过程概述 存储过程是一个用户定义的函数,由存储过程语句(SPL) 和一组SQL语句组成,以可以执行代码形式存储在数据库中,和表、视图、索引等一样,是数据库的一种对象。 存储过程语言SPL(Stored Procedure Language&#xf…

硬件重生:PC与数码市场迎来历史性繁荣,搞机佬的春天回来了

在过去的一年里,我们看到了一场全球范围内的数字革命。在这次变革中,PC硬件和数码产品的市场表现令人瞩目,显著反弹。根据我们的调研数据,这一领域的市场规模和销售量都大幅增长,这预示着搞机佬们的春天已经来临。 PC硬…

Vue项目前端部署——nginx方式

Vue项目前端部署——nginx方式 1. 准备好服务器,下载安装nginx并启动2. vue项目编译打包3. 将dist目录上传到服务器上4. 配置nginx安装目录下的nginx.config文件5. 重启nginx6. 访问地址 1. 准备好服务器,下载安装nginx并启动 随便在网上找一篇文章&…

AI 绘画 - 建筑绘图辅助设计之 SD 基础

前情提要 如果你想学会一门东西,那么就给交给自己一个明确的任务,然后独立完成,之后我们就可以掌握这门技术了; 简介 SD建筑绘画主要目的是将建筑概念转化为可视化的表达形式,以便更好地传达设计理念给业主、团队成…

银河麒麟服务器 v10 sp1 安装 .Net6.0

系统版本、架构: 如果系统自带.netcore3,先卸载系统自带的.netcore3: 卸载.netcore3: 我的系统没有自带.netcore3,也没有yum命令。 下载二进制文件安装SDK: 下载 .NET 6.0 (Linux、macOS 和 Windows) 下载…

CUDA中的缓存

CUDA缓存包括L1缓存和L2缓存。 SM加载数据,根据不同的设备和类型分为三种路径: 一级和二级缓存常量缓存只读缓存 常规的路径是一级和二级缓存,需要使用常量和只读缓存的需要在代码中显式声明。但是提高性能,主要还是要取决于访问…

最全:2023年华为认证HCIA+HCIP题库合集(含答案解析)

随着华为业务也全球领域的迅猛发展,越来越多人开始重视华为认证的重要性。 想要通过华为认证,除了进行专业的学习,练题刷题也是最重要的一环,今天给大家提供一份全真的华为认证HCIAHCIP真题文档,帮助大家顺利备考&…

双端队列和C++ std::deque详解

文章目录 1. 双端队列和std::duque2. deque的用法2.1 deque的定义和声明2.2 成员函数2.2.1 元素访问assignatoperator[]frontback 2.2.2 迭代器begin、end和cbegin、cendrbegin、rend和crbegin、crend 2.2.3 容量emptysizemax_sizeshrink_to_fit 2.2.4 修改器clearinsertemplac…

VLAN原理配置

VLAN原理&配置 一、VLAN的工作原理1.1、传统以太网1.2、VLAN技术1.3、VLAN帧格式1.4、VLAN接口类型1.4.1、端口类型-Access1.4.2、端口类型-Trunk1.4.3、端口类型-Hybrid 1.5、PVID(缺省VLAN)1.6、VLAN划分方法 二、VLAN的基本配置2.1、VLAN的配置2.…

这些代码,差点把我气出内伤

大家好,我是鱼皮,一个正在烂代码的泥潭里面摸爬滚打的程序员。 先问大家一个小问题:你觉得看别人代码累,还是自己写代码累? 我相信有很多朋友会说,当然是自己写代码累了,要思考逻辑、要动手敲…

(13)【MyBatis的启动流程与Spring boot配置】

一、Mybatis的启动流程 加载Mapper配置的映射文件或者注解相关sql内容创建会话工厂,MyBatis通过读写配置文件中的数据源信息来构造会话工厂创建会话,Mybatis通过会话工厂创建会话对象,会话对象是个接口,包含对数据库的增删改查方法…

5.8.4 TCP连接管理(二)TCP链接释放

5.8.4 TCP连接管理(二)TCP链接释放 在数据传输结束之后,通信双方都可以发出释放连接的请求,如图 图中所示的主机A192.168.1.100与百度服务器B:119.75.218.70之间TCP连接释放的过程。 主机B的TCP通知对方要释放从B到…

go开源项目slgserver源码分析

个人博客地址: https://cxx001.gitee.io 前言 项目开源地址:https://github.com/llr104/slgserver 比较适合作为go语言入门学习项目或轻量级游戏项目,整体的项目结构和编码质量还是可以的。不过距离商业项目还是差点意思,如服务负载、容灾这…

ajax实现跳转页面或返回上一页面并刷新

返回上一页面并刷新 window.location.href document.referrer; 跳转至另一个页面 window.location.href ‘/admin’; 图为登录页面实现时的代码

【OpenCV】获取各种分类器的haarcascades_*.XML 文件的详细介绍

文章目录 获取方式下载opencv获取直接下载 文件说明 获取方式 下载opencv获取 安装 OpenCV并获取xml文件: 首先,请参考Windows下 OpenCV 的下载安装教程(详细)中的步骤,下载 OpenCV。 一旦下载完成,请找到…

Mentor PADS创建BGA IC封装

创建BGA IC封装也是可以使用PCB封装向导去进行设置创建。 1、点击“绘图工具栏”图标,弹出对应的分列,点击“向导”,弹出“Decal Wizard”对话框,如图1所示。 图1“Decal Wizard”对话框 2、然后点击左上角的BGA/PGA选项&#xf…

【算法】贡献法相关题目练习

文章目录 贡献法介绍相关题目2104. 子数组范围和907. 子数组的最小值之和1856. 子数组最小乘积的最大值2681. 英雄的力量2281. 巫师的总力量和 相关链接 本文介绍一些 使用 贡献法 的算法题目。 TODO :先把框架写了,文章内容后续会补上。 贡献法介绍 相…