turtle库使用教程 及 绘制 浪漫樱花 五角星 彩虹玫瑰 谢尔宾斯基三角形 实例
目录
一、turtle简介
二、绘图坐标体系
三、笔画控制函数
四、形状绘制函数
五、颜色填充
六、浪漫樱花代码实例
七、五角星代码实例
八、彩虹玫瑰代码实例
九、谢尔宾斯基三角形代码实例
一、turtle简介
turtle:是3.6版本中新推出的绘图工具库,是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形。
# 安装turtle
pip install turtle
二、绘图坐标体系
import turtle# turtle.setup(width,height,startx,starty)
# width,height:为主窗体的宽和高
# startx,starty:为窗口距离左侧与屏幕左侧像素距离和窗口顶部与屏幕顶部的像素距离。
turtle.setup(300, 300, 300, 100)
三、笔画控制函数
turtle.penup() # 抬起画笔
turtle.pendown() # 放下画笔
turtle.pensize() # 设置画笔尺寸
turtle.pencolor() # 设置画笔颜色
四、形状绘制函数
turtle.fd() # 朝小乌龟当前方向前进
turtle.bk() # 朝小乌龟当前方向的反方向前进
turtle.left() # 画笔方向向左转,基于当前画笔方向
turtle.right() # 画笔方向向右转,基于当前画笔方向
turtle.seth() # 在平行于X轴的基础上,改变画笔绘制方向
turtle.circle(radius, extent) # 根据半径radius绘制extent角度的弧形
turtle.hideturtle() # 绘图结束后隐藏小乌龟
turtle.clear() # 清空画板
turtle.reset() # 清空画板,并让小乌龟回到初始位置
五、颜色填充
# 成对使用,填充颜色。
turtle.begin_fill()
turtle.end_fill()
命令 | 说明 | |
---|---|---|
画笔运动函数 | turtle.forward(distance) | 向当前画笔方向移动distance像素长 |
turtle.backward(distance) | 向当前画笔相反方向移动distance像素长度 | |
turtle.right(degree) | 顺时针移动degree° | |
turtle.left(degree) | 逆时针移动degree° | |
turtle.pendown() | 移动时绘制图形,缺省时也为绘制 | |
turtle.goto(x,y) | 将画笔移动到坐标为x,y的位置 | |
turtle.penup() | 移动时不绘制图形,提起笔,用于另起一个地方绘制时用 | |
turtle.speed(speed) | 画笔绘制的速度范围[0,10]整数 | |
turtle.circle() | 画圆,半径为正(负),表示圆心在画笔的左边(右边)画圆 | |
画笔控制函数 | turtle.pensize(width) | 绘制图形时的宽度 |
turtle.pencolor() | 画笔颜色 | |
turtle.fillcolor(colorstring) | 绘制图形的填充颜色 | |
turtle.color(color1, color2) | 同时设置pencolor=color1, fillcolor=color2 | |
turtle.filling() | 返回当前是否在填充状态 | |
turtle.begin_fill() | 准备开始填充图形 | |
turtle.end_fill() | 填充完成; | |
turtle.hideturtle() | 隐藏箭头显示; | |
turtle.showturtle() | 与hideturtle()函数对应 | |
全局控制函数 | turtle.clear() | 清空turtle窗口,但是turtle的位置和状态不会改变 |
turtle.reset() | 清空窗口,重置turtle状态为起始状态 | |
turtle.undo() | 撤销上一个turtle动作 | |
turtle.isvisible() | 返回当前turtle是否可见 | |
stamp() | 复制当前图形 | |
turtle.write(s[,font=(“font-name”,font_size,“font_type”)]) | 写文本,s为文本内容,font是字体的参数,里面分别为字体名称,大小和类型;font为可选项, font的参数也是可选项 |
六、浪漫樱花代码实例
# @Author: xiaofang
# @Email: 983770299@qq.com
# @Date: Create in 2022/07/01 19:45
# @Description: turtle绘制樱花树
import turtle
import random
import time# 画樱花的躯干(60,t)
def cherry_tree(branch, t):time.sleep(0.0005)if branch > 3:if 8 <= branch <= 12:if random.randint(0, 2) == 0:t.color('snow') # 白else:t.color('lightcoral') # 淡珊瑚色t.pensize(branch / 3)elif branch < 8:if random.randint(0, 1) == 0:t.color('snow')else:t.color('lightcoral') # 淡珊瑚色t.pensize(branch / 2)else:t.color('sienna') # 赭(zhě)色t.pensize(branch / 10) # 6t.forward(branch)a = 1.5 * random.random()t.right(20 * a)b = 1.5 * random.random()cherry_tree(branch - 10 * b, t)t.left(40 * a)cherry_tree(branch - 10 * b, t)t.right(20 * a)t.up()t.backward(branch)t.down()# 掉落的花瓣
def cherry_fall_petal(m, t):for i in range(m):a = 200 - 400 * random.random()b = 10 - 20 * random.random()t.up()t.forward(b)t.left(90)t.forward(a)t.down()t.color('lightcoral') # 淡珊瑚色t.circle(1)t.up()t.backward(a)t.right(90)t.backward(b)# 绘图区域
t = turtle.Turtle()
# 画布大小
w = turtle.Screen()
t.hideturtle() # 隐藏画笔
t.getscreen().tracer(5, 0)
w.screensize(bg='wheat') # wheat小麦
t.left(90)
t.up()
t.backward(150)
t.down()
t.color('sienna')# 画樱花的躯干
cherry_tree(60, t)
# 掉落的花瓣
cherry_fall_petal(200, t)
w.exitonclick()
七、五角星代码实例
import turtleturtle.color("red") # 设置画笔颜色
turtle.fillcolor("red") # 设置填充颜色
turtle.begin_fill()
for i in range(5):turtle.forward(200)turtle.right(144)
turtle.end_fill()
turtle.hideturtle()
turtle.done()
八、彩虹玫瑰代码实例
import turtle
turtle.pensize(2)
turtle.bgcolor("white")
turtle.speed(0)
colors = ["red","orange","yellow","green","blue","cyan","purple"] # 彩虹7颜色
for i in range(200) :turtle.pencolor(colors[i % 7])turtle.forward(i)turtle.left(60 + 1)turtle.hideturtle()
九、谢尔宾斯基三角形代码实例
import turtledef draw_triangle(points, color, t):t.fillcolor(color)t.up()t.goto(points[0][0], points[0][1])t.down()t.begin_fill()t.goto(points[1][0], points[1][1])t.goto(points[2][0], points[2][1])t.goto(points[0][0], points[0][1])t.end_fill()def get_mid(point1, point2):return (point1[0] + point2[0]) / 2, (point1[1] + point2[1]) / 2def sierpinski(points, degree, t):color_map = ['blue', 'red', 'green', 'yellow', 'violet', 'orange', 'white', ]draw_triangle(points, color_map[degree], t)if degree > 0:sierpinski([points[0], get_mid(points[0], points[1]), get_mid(points[0], points[2])], degree - 1, t)sierpinski([points[1], get_mid(points[0], points[1]), get_mid(points[1], points[2])], degree - 1, t)sierpinski([points[2], get_mid(points[0], points[2]), get_mid(points[1], points[2])], degree - 1, t)if __name__ == "__main__":t = turtle.Turtle()t.speed(5)win = turtle.Screen()points = [[-100, -50], [0, 100], [100, -50]]sierpinski(points, 3, t)t.hideturtle()win.exitonclick()
turtle库使用教程 及 绘制 浪漫樱花 五角星 彩虹玫瑰 谢尔宾斯基三角形 实例相关推荐
- 学习Python中turtle模块的基本用法(4:绘制科赫曲线和谢尔宾斯基三角形)
科赫曲线和谢尔宾斯基三角形是常见的分形图形(详细介绍见参考文献1),本文使用turtle库绘制这两类图形. 科赫曲线 科赫曲线的详细介绍见参考文献2,其中的绘图思路是"画正三角形,并 ...
- Python实验舱谢尔宾斯基三角形绘制教程
三角形,大家应该再熟悉不过了. 上图是一个由四个小三角形拼成的大三角形,也叫谢尔宾斯基三角形. 谢尔宾斯基三角形还能继续画下去: 2阶(上图是1阶): 3阶: 5阶: 8阶: (小编奉劝一句:不要试图 ...
- python螺旋圆的绘制_python 使用turtule绘制递归图形(螺旋、二叉树、谢尔宾斯基三角形)...
插图工具使用Python内置的turtle模块,为什么叫这个turtle乌龟这个名字呢,可以这样理解,创建一个乌龟,乌龟能前进.后退.左转.右转,乌龟的尾巴朝下,它移动时就会画一条线.并且为了增加乌龟 ...
- Java面向对象编程:利用递归思想绘制“谢尔宾斯基地毯”和“谢尔宾斯基三角形”
1.递归:在方法中调用本方法. 2.递归调用会无限循环下去,因此方法体中必须有结束方法的条件.返回值为void时通常写为: if (条件) {return; } 下面使用递归绘制"谢尔宾斯基 ...
- Python数据结构15:turtle模块制图,画直线,正方形,星星,递归可视化:分形树,谢尔宾斯基三角形
1. Python中的turtle模块制图 前面已经讲了递归的原理,这里用递归作图来直观的理解递归. 首先了解以下Python中用于作图的内置海龟作图系统turtle module. Python内置 ...
- 小练手:用Canvas绘制谢尔宾斯基三角形
转载<小练手:用Canvas绘制谢尔宾斯基三角形> 补充 作者第二种画法的完整程序: PS:修改function SierpinskiTriangle(p,len,depth = 9)中d ...
- Python实验舱谢尔宾斯基地毯绘制教程
谢尔宾斯基地毯,和谢尔宾斯基三角形相似,下图就是谢尔宾斯基地毯 一,起始代码 p.width(3) p.speed(10) import turtle n=int(input()) base=int( ...
- python绘制分形图基础_Python 绘制分形图(曼德勃罗集、分形树叶、科赫曲线、分形龙、谢尔宾斯基三角等)附代码...
1. 曼德勃罗集 import numpy as np import pylab as pl import time from matplotlib import cm def iter_point( ...
- python基础教程:通过Turtle库在Python中绘制一个鼠年福鼠
这篇文章主要介绍了通过Turtle库在Python中绘制一个鼠年福鼠,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下 turtle库是一个很经典的绘图库,其最初来自 ...
最新文章
- 修复mysql数据库供应商_修复MYSQL数据库
- 掌握 Linux 调试技术【转】
- 你为何如此优秀?| 神策数据 2018 年获奖集锦
- 浙南联合训练赛20180414
- ubuntu 下LAMP服务器环境搭建
- Kali Linux Web 渗透测试秘籍 第八章 中间人攻击
- Airbnb基于Embedding技术的实时个性化推荐
- 再学 GDI+[65]: 路径画刷(5) - SetGammaCorrection
- 【易实战】Spring Cloud Greenwich Eureka:服务注册与发现
- 扫雷游戏网页版_《我的世界》简单的两款小游戏 带你回味和同学在电脑课上的时光...
- Bootstrap-CSS全样式
- 小程序手写板电子签名
- javacv教程文档手册开发指南汇总篇
- sun服务器文件系统扩容,应用服务器侧扩容LUN(Solaris)
- ubuntu16.04掉显卡驱动解决方法
- separator path php,php常量 DIRECTORY_SEPARATOR 和 PATH_SEPARATOR
- 一文告诉你CXL是什么,有什么新的机会 (上)
- 【Golang实战】——XPath解析网页
- 本科计算机与科学毕业论文,计算机科学与技术专业本科生毕业论文
- html 手机qq图片预览,模拟QQ心情图片上传预览示例
热门文章
- 202012798范明霞的博客
- 14、微信小程序——上传、预览、长按删除图片
- 成年人英语速成指南(附资源及工具)
- Python安装教程和Pycham教程
- Jenkins 重启出现Error 403 No valid crumb was included in the request
- 面试可能遇到java基础知识
- 友豆火山CPG插件开发003-顶级对象
- C++程序的存储空间布局
- matlab累加数组的前n行,有一组m行n列的数组,在matlab中如何编程,每三个数求一次平均数(行与列分别求)?...
- 原创|实时数仓实战项目-第三节(数仓治理)