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入门之语句(if语句、while语句、for语句)
Jan 19 Python
深入讨论Python函数的参数的默认值所引发的问题的原因
Mar 30 Python
python自然语言编码转换模块codecs介绍
Apr 08 Python
Python中处理字符串之endswith()方法的使用简介
May 18 Python
django中send_mail功能实现详解
Feb 06 Python
python3+PyQt5+Qt Designer实现堆叠窗口部件
Apr 20 Python
Python编程中NotImplementedError的使用方法
Apr 21 Python
Python实现购物评论文本情感分析操作【基于中文文本挖掘库snownlp】
Aug 07 Python
pandas 条件搜索返回列表的方法
Oct 30 Python
django rest framework 过滤时间操作
Jul 12 Python
关于python scrapy中添加cookie踩坑记录
Nov 17 Python
如何使用Python对NetCDF数据做空间相关分析
Apr 21 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 上传文件的方法(类)
2009/07/30 PHP
Zend Framework处理Json数据方法详解
2016/12/09 PHP
PHP实现文件上传功能实例代码
2017/05/18 PHP
Redis在Laravel项目中的应用实例详解
2017/08/11 PHP
点图片上一页下一页翻页效果
2008/07/09 Javascript
Jquery 表格合并的问题分享
2011/09/17 Javascript
js二维数组排序的简单示例代码
2014/01/24 Javascript
jQuery中append()方法用法实例
2014/12/25 Javascript
jquery实现的伪分页效果代码
2015/10/29 Javascript
Jqprint实现页面打印
2017/01/06 Javascript
AngularJS中的promise用法分析
2017/05/19 Javascript
Vue.js中轻松解决v-for执行出错的三个方案
2017/06/09 Javascript
将Sublime Text 3 添加到右键中的简单方法
2017/12/12 Javascript
尝试自己动手用react来写一个分页组件(小结)
2018/02/09 Javascript
Vue实现6位数密码效果
2018/08/18 Javascript
layer实现弹出层自动调节位置
2019/09/05 Javascript
node.js实现简单的压缩/解压缩功能示例
2019/11/05 Javascript
javascript设计模式 ? 中介者模式原理与用法实例分析
2020/04/20 Javascript
[51:36]Optic vs Newbee 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
python爬虫入门教程--正则表达式完全指南(五)
2017/05/25 Python
python删除本地夹里重复文件的方法
2020/11/19 Python
Python操作mongodb数据库进行模糊查询操作示例
2018/06/09 Python
Python爬虫之pandas基本安装与使用方法示例
2018/08/08 Python
Python 实现异步调用函数的示例讲解
2018/10/14 Python
python使用suds调用webservice接口的方法
2019/01/03 Python
营业经理岗位职责
2013/11/10 职场文书
机械专业毕业生推荐信范文
2013/11/25 职场文书
安全协议书范本
2014/04/21 职场文书
高三学生评语大全
2014/04/25 职场文书
医院深入开展党的群众路线教育实践活动实施方案
2014/08/27 职场文书
承租经营合作者协议书
2014/10/01 职场文书
承诺函格式模板
2015/01/21 职场文书
万里长城导游词
2015/01/30 职场文书
经理岗位职责
2015/02/02 职场文书
教师读书笔记
2015/06/29 职场文书
flex弹性布局详解
2022/03/20 HTML / CSS