Python使用Turtle库绘制一棵西兰花


Posted in Python onNovember 23, 2019

Turtle库是Python中一个强大的绘制图像的函数库,灵活使用Turtle库可以绘制各种好看的图像。

下面介绍使用Turtle库绘制一棵西兰花。

绘制一棵西兰花,从主干出发以一定的角度向左向右生成对称的枝干,再从每个枝干出发向左向右生成对称的枝干,循环此动作,并最终绘制出一棵漂亮的西兰花。

首先导入Turtle库,并设置画笔大小、画笔速度及颜色,并隐藏画笔

from turtle import Turtle
p=Turtle()
p.pensize(5)
p.color(clr)
p.hideturtle()
p.getscreen().tracer(30,0)

设置起始方向以及位置(屏幕中心为坐标原点)

p.left(90)
p.penup()
p.goto(x,y)
p.pendown()

设置画笔完成之后,开始绘制西兰花,首先绘制从开始画位置向着预定的方向前进一段距离,并向左向右分成两个对称的分支

p.forward(l)
q=p.clone()
p.left(a)
q.right(a)

每完成一次分支后就将两个分支对象添加到list中,并通过遍历list完成整个图像的绘制

def tree(plist,l,a,f):
  if l>5:
    lst=[]
    for p in plist:
      p.forward(l)
      q=p.clone()
      p.left(a)
      q.right(a)
      lst.append(p)
      lst.append(q)
    tree(lst,l*f,a,f)

在程序中通过递归调用完成了一棵西兰花的绘制。

程序剩余代码如下:

def maketree(x,y,clr):
  p=Turtle()
  p.pensize(5)
  p.color(clr)
  p.hideturtle()
  p.getscreen().tracer(30,0)
  #p.speed(10)
  p.left(90)
  p.penup()
  p.goto(x,y)
  p.pendown()
  t=tree([p],200,20,0.6375)
  #print(len(p.getscreen().turtles()))

def main():
  maketree(0,-300,"green")

main()

以上这篇Python使用Turtle库绘制一棵西兰花就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python数据结构与算法之使用队列解决小猫钓鱼问题
Dec 14 Python
完美解决Pycharm无法导入包的问题 Unresolved reference
May 18 Python
python requests爬取高德地图数据的实例
Nov 10 Python
python将字符串转换成json的方法小结
Jul 09 Python
PyQt 图解Qt Designer工具的使用方法
Aug 06 Python
深入学习python多线程与GIL
Aug 26 Python
Python读取实时数据流示例
Dec 02 Python
python GUI库图形界面开发之PyQt5单行文本框控件QLineEdit详细使用方法与实例
Feb 27 Python
python实现FTP循环上传文件
Mar 20 Python
python查找特定名称文件并按序号、文件名分行打印输出的方法
Apr 24 Python
Python2.6版本pip安装步骤解析
Aug 17 Python
Pytorch 如何实现LSTM时间序列预测
May 17 Python
用Python实现校园通知更新提醒功能
Nov 23 #Python
利用Python的turtle库绘制玫瑰教程
Nov 23 #Python
Python input函数使用实例解析
Nov 22 #Python
python循环输出三角形图案的例子
Nov 22 #Python
Python-Flask:动态创建表的示例详解
Nov 22 #Python
python flask中动态URL规则详解
Nov 22 #Python
Python之——生成动态路由轨迹图的实例
Nov 22 #Python
You might like
主流PHP框架的优缺点对比分析
2014/12/25 PHP
PHP实现json_decode不转义中文的方法
2017/05/20 PHP
tp5.1 框架数据库-数据集操作实例分析
2020/05/26 PHP
javascript中创建对象的三种常用方法
2010/12/30 Javascript
jQuery.event兼容各浏览器的event详细解析
2013/12/18 Javascript
在NodeJS中启用ECMAScript 6小结(windos以及Linux)
2014/07/15 NodeJs
详解JavaScript 中的 replace 方法
2016/01/01 Javascript
JavaScript实现输入框(密码框)出现提示语
2016/01/12 Javascript
JS实现的将html转为pdf功能【基于浏览器端插件jsPDF】
2018/02/06 Javascript
jQuery实现的3D版图片轮播示例【滑动轮播】
2019/01/18 jQuery
关于vue状态过渡transition不起作用的原因解决
2019/04/09 Javascript
layui之数据表格--与后台交互获取数据的方法
2019/09/29 Javascript
Vue学习之组件用法实例详解
2020/01/06 Javascript
js实现磁性吸附的示例
2020/10/26 Javascript
创建与框架无关的JavaScript插件
2020/12/01 Javascript
[02:50]2014DOTA2 TI预选赛预选赛 大神专访第一弹!
2014/05/21 DOTA
Python模块结构与布局操作方法实例分析
2017/07/24 Python
Python语言实现百度语音识别API的使用实例
2017/12/13 Python
Python基于csv模块实现读取与写入csv数据的方法
2018/01/18 Python
数据清洗--DataFrame中的空值处理方法
2018/07/03 Python
Django框架 Pagination分页实现代码实例
2019/09/04 Python
使用Python matplotlib作图时,设置横纵坐标轴数值以百分比(%)显示
2020/05/16 Python
win10安装python3.6的常见问题
2020/07/01 Python
python中np是做什么的
2020/07/21 Python
html5指南-1.html5全局属性(html5 global attributes)深入理解
2013/01/07 HTML / CSS
HTML5中input[type='date']自定义样式与日历校验功能的实现代码
2017/07/11 HTML / CSS
ESDlife健康生活易:身体检查预订、搜寻及比较
2019/05/10 全球购物
大学生学习党课思想汇报
2014/01/03 职场文书
致垒球运动员加油稿
2014/02/16 职场文书
《四季》教学反思
2014/04/08 职场文书
社区娱乐活动方案
2014/08/21 职场文书
教师遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
党员教师群众路线思想汇报范文
2014/10/28 职场文书
2016大学自主招生推荐信范文
2015/03/23 职场文书
2015年档案管理工作总结
2015/04/08 职场文书
《抽屉原理》教学反思
2016/02/20 职场文书