首页 > 编程语言 >python turtle 递归绘制树

python turtle 递归绘制树

时间:2024-02-08 17:55:20浏览次数:27  
标签:turtle 10 agl 递归 randint python pencolor drawBranch forward

运行效果

image

代码

import turtle as t
import random as r

c = ["pink", "green", "lightgreen", "orange", "red", "purple"]

def drawStar(l):
    t.begin_fill()
    for i in range(5):
        t.forward(l)
        t.left(144)
    t.end_fill()
        

def drawBranch(l):
    agl = r.randint(10, 30)
    t.left(agl)
    t.forward(l)
    if l > 10:
        drawBranch(l - r.randint(10, 15))
    else:
        t.pencolor(r.choice(c))
        drawStar(r.randint(10, 20))
        t.pencolor("black")
    t.backward(l)
    t.right(agl)
    agl = r.randint(10, 30)
    t.right(agl)
    t.forward(l)
    if l > 10:
        drawBranch(l - r.randint(10, 15))
    else:
        t.pencolor(r.choice(c))
        drawStar(r.randint(10, 20))
        t.pencolor("black")
    t.backward(l)
    t.left(agl)

# t.speed(0)
t.tracer(False)
t.penup()
t.goto(0,-300)
t.pendown()
t.left(90)
t.forward(50)
drawBranch(100)
t.done()

标签:turtle,10,agl,递归,randint,python,pencolor,drawBranch,forward
From: https://www.cnblogs.com/AaronMing/p/18011981

相关文章

  • 【Python】基于动态残差学习的堆叠式LSTM模型和传统BP在股票预测中的应用
    1.前言本论文探讨了长短时记忆网络(LSTM)和反向传播神经网络(BP)在股票价格预测中的应用。首先,我们介绍了LSTM和BP在时间序列预测中的基本原理和应用背景。通过对比分析两者的优缺点,我们选择了LSTM作为基础模型,因其能够有效处理时间序列数据中的长期依赖关系,在基础LSTM模型的基础上,......
  • Python与anaconda的 pip 冲突
    Python与anaconda的pip冲突1.默认pipinstall会安装到Anaconda下假如我们想要安装到python目录下D:\Python\Python36\Lib\site-packages找到Anaconda安装目录:D:\Anaconda3\python.exe2.验证原生python3python3–mpip–-versionpython3–mpiplist#......
  • python版本管理工具pyenv常见用法
    安装Mac使用brew进行安装:brewupdatebrewinstallpyenv配置环境变量(以zsh为例):echo'exportPYENV_ROOT="$HOME/.pyenv"'>>~/.zshrcecho'[[-d$PYENV_ROOT/bin]]&&exportPATH="$PYENV_ROOT/bin:$PATH"'>&g......
  • Python进行AI声音克隆的端到端指南
    人工智能语音克隆是一种捕捉声音的独特特征,然后准确性复制它的技术。这种技术不仅可以让我们复制现有的声音,还可以创造全新的声音。它是一种彻底改变内容创作的工具,从个性化歌曲到自定义画外音,开辟了一个超越语言和文化障碍的创意世界。本文的将提供利用AI语音克隆技术-通过训练......
  • 爬取 【豆瓣电影top250数据】 python代码
    importrequestsimportopenpyxlimportreimporttimeimportpymysqlclassDoubanSpider:def__init__(self):self.url_temp="https://movie.douban.com/top250?start={}"self.headers={'User-Agent':'Mozilla/5.0......
  • 用python写一个并发测试工具
    工作中会有一些需要并发测试的场景,例如:两人同时操作一条数据,此时需要验证结果是否符合预期 最初是借助jmeter来进行并发测试,建2个线程组,每个线程组中各放一个接口,启动时会同时执行个线程组中的接口,从而实现并发测试的目的但是每次都要打开jmeter,用起来不太方便,所以就尝试用pyt......
  • Python监控服务器
    Python代码如下: importpsutilimporttimeimportpymysqldb=pymysql.connect(user="root",passwd="root",db="test",host="127.0.0.1")db.autocommit(True)cur=db.cursor()defgetinfo():mem=psutil.virtua......
  • Ubuntu源码安装Python
    Ubuntu源码安装Python目前Ubuntu电脑需要升级Python,但根据源来升级,会出现报错,故记录用源码升级的方法。从官方链接下载源码:https://www.python.org/downloads/source/根据自己需求下载对应版本即可。这里笔者下载的是Python-3.10.0rc2.tgz解压:tar-zxvfPython-3.10.0rc......
  • RAPTOR:递归摘要与树形检索的结合,提升RAG检索性能
    RAPTOR:递归摘要与树形检索的结合,提升RAG检索性能来源:ICLR'24https://arxiv.org/pdf/2401.18059.pdf随着LLM技术的发展,RAG的价值也来越明显,可以视作LLM应用、落地的一个主要方向。RAG通过结合检索系统和生成模型,在生成回答时先从外部知识库种检索相关信息,辅助LLM进行更......
  • Python实现软件设计模式9:组合模式 Composite Pattern
    动机如何将容器和叶子进行递归组合,使得用户在使用时无须对它们进行区分,可以一致地对待容器和叶子?典型案例如:文件系统,在树形目录结构中,包含文件和文件夹两类不同的元素;在文件夹中可以继续包含文件或子文件夹,在文件中不能再包含子文件或者子文件夹。概念组合多个对象形成树形......