「Python海龟画图」利用海龟画笔绘制分形树

 

绘制旋转图形

功能要求

利用函数递归绘制由多条直线组成的旋转图形,每条直线的颜色随机产生;并且隐藏画笔、设置画笔的速度、设置画布的背景色。

实例代码

import turtle               # 导入海龟模块import random               # 导入随机数turtle.ht()                 # 隐藏海龟画笔turtle.speed(0)             # 设置画笔速度turtle.colormode(255)       # 设置颜色模式turtle.bgcolor("lavender")  # 设置画布的背景颜色'''定义绘制旋转曲线的函数length参数表示绘制矩形的边长'''def drawRectangle(length):r, g, b = random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)# 随机获得画笔的rgb值turtle.pencolor(r, g, b)    # 根据rgb的设置画笔的颜色if length <= 0:             # 当矩形边长小于等于0时停止画图returnturtle.forward(length)      # 绘制长度为length的线段turtle.right(91)            # 画笔向右旋转91°drawRectangle(length - 1)   # 递归调用drawRectangle函数,线段长度-1drawRectangle(100)  # 调用drawRectangle函数绘制由100条直线绘制的图形turtle.done()       # 暂停程序,停止画笔绘制

运行结果

 

代码分析

def drawRectangle(length):

    ……

    if length <= 0:             # 当矩形边长小于等于0时停止画图

        return

    ……

    drawRectangle(length - 1)   # 递归调用drawRectangle函数,线段长度-1:定义drawRectangle(length)函数用于绘制矩形,在函数中调用drawRectangle(length - 1)函数【即调用自身函数】,这样的函数调用被称为递归调用。注意:在函数递归调用时要编写函数的出口来结束函数的递归调用,否则会出现函数已知被调用,内存溢出。

if length <= 0:             # 当矩形边长小于等于0时停止画图

    return:在drawRectangle(length)函数中表示当length小于等于0时drawRectangle(length)函数不在被调用,函数停止调用。

drawRectangle(100):调用drawRectangle函数绘制由100条直线绘制的图形

绘制分形树

功能要求

利用函数递归调用绘制一个分形树,每个树枝的的颜色随机产生,每个树枝的粗细为树枝长的1/10,每个树枝分出左右两个树枝,即向左和向右个旋转45°角,第一个主干的长度为120,每次个分支先画完左分支在回到起点绘制有分支;并且隐藏画笔、设置画笔的速度、设置画布的背景色。

实例代码

import turtle               # 导入海龟模块import random               # 导入随机数turtle.ht()                 # 隐藏海龟画笔turtle.speed(0)             # 设置画笔速度turtle.colormode(255)       # 设置颜色模式turtle.bgcolor("lavender")  # 设置画布的背景颜色length = 120                # 定义树干的长度turtle.pensize(length / 10) # 设置画笔的粗细# 设置第一个树枝的起点位置turtle.penup()turtle.goto(0, -length)turtle.pendown()turtle.left(90)turtle.forward(length)      # 绘制第一个树枝'''绘制一课包括左右分支的树l参数表示树枝的长度lv参数表示树的层次'''def drawTree(l, lv):r, g, b = random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)turtle.pencolor(r, g, b)    # 设置树枝的颜色l = l * 3 / 4               # 设置树枝的长度turtle.pensize(l / 10)      # 设置树枝的宽度# 绘制左边枝干turtle.left(45)             # 向左转45°,准备绘制左分支树turtle.forward(l)           # 画出左边的树枝if lv > 0:                  # 当树的层次大于0,递归调用drawTree绘制下颗左树drawTree(l, lv - 1)# 退回到原点turtle.backward(l)          # 画笔回到原点turtle.right(45)            # 画笔的角度还原# 绘制右边枝干turtle.right(45)            # 向右转45°,准备绘制右分支树turtle.forward(l)           # 画出左边的树枝if lv > 0:                  # 当树的层次大于0,递归调用drawTree绘制下颗右树drawTree(l, lv - 1)turtle.backward(l)          # 画笔回到原点turtle.left(45)             # 画笔的角度还原turtle.pensize(l / 10)      # 画笔宽度还原drawTree(length, 8)     # 绘制树干长度为length,树枝深度为5的分形树turtle.done()           # 暂停程序,停止画笔绘制

运行结果

 

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

qpython3手机版turtle_使用Python turtle画一片树林

原标题&#xff1a;使用Python turtle画一片树林 使用Python Turtle绘制一片树林代码 这段代码结合了随机函数来使树林更多样化&#xff0c;同时设置了颜色的渐变。几乎每句都有注释&#xff0c;还有不懂的函数可以到官方手册查 示例中的yield语句和pass语句的用法非常精髓&…

DC电源模块关于的电路布局设计

BOSHIDA DC电源模块关于的电路布局设计 DC电源模块是现代电子设备中常用的电源模块之一&#xff0c;其功能是将市电或其他输入电源转换成定电压、定电流的直流电源输出&#xff0c;以满足电子设备的供电需求。电路布局的设计是DC电源模块的重要组成部分&#xff0c;它直接影响…

chrome V3 插件开发 基础

目录 准备popup通信popup 发消息给 backgroundpopup 发消息给 content长期连接 如何页面上添加一个按钮&#xff1f;tabs.onUpdatedcontent-script.jsinject.js 右键菜单chrome.contextMenus举个例子添加关于报错&#xff08;cannot create item with duplicate id XXX&#xf…

论如何科学的看小本子

看本子的问题一直困扰着很多人&#xff0c;有些需要注册&#xff0c;有些没有资源&#xff0c;有些广告很多。 这里&#xff0c;推荐一款用起来比较好的本子应用。 大概长这个样子 这个东西怎么用&#xff1f;我不知道。 这个东西能干什么&#xff1f;我也不知道。 但是&am…

STM32入门——DMA数据搬运工

DMA简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取DMA可以提供外设和存储器或者存储器和存储器之间的高速数据传输&#xff0c;无须CPU干预&#xff0c;节省了CPU的资源12个独立可配置的通道&#xff1a; DMA1&#xff08;7个通道&#xff09;&#xff…

HTML+JavaScript构建一个将C/C++定义的ANSI字符串转换为MASM32定义的DWUniCode字符串的工具

公文一键排版系统基本完成&#xff0c;准备继续完善SysInfo&#xff0c;增加用户帐户信息&#xff0c;其中涉及到Win32_Account结构&#xff0c;其C定义如下&#xff1a; [Dynamic, Provider("CIMWin32"), UUID("{8502C4CC-5FBB-11D2-AAC1-006008C78BC7}"…

分享给大家一个免费使用网络字体的方法

如题&#xff0c;给各位朋友分享一个免费使用字体的方法&#xff0c;因为现在网上的字体大部分都需要付费使用&#xff0c;而我们有时候只需要字体中的一两个字&#xff0c;如果为这一两个字花十几块&#xff0c;还是有点肉疼的&#xff0c;尊重版权的另说&#xff1b; 好了&a…

质心计算公式

求曲线质心&#xff1a; 对于曲线L&#xff0c;设密度公式为F(x,y)&#xff0c;则质心公式为 这是求质心的x坐标&#xff0c;求另外一个坐标类似。同时&#xff0c;这个公式可以推广到多元函数求积分&#xff0c;原理依然是要求的坐标乘以密度公式积分除以密度公式做积分 求区…

能量信号和功率信号

能量信号为功率信号的积分&#xff0c;功率信号为能量信号的密度。对于一个信号&#xff0c;yf(x)&#xff0c;能量相当于曲线和x轴的积分面积&#xff0c;功率相当于y值。当一个信号的积分面积无穷大&#xff0c;但是能找到一个不是无穷大的平均y值&#xff0c;那么这就是功率…

信号能量、功率、功率谱密度、自相关函数公式总结

已知时域求能量与功率 若 x(t) 为能量讯号&#xff0c;其总能量&#xff1a; 若 x(t) 为功率信号&#xff0c;其平均功率&#xff1a; 若 x(t) 为周期信号且基本周期为 &#xff0c;其平均功率&#xff1a; 已知频域求能量 (1)由时域求能量&#xff1a; (2)根据傅立叶逆转…

瞬时功率与有功功率计算公式

一 基本概念 瞬时功率是指某一时刻电压与电流的乘积&#xff0c;记瞬时电压为u(t)&#xff0c;瞬时电流为i(t)&#xff0c;瞬时功率为p(t)&#xff0c;则&#xff1a;   瞬时功率计算公式 在交流电路中&#xff0c;有功功率是指一个周期内发出或负载消耗的瞬时功率的积分的…

关于光伏发电量计算公式疑问

GB50797&#xff0d;2012&#xff0c;光伏发电站设计规范中&#xff0c;对于“ E s E_s Es​——标准条件下的辐照度”的描述&#xff0c;在2.2.1章节中和6.6.2章节中表述不一致。 百度百科上辐照度的概念是&#xff1a; 辐射照度又称辐照度&#xff0c;是受照面单位面积上的辐…

能量估计

能量估计 设 ( x 0 , t 0 ) (x_0,t_0) (x0​,t0​) 为上半平面 Q Q Q 内任意点&#xff0c;通过这点向下做两条特征线 x x 0 a ( t 0 − t ) xx_0\pm a(t_0-t) xx0​a(t0​−t) &#xff0c;这两条特征线与 x x x 轴围成的三角形区域称为以 ( x 0 , t 0 ) (x_0,t_0) (x…

功率谱密度(功率信号)、能量谱密度(能量信号)详解

一、能量信号和功率信号 根据信号可以用能量式或功率式表示可分为能量信号和功率信号。 能量信号&#xff0c;如各类瞬变信号。 在非电量测量中&#xff0c;常将被测信号转换为电压或电流信号来处理。显然&#xff0c;电压信号加在单位电阻&#xff08;R1时&#xff09;上的瞬时…

图像熵的计算公式

【关联文章】&#xff1a;信息熵的数值计算公式_多元信息熵计算_Dust_Evc的博客-CSDN博客 图像熵&#xff08;image entropy&#xff09;是图像“繁忙”程度的估计值。 图像熵表示为图像灰度级集合的比特平均数&#xff0c;单位比特/像素&#xff0c;也描述了图像信源的平均信息…

第二章第十题(科学:计算能量)(Science: calculating energy)

2.10&#xff08;科学&#xff1a;计算能量&#xff09;编写程序&#xff0c;计算将水从初始温度加热到最终温度所需的能量。程序应该提示用户输入水的重量&#xff08;以千克为单位&#xff09;&#xff0c;以及水的初始温度和最终温度。 计算能量的公式是&#xff1a;Q M …

日常BUG —— Java判空注解

&#x1f61c;作 者&#xff1a;是江迪呀✒️本文关键词&#xff1a;日常BUG、BUG、问题分析☀️每日 一言 &#xff1a;存在错误说明你在进步&#xff01; 一. 问题描述 问题一&#xff1a; 在使用Java自带的注解NotNull、NotEmpty、NotBlank时报错&#xff0c;…

户外组网摆脱布线困扰,工业5G网关实现无人值守、远程实时监控

在物联网通信技术发达的2023&#xff0c;网络覆盖对所及之处的全面覆盖&#xff0c;科技发展的促使下很多高危户外场景也在思考如何利用无线技术提高人员安全及现场无人化管理。 煤矿是我们国家不可缺少的重要能源&#xff0c;其开采过程的危险系数也是众所皆知的&#xff0c;…

五子棋天人合一对局

五子棋使用了四子绝对双杀&#xff0c;打败了最高难度电脑《天人合一》。