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 流程控制实例代码
Sep 25 Python
使用Node.js和Socket.IO扩展Django的实时处理功能
Apr 20 Python
查看Python安装路径以及安装包路径小技巧
Apr 28 Python
初步剖析C语言编程中的结构体
Jan 16 Python
使用pyecharts无法import Bar的解决方案
Apr 23 Python
python+pyqt5实现KFC点餐收银系统
Jan 24 Python
python tkinter canvas 显示图片的示例
Jun 13 Python
Django如何自定义model创建数据库索引的顺序
Jun 20 Python
解决Ubuntu18中的pycharm不能调用tensorflow-gpu的问题
Sep 17 Python
利用python实现汉诺塔游戏
Mar 01 Python
python爬取豆瓣电影TOP250数据
May 23 Python
解决Pytorch dataloader时报错每个tensor维度不一样的问题
May 28 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
全新的PDO数据库操作类php版(仅适用Mysql)
2012/07/22 PHP
PHP中iconv函数知识汇总
2015/07/02 PHP
php 后端实现JWT认证方法示例
2018/09/04 PHP
JavaScript 申明函数的三种方法 每个函数就是一个对象(一)
2009/12/04 Javascript
IE JS无提示关闭窗口不提示的方法
2010/04/29 Javascript
用Mootools获得操作索引的两种方法分享
2011/12/12 Javascript
你必须知道的JavaScript 中字符串连接的性能的一些问题
2013/05/07 Javascript
Extjs单独定义各组件的实例代码
2013/06/25 Javascript
div模拟选择框示例代码
2013/11/03 Javascript
如何调试异步加载页面里包含的js文件
2014/10/30 Javascript
javascript 常用验证函数总结
2016/06/28 Javascript
AngularJS使用ng-class动态增减class样式的方法示例
2017/05/18 Javascript
Vue2仿淘宝实现省市区三级联动
2020/04/15 Javascript
jQuery的Ajax接收java返回数据方法
2018/08/11 jQuery
node.js监听文件变化的实现方法
2019/04/17 Javascript
JS匿名函数内部this指向问题详析
2019/05/10 Javascript
关于JS模块化的知识点分享
2019/10/16 Javascript
[52:12]FNATIC vs Infamous 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
关于Django外键赋值问题详解
2017/08/13 Python
python PyTorch预训练示例
2018/02/11 Python
python3使用matplotlib绘制条形图
2020/03/25 Python
Django 通过JS实现ajax过程详解
2019/07/30 Python
Python基础之变量基本用法与进阶详解
2020/01/03 Python
Python和Bash结合在一起的方法
2020/11/13 Python
大学生简单自荐信
2013/11/10 职场文书
房地产开盘策划方案
2014/02/10 职场文书
名企HR怎样看待求职信
2014/02/23 职场文书
就业协议书怎么填
2014/04/11 职场文书
村干部四风问题整改措施
2014/09/30 职场文书
党干部专题民主生活会对照检查材料思想汇报
2014/10/06 职场文书
检讨书格式范文
2015/05/07 职场文书
反邪教警示教育活动总结
2015/05/09 职场文书
六年级上册《闻官军收河南河北》的教学设计
2019/11/15 职场文书
Mysql数据库命令大全
2021/05/26 MySQL
JavaScript实现简单拖拽效果
2021/09/15 Javascript
类和原型的设计模式之复制与委托差异
2022/07/07 Javascript