python螺旋圆的绘制_python 使用turtule绘制递归图形(螺旋、二叉树、谢尔宾斯基三角形)...

插图工具使用Python内置的turtle模块,为什么叫这个turtle乌龟这个名字呢,可以这样理解,创建一个乌龟,乌龟能前进、后退、左转、右转,乌龟的尾巴朝下,它移动时就会画一条线。并且为了增加乌龟画图的艺术价值,可以改变尾巴宽度和尾巴浸入墨水的颜色。

1.递归绘制螺旋

我们让乌龟以line_len长度前进,然后向右旋转90°,然后缩短line_len长度递归调用draw_spiral函数

importturtle

my_turtle=turtle.Turtle()

my_win=turtle.Screen()defdraw_spiral(tur, line_len):if line_len >0:

my_turtle.forward(line_len)

my_turtle.right(90)

draw_spiral(tur, line_len- 1)

draw_spiral(my_turtle,100)

my_win.exitonclick()

1032811-20190530094106144-57339513.png

2.递归绘制二叉树

首先绘制branch_length长度的主干枝条,然后向右旋转20°,递归调用draw_tree绘制主干枝条上的右分支,之后再向左旋转40°(因为需要抵消右旋转的20°),递归调用draw_tree绘制主干枝条的左分支,然后再向右旋转20°,原路返回。

importturtle

my_tree=turtle.Turtle()

my_win=turtle.Screen()defdraw_tree(branch_length, t):if branch_length > 5:

t.forward(branch_length)

t.right(20)

draw_tree(branch_length-20, t)

t.left(40)

draw_tree(branch_length-20, t)

t.right(20)

t.backward(branch_length)

my_tree.left(90)

my_tree.up()#抬起尾巴

my_tree.backward(200)

my_tree.down()#放下尾巴

my_tree.color('green')

draw_tree(100, my_tree)

my_win.exitonclick()

1032811-20190530101745639-21206418.png

3.绘制谢尔宾斯基三角形

谢尔宾斯基三角形使用了三路递归算法,从一个大三角形开始,通过连接每一个边的中点,将大三角型分为四个三角形,然后忽略中间的三角形,依次对其余三个三角形执行上述操作。

importturtledefdraw_triangle(points, color, my_angle):

my_angle.fillcolor(color)

my_angle.up()

my_angle.goto(points[0][0], points[0][1])

my_angle.down()

my_angle.begin_fill()

my_angle.goto(points[1][0], points[1][1])

my_angle.goto(points[2][0], points[2][1])

my_angle.goto(points[0][0], points[0][1])

my_angle.end_fill()defget_mid(p1, p2):return ((p1[0]+p2[0])/2, (p1[1]+p2[1])/2)defsierpinski(points, degree, my_angle):

colormap= ['blue', 'red', 'green', 'yellow','violet', 'orange', 'white']

draw_triangle(points, colormap[degree], my_angle)if degree >0:

sierpinski([points[0],

get_mid(points[0], points[1]),

get_mid(points[0], points[2])],

degree- 1, my_angle)

sierpinski([points[1],

get_mid(points[0], points[1]),

get_mid(points[1], points[2])],

degree- 1, my_angle)

sierpinski([points[2],

get_mid(points[2], points[1]),

get_mid(points[0], points[2])],

degree- 1, my_angle)

my_turtle=turtle.Turtle()

my_win=turtle.Screen()

my_points= [[-100, -50], [0, 100], [100, -50]]

sierpinski(my_points,3, my_turtle)

my_win.exitonclick()

1032811-20190530105817845-84761360.png

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

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

相关文章

教室信息管理系统mysql_教师信息管理系统(方式一:数据库为oracle数据库;方式二:存储在文件中)...

方式一:运行截图数据库的sql语句:/*Navicat Oracle Data TransferOracle Client Version : 12.1.0.2.0Source Server : ORCZYTSource Server Version : 120100Source Host : localhost:1521Source Schema : C##ZYTTarget Server Type : ORACLETarget Ser…

mysql having ct_mysql中where和having子句的区别和具体用法

1.mysql中的where和having子句的区别having的用法having字句可以让我们筛选成组后的各种数据,where字句在聚合前先筛选记录,也就是说作用在group by和having字句前。而 having子句在聚合后对组记录进行筛选。SQL实例:1.1.显示每个地区的总人口…

Linux rcp命令教程:如何在远程主机和本地之间复制文件(附实例详解和注意事项)

Linux rcp命令介绍 rcp是remote copy的缩写,它是Linux系统中用于在本地主机和远程主机之间复制文件或目录的命令。虽然有更安全的方法(如scp或rsync)可以完成这项任务,但rcp命令让你以简单的方式在两台计算机之间复制文件&#x…

python圆形_Python中的圆形范围

非常感谢大家。在 我实现了我想要的crange(参考Ni和J.F.Sebastian)。在import math class crange: def __init__(self, start, stop, stepNone, moduloNone): if step 0: raise ValueError(crange() arg 3 must not be zero) if step is None and modul…

python实例化对象有new吗_PHP new:实例化对象

前面我们介绍了怎么定义一个类,但是我们要使用类中的属性和方法并不像使用变量和函数那样简单,首先要对类进行实例化才行,下面就来详细介绍一下。 实例化对象 将类实例化成对象非常容易,只需要使用new关键字并在后面加上一个和类名…

note.js和mysql的优劣_nginx与Node.js的优缺点是什么?

ngx相对node有这么几个较大的优点:1.性能更高,毕竟C写的,而且ngx的epoll是裸的,node的epoll是libuv封装的。2.完备的静态资源支持……这个就不说了,你用node写一个和ngx工作完全一致的静态资源库试试……当然npm上有现…

python实现xmind_Python xmind库(生成框架图)

小编在测试日常工作中遇到一个费时的问题,如何将excel中的测试用例,生成测试框架图?经过查阅发现的python xmind库 将excel中的测试用例,生成测试框架图,分为2步 1.解析excel,取出excel中数据(此…

pythondistutils安装_python – 与distutils / pip一起安装Bash完成

我创建了一个简单的Python模块,并希望用pip进行分发.我还想与模块一起安装Bash完成文件.我正在使用Python 2.7.1和pip 0.8.2安装模块.我有这个setup.py:setup(namejenkinsmon,version0.0.1,descriptionJenkins Job Monitor,long_descriptionopen(README.txt).read()…

python代码解读软件_5种带你轻松分析Python代码的软件库

通常,人们会使用两种速度来衡量某种编程语言的优劣,即:开发速度和执行速度。对于Python而言,大家往往受益的是它能够快速地编写代码,而忽略了它是否能够快速地运行,并及时完成既定的任务。因此,…

python try else_python try/except/else与递归

Python版本:2.7。操作系统:Windows 10 64位。在 注意:我找到了一种方法来解决下面描述的问题,它不使用try/except/else语句。我问下面的问题仅仅是因为我很好奇为什么代码的行为方式是这样的,以及是否有一种方法可以使…

python闭包怎么理解_Python:闭包的理解

很多函数型的语言都有闭包这一概念,比如python的兄弟js。人们刚听到闭包这一概念总会觉得它很晦涩,难以理解。其实不然,主要是他的名字起得太抽象了,让人误以为很难。下面举一个例子:#coding:utf-8def foo():nums [0]…

mac ssh客户端_Electerm for Mac(ssh客户端)

Electerm for Mac是一款功能强大的,作为终端或ssh / sftp客户端(类似于xshell)为一体的工具,支持多平台(linux,mac,win),还有自定义终端样式,全局/会话代理,将书签/主题/快速命令同步到github s…

alpine登陆mysql_如何构建一个php7-alpine的docker镜像

我花了大概一周的时间进行了各种踩坑及实验,最终得出了一份可以使用的dockerfile及compose内含如下支持php7mysql_pdopostgre_pdophpredisswoole(可选,如应用swoole,dockerfile及nginx的配置会有所变化)dockerfile分为两部分,一部…

armbian nginx 部署博客_通过Git将Hexo博客部署到服务器

本文首发于我的个人博客https://orxing.top,欢迎来访服务器是用的阿里云ECS CentOS,本来是用来部署WordPress的,后来接触了Hexo,就把Hexo直接部署到了GitHub pages和Coding Pages上,但是最近发现Coding pages经常抽风&…

shell把mysql每句导出_shell实现,将mysql每个存储过程导出为单个文件_MySQL

#shell实现,将mysql中存储过程代码直接导出为文件dbcn"mysql -h172.16.1.194 -uroot -p123456 ";dbBCReport_Sync_Executor;ii0;ct$dbcn -N -e " select count(1) from mysql.proc as p where 11 and p.db$db and p.type like P%;";mkdir -p /c…

python弹出窗口后卡死_python的tkinter模块GUI编程为啥用了while循环之后就会使得程序出现卡死未响应崩溃?...

这位同学,首先无代码无真相。只能在这里猜测一下,你在GUI界面中点击了某个按钮,调用的函数然后触发了某种while循环,这个时候前台GUI将“未响应”卡死。不过一旦调用函数的while循环结束,GUI界面将再次可用。 不使用线…

python 字符串格式化语法_Python基础语法--字符串格式化

PS:在学习到Python的字符串格式化一些个人的总结,利用字符串格式化可以更好的对代码结果进行格式化输出语法栗子 例子中通过接收用户输入的值,赋值给sex_input和age_input生成两个变量,并根据判断输出相应的语句,and是…

springmvc跳转html_SpringMVC基础(三)

本篇文章主要整理了数据处理、乱码处理和Json的相关知识。参考的狂神说的公众号以及视频。所有代码亲测有效。数据处理主要包括处理提交的数据以及将数据显示到前端。处理提交的数据一般有三种情况:(1)提交的域的名称和方法的参数名称一致时:RequestMapp…

mysql-5.7.24初始化数据库_MySQL5.7.28 初始化数据库

1)初始化随机密码 mysqld --initialize[roothost-172-16-61-102 bin]# ./mysqld --initialize2020-02-15T07:01:38.309015Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documenta…

查看本机所有请求_【松勤教育】Fiddler抓包-只抓APP的请求

fiddler抓手机app的请求,估计大部分都会,但是如何只抓来自app的请求呢?把来自pc的请求过滤掉,因为请求太多,这样会找不到重要的信息了。环境准备:1.电脑上已装fiddler2.手机和电脑在同一局域网一、设置1.fi…