Python 绘图魔法:用turtle库开启你的编程艺术之旅

🏠大家好,我是Yui_,目标成为全栈工程师~💬
🍑如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀
🚀如有不懂,可以随时向我提问,我会全力讲解~
🔥如果感觉博主的文章还不错的话,希望大家关注、点赞、收藏三连支持一下博主哦~!
🔥你们的支持是我创作的动力!
🧸我相信现在的努力的艰辛,都是为以后的美好最好的见证!
🧸人的心态决定姿态!
💬欢迎讨论:如有疑问或见解,欢迎在评论区留言互动。
👍点赞、收藏与分享:如觉得这篇文章对您有帮助,请点赞、收藏并分享!
🚀分享给更多人:欢迎分享给更多对编程感兴趣的朋友,一起学习!

文章目录

  • 1. `turtle`的常用功能
    • 1.1 基本操作
    • 1.2 设置画笔属性
    • 1.3 设置窗口属性
  • 2. 绘图操作
    • 2.1 正方形绘制
    • 2.2 正多边形绘制
    • 2.3 同心圆的绘制
    • 2.4 填充图形的绘制
    • 2.5 五角星的绘制
    • 2.6 螺旋图案的绘制
  • 3. `turtle`的进阶操作
  • 4. 总结

在python存在一个简单易用的绘图库,它就是 turtle
Python 的 turtle 模块是一种简单易用的绘图库,适合用于绘制图形和动画。它以“海龟”(Turtle)作为绘图工具,模拟一只“海龟”在平面上移动,通过命令控制其运动轨迹来绘制各种图案。
Turtle 特别适合初学者学习编程逻辑和图形学,因为它的接口直观,操作简单。
在本篇博客,我会带领着大家学会 turtle库的使用。

1. turtle的常用功能

1.1 基本操作

方法描述
turtle.forward(x)向前移动 x 像素
turtle.backward(x)向后移动 x 像素
turtle.left(angle)向左旋转指定角度(单位:度)
turtle.right(angle)向右旋转指定角度(单位:度)
turtle.penup()提起画笔(移动时不绘制轨迹)
turtle.pendown()放下画笔(移动时绘制轨迹)
turtle.goto(x, y)移动到坐标 (x, y)
turtle.speed(speed)设置绘图速度,范围从 0(最快)到 10
turtle.hideturtle()隐藏海龟图标
turtle.showturtle()显示海龟图标

1.2 设置画笔属性

方法描述
turtle.color(color)设置画笔颜色,支持字符串如 "red" 或 RGB
turtle.fillcolor(color)设置填充颜色
turtle.begin_fill()开始填充区域
turtle.end_fill()结束填充区域
turtle.pensize(width)设置画笔宽度

1.3 设置窗口属性

方法描述
turtle.title(title)设置窗口标题
turtle.bgcolor(color)设置窗口背景颜色
turtle.setup(width, height)设置窗口大小
turtle.reset()重置画布和海龟状态
turtle.clearscreen()清除整个屏幕

以上的功能,只要用代码敲遍就会完全明白了,下面让我们来看具体的案例吧。

2. 绘图操作

要想学会turtle库最好的方式就是直接上手,所以介绍函数时不会浪费过多的时间,只要用这些函数实现完以下简单的图形后,对于turtle的操作也就大概没有问题了。

2.1 正方形绘制

要绘制正方形,肯定需要知道正方形的图形,相信大家对于这个肯定是没有问题的,拥有4条相同的边且4个角都为直角。这也就是绘制正方形的关键,因为turtle是模拟一只海龟的的移动,只要让海龟的移动轨迹满足条件就可以了。
海龟先向前移动x单位的距离,然后向右转再移动x单位的距离,然后在右转移动x单位的距离,最后在右转移动x单位的距离。因为操作涉及了重复,我们可以将其写为循环。

import turtle #导包t = turtle.Turtle()#先创建对象
turtle.title('我是一个正方形哦~')# 为画布添加标题(可不写)
for _ in range(4):t.forward(100) #向前移动100个单位的距离t.right(90) #开始向右转90度turtle.done() #保持画布的存在

让我们来看看效果吧

可以发现,初始时海龟是咋画布的正中间的,而且海龟的屏幕向右,这点需要记得呢。
那么是否可以移动海龟,不让海龟从初始(0,0)开始移动。
当然也是可以的,可以使用turtle.goto(),不过当你使用时,你一定会发现,怎么海龟还是移动过去的,而且还有移动痕迹,这时候就需要我们去把这些痕迹去除了,用到函数turtle.penupturtle.pendown,如果现在我还不想看到那个海龟turtle.hideturtle()这个函数就有作用了。
同时我们还可以控制速度turtle.speed()
以下是功能大杂烩的演示:

import turtleturtle.title('功能测试')t = turtle.Turtle()
t.speed(0) # 设置速度t.hideturtle() #隐藏海龟
t.penup() #提起画笔
t.goto(-300,300) #跳转到指定坐标
t.pendown() #放放下画笔
t.speed(1) #重新设置速度
for _ in range(4):t.forward(100)t.right(90)
turtle.done()

功能测试

要注意的是关于turtle.speed(n)函数,n为0是最快的,然后从1开始速度依次增加。

2.2 正多边形绘制

有了正方形的前车之鉴,多边形的绘制就非常简单了,比较正方形就正四边形。

import turtleturtle.title('是多边形哦~')# 以下的goto函数是为了方便我截图
t = turtle.Turtle()
t.speed(0)
t.penup()
t.goto(-350,350)
t.pendown()sides = 6 #正多边形的边数
for _ in range(sides):t.forward(100)t.right(360/sides) #因为是正六边形,所以旋转60度
turtle.done()

正六边形

如果我把边数无限制的增加,是不是就得到了一个圆呢?
近似圆

近似看成圆,这其实是正360边形。
难道在turtle中绘制圆,只能这样绘制正多边形吗,也不是,下一个图形就圆的绘制了。

2.3 同心圆的绘制

绘制同心圆前,圆的绘制还是要知道的。

import turtleturtle.title('我是圆哦~')t = turtle.Turtle()
t.speed(0)
t.penup()
t.goto(-250,200)
t.pendown()t.circle(100) #绘制一个半径为100单位的圆turtle.done()

在这里插入图片描述

接下来就同心圆的绘制,因为是同心圆,这些圆的圆心都是相同的但是半径不同。那么只要我写一个循环让圆的半径不断地变大集就可以了,为了效果更丰富,我会让它们的颜色都不同

import turtle
import random
arr = ['red','green','pink','gold','blue','yellow','black','orange']
n = len(arr)
turtle.title('是同心圆呢~')
t = turtle.Turtle()t.speed(10)for radius in range(20,101,20):t.penup()t.goto(0,-radius) #移动到新圆的起点t.pendown()t.color(arr[random.randint(0,n-1)])t.circle(radius)turtle.done()

在这里插入图片描述

画了这么多的图形。还没有画一个填充图形呢,下面让我们开始填充图形的绘制吧

2.4 填充图形的绘制

其实填充图形,只要加两个函数就可以了,以正方形来举例吧

import turtleturtle.title('要padding了~')t = turtle.Turtle()
t.speed(0) # 设置速度
t.hideturtle() #隐藏海龟
t.penup() #提起画笔
t.goto(-300,300) #跳转到指定坐标
t.pendown() #放放下画笔
t.fillcolor('blue') #设置填充颜色
t.begin_fill()
t.speed(1) #重新设置速度
for _ in range(4):t.forward(100)t.right(90)
t.end_fill()
turtle.done()

在这里插入图片描述

2.5 五角星的绘制

画到现在,turtle库的内容,大家应该都是没有问题了,可能更重要的就是图形怎么画。就像下面的五角星,你知道五角星怎么画吗?
其实和正多边形没什么区别,找到角度就可以了。

import turtleturtle.title('我是五角星~')
t = turtle.Turtle()
t.speed(0)
t.penup()
t.goto(-300,300)
t.pendown()for _ in range(5):t.forward(100)t.right(144) #五角星的角度turtle.done()

在这里插入图片描述

2.6 螺旋图案的绘制

螺旋图形的绘制,重在螺旋,对于角度要使用不规则的角度,否则就无法形成螺旋了。

import turtlet = turtle.Turtle()
t.speed(0)  # 设置最快速度colors = ["red", "blue", "green", "orange", "purple"]for i in range(1000):t.color(colors[i % len(colors)])  # 循环使用颜色t.forward(i * 2)t.right(91)  # 稍微不规则的角度,形成螺旋图案turtle.done()

效果还是非常不错了
在这里插入图片描述

如果我们使用的90度的规则角度呢?
晕~

有点晕了~

3. turtle的进阶操作

  1. 通过turtle.shape()改变海龟的形状。
turtle.shape("turtle")  # 改为乌龟形状
turtle.shape("circle")  # 改为圆形
turtle.shape("triangle")  # 改为三角形
  1. 支持简单的事件响应(如键盘和鼠标事件)
import turtledef move_forward():t.forward(50)def turn_left():t.left(45)t = turtle.Turtle()
screen = turtle.Screen()screen.listen()  # 开始监听事件
screen.onkey(move_forward, "Up")  # 按上键移动
screen.onkey(turn_left, "Left")  # 按左键旋转turtle.done()

4. 总结

Python 的 turtle 库是一个简单易用的绘图工具,它让你可以通过编写代码,像小乌龟一样在屏幕上自由创作。无论是几何图形、艺术图案,还是动态动画,turtle 都能轻松实现。它不仅是初学者学习编程逻辑和图形学的绝佳入门选择,也是开发者探索创意编程的有趣工具。
往期文章:python
文章代码:gitee
在这里插入图片描述

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

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

相关文章

AI开发:使用支持向量机(SVM)进行文本情感分析训练 - Python

支持向量机是AI开发中最常见的一种算法。之前我们已经一起初步了解了它的概念和应用,今天我们用它来进行一次文本情感分析训练。 一、概念温习 支持向量机(SVM)是一种监督学习算法,广泛用于分类和回归问题。 它的核心思想是通过…

.net core在linux导出excel,System.Drawing.Common is not supported on this platform

使用框架 .NET7 导出组件 Aspose.Cells for .NET 5.3.1 asp.net core mvc 如果使用Aspose.Cells导出excel时,报错 : System.Drawing.Common is not supported on this platform 平台特定实现: 对于Windows平台,System.Drawing.C…

【Unity3D】实现可视化链式结构数据(节点数据)

关键词:UnityEditor、可视化节点编辑、Unity编辑器自定义窗口工具 使用Newtonsoft.Json、UnityEditor相关接口实现 主要代码: Handles.DrawBezier(起点,终点,起点切线向量,终点切线向量,颜色,n…

6UCPCI板卡设计方案:8-基于双TMS320C6678 + XC7K420T的6U CPCI Express高速数据处理平台

基于双TMS320C6678 XC7K420T的6U CPCI Express高速数据处理平台 1、板卡概述 板卡由我公司自主研发,基于6UCPCI架构,处理板包含双片TI DSP TMS320C6678芯片;一片Xilinx公司FPGA XC7K420T-1FFG1156 芯片;六个千兆网口&#xff…

Python + 深度学习从 0 到 1(01 / 99)

希望对你有帮助呀!!💜💜 如有更好理解的思路,欢迎大家留言补充 ~ 一起加油叭 💦 欢迎关注、订阅专栏 【深度学习从 0 到 1】谢谢你的支持! ⭐ 深度学习之前:机器学习简史 什么要了解…

丹摩|丹摩助力selenium实现大麦网抢票

丹摩|丹摩助力selenium实现大麦网抢票 声明:非广告,为用户体验 1.引言 在人工智能飞速发展的今天,丹摩智算平台(DAMODEL)以其卓越的AI算力服务脱颖而出,为开发者提供了一个简化AI开发流程的强…

企业内训|高智能数据构建、Agent研发及AI测评技术内训-吉林省某汽车厂商

吉林省某汽车厂商为提升员工在AI大模型技术方面的知识和实践能力,举办本次为期8天的综合培训课程。本课程分为两大部分:面向全体团队成员的AI大模型技术结构与行业应用,以及针对技术团队的高智能数据构建与Agent研发。课程内容涵盖非结构化数…

LLaMA-Factory 单卡3080*2 deepspeed zero3 微调Qwen2.5-7B-Instruct

环境安装 git clone https://gitcode.com/gh_mirrors/ll/LLaMA-Factory.gitcd LLaMA-Factorypip install -e ".[torch,metrics]"pip install deepspeed 下载模型 pip install modelscope modelscope download --model Qwen/Qwen2.5-7B-Instruct --local_dir /roo…

uniapp blob格式转换为video .mp4文件使用ffmpeg工具

前言 介绍一下这三种对象使用场景 您前端一旦涉及到文件或图片上传Q到服务器,就势必离不了 Blob/File /base64 三种主流的类型它们之间 互转 也成了常态 Blob - FileBlob -Base64Base64 - BlobFile-Base64Base64 _ File uniapp 上传文件 现在已获取到了blob格式的…

【Rabbitmq篇】RabbitMQ⾼级特性----持久性,发送⽅确认,重试机制

目录 一.持久化 1 .交换机持久化 2 队列持久化 3.消息持久化 测试场景 二.发送⽅确认 1 .confirm确认模式 2 return退回模式 如何保证RabbitMQ消息的可靠传输?(面试重点) 三. 重试机制 一.持久化 我们在前⾯讲了消费端处理消息时,…

深度学习之目标检测——RCNN

Selective Search 背景:事先不知道需要检测哪个类别,且候选目标存在层级关系与尺度关系 常规解决方法:穷举法,在原始图片上进行不同尺度不同大小的滑窗,获取每个可能的位置 弊端:计算量大,且尺度不能兼顾 Selective …

Flutter环境搭建

1.Flutter 简介 1.1 Flutter 是什么 ? Flutter 是一个 UI SDK(Software Development Kit)跨平台解决方案:可以实现一套代码发布移动端(iOS、Android、HarmonyOS)、Web端、桌面端目前很多公司都在用它&…

安全算法基础(一)

安全算法是算法的分支之一,还的依靠大量的数学基础进行计算,本文参照兜哥的AI安全样本对抗,做一个简单的算法安全概括,从零学习。 最新的安全算法对于我们常规的攻击样本检测,效果是不理想的,为了探究其原…

单元测试-Unittest框架实践

文章目录 1.Unittest简介1.1 自动化测试用例编写步骤1.2 相关概念1.3 用例编写规则1.4 断言方法 2.示例2.1 业务代码2.2 编写测试用例2.3 生成报告2.3.1 方法12.3.2 方法2 1.Unittest简介 Unittest是Python自带的单元测试框架,适用于:单元测试、Web自动…

QtCreator配置github copilot实现AI辅助编程

文章目录 1、概述2、配置环境3、演示 1、概述 新时代的浪潮早就已经来临,上不了船的人终将被抛弃,合理使用AI辅助开发、提升效率是大趋势,注意也不要过于依赖。 2024年12月18日,GitHub 官方宣布了一个激动人心的重大消息&#xf…

数字经济下的 AR 眼镜

目录 1. 📂 AR 眼镜发展历史 1.1 AR 眼镜相关概念 1.2 市面主流 XR 眼镜 1.3 AR 眼镜大事记 1.4 国内外 XR 眼镜 1.5 国内 AR 眼镜四小龙 2. 🔱 关键技术 2.1 AR 眼镜近眼显示原理 2.2 AR 眼镜关键技术 2.3 AR 眼镜技术难点 3. &#x1f4a…

LabVIEW深海气密采水器测控系统

LabVIEW的深海气密采水器测控系统通过高性价比的硬件选择与自主开发的软件,实现了高精度的温度、盐度和深度测量,并在实际海上试验中得到了有效验证。 项目背景 深海气密采水器是进行海底科学研究的关键工具,用LabVIEW开发了一套测控系统&am…

RocketMQ的集群架构是怎样的?

大家好,我是锋哥。今天分享关于【RocketMQ的集群架构是怎样的?】面试题。希望对大家有帮助; RocketMQ的集群架构是怎样的? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 RocketMQ 是阿里巴巴开源的分布式消息中间件,广泛用于处…

【Rust自学】4.5. 切片(Slice)

4.5.0. 写在正文之前 这是第四章的最后一篇文章了,在这里也顺便对这章做一个总结: 所有权、借用和切片的概念确保 Rust 程序在编译时的内存安全。 Rust语言让程序员能够以与其他系统编程语言相同的方式控制内存使用情况,但是当数据所有者超…

AI的进阶之路:从机器学习到深度学习的演变(一)

AI的进阶之路:从机器学习到深度学习的演变 在当今科技迅猛发展的时代,人工智能(AI)、机器学习(ML)和深度学习(DL)已成为推动创新的核心力量。这三个领域虽然紧密相连,却…