绘制旋转图形

功能要求

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

实例代码

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()           # 暂停程序,停止画笔绘制

运行结果

「Python海龟画图」利用海龟画笔绘制分形树相关推荐

  1. 「Python海龟画图」利用海龟画笔绘制六芒星阵

    利用海龟笔绘制1/3圆弧 功能要求 利用海龟笔绘制一个半径为100的,1/3圆弧,并隐藏海龟画笔,设置画笔颜色,设置海龟笔的宽度和海龟笔的颜色. 实例代码 import turtle'''设置画笔和画 ...

  2. 「Python海龟画图」利用海龟画笔绘制满天星空

    设置海龟画布 功能要求 设置海龟画布大小为800×600,并设置画布的背景图(背景图片和Python源文件存放在同一个目录下). 实例代码 import turtleturtle.setup(800, ...

  3. 「Python海龟画图」利用海龟画笔绘制简易雪人

    设置画布画笔 功能要求 设置画笔的大小.设置画笔的速度.隐藏画笔,为绘制雪人做准备. 实例代码 turtle.hideturtle() # 隐藏画笔turtle.speed(0) # 设置画笔速度tu ...

  4. 「Python海龟画图」利用海龟画笔绘制八卦图

    绘制八卦图的边界线 功能要求 八卦图的最外边界是一个圆形,内部从中心点出发,被正反两个半径为外圆圈半径1/2的半圆弧划分开来. 实例代码 import turtle# 设置八卦图的中心位置turtle ...

  5. 「Python海龟画图」利用海龟画笔绘制镂空五角星

    分析镂空五角星边长的关系 计算分析 分析五角星和内接正五边形的边长关系.已知五角星的边长为l,求在同一直线上五角星的顶点到正五边形的顶点的距离,即r的值:以及正五边形的边长x的值.如下图所示: 已知正 ...

  6. 【Python入门】Turtle海龟库:利用海龟画笔绘制正方形

    Turtle海龟库:利用海龟画笔绘制正方形 创建海龟笔 功能要求 导入海龟模块.创建画笔. 实例代码 import turtlet = turtle.Pen() 运行结果 实例代码 import tu ...

  7. 【Python入门】Turtle海龟库:利用海龟画笔绘制简单图形(3)

    利用海龟笔绘制螺旋线 功能要求 使用海龟模块,利用循环结构绘制漂亮的螺旋线. 说明:螺旋线是有许多条边,每条边的长度是逐渐增加的.可以使用for循环依次增加边长.螺旋线的特点是由很多个边,每个边的长度 ...

  8. 【Python入门】Turtle海龟库:利用海龟画笔绘制简单图形(2)

    利用海龟笔绘制五角星 功能要求 使用海龟模块,利用循环结构绘制五角星. 提示:利用for循环绘制一个五角星.每次旋转角度应为144°,循环5次 实例代码 import turtlet = turtle ...

  9. 【Python入门】Turtle海龟库:利用海龟画笔绘制花瓣轮廓

    利用海龟笔绘制两段1/4弧形 实例说明 利用海龟笔绘制两段1/4弧形,如下图形 实例代码 import turtlet = turtle.Pen()t.pencolor("red" ...

最新文章

  1. java中byte、 int、char、long、float、double各占多少字节数?
  2. 【代码笔记】iOS-屏幕旋转
  3. 5、学MySQL前必须要了解的数据库专业术语
  4. 操作系统之多线程编程—读者优先/写者优先详解
  5. PB中如何调用shellExecute
  6. TeamCity : 自动触发 Build
  7. Java工作笔记-JPA查询达梦7数据库(Spring Boot + ORM)
  8. 如何基于TensorFlow使用LSTM和CNN实现时序分类任务
  9. python pathos_Python模块之os模块
  10. jQueryEasyUI应用 – datagrid之CRUD应用
  11. JDK中ThreadDump诊断Java代码中的线程死锁问题
  12. data image java_图像标签示例_图像识别 Image_SDK参考_使用SDK(Java)_华为云
  13. 禁用使用未签名驱动导致的windows 7自动修复
  14. arcgis api for js 下载(各版本最全面的地址)
  15. Cocos2dx-lua组件tableView的简单用法
  16. cie色度图matlab,带你解读 CIE1931色度图
  17. 单片机双击 长按 c语言,51单片机按键检测源程序(实现单击、双击、长按等功能)...
  18. 2022-2027年中国酒店及酒店管理市场竞争态势及行业投资前景预测报告
  19. 联想笔记本G510升级固态硬盘(SSD)血泪教程!!!
  20. 【HAL库系列】0.STM32CubeIDE介绍

热门文章

  1. 面试数十家Linux运维工程师,总结了这些面试题
  2. python语音识别音频文件的方法
  3. Docker 入门与完整实战视频教程
  4. 爬虫 第四讲 js2py和selenium
  5. 后台管理----user内容区获取用户数据
  6. 初中没毕业建议学计算机吗,初中没毕业学什么好 能学电脑技术吗?
  7. Java的特点有哪些
  8. 中国物流软件市场大盘点
  9. c语言(int*p),浅析int*p[ ]与int(*p)[ ]的区别
  10. Oracle11g 管理员密码忘了