当前位置: 首页 > article >正文

【节日专栏】Python海龟绘制圣诞树代码

圣诞节就要到了,有没有要送给朋友礼物的程序员呢?

import turtle

def tree(d, s):
    if d <= 0:
        return
    turtle.forward(s)
    tree(d - 1, s * 0.8)
    turtle.right(120)
    tree(d - 3, s * 0.5)
    turtle.right(120)
    tree(d - 3, s * 0.5)
    turtle.right(120)
    turtle.backward(s)

n = 100 # 🎄调整树大小的区域🎄
turtle.speed('fastest')

turtle.left(90)
turtle.forward(3 * n)
turtle.color("orange", "yellow")
turtle.left(126)

for i in range(5):
    turtle.forward(n / 5)
    turtle.right(144)
    turtle.forward(n / 5)
    turtle.left(72)
    turtle.end_fill()
turtle.right(126)
turtle.color("dark green")
turtle.backward(n * 4.8)

tree(15, n)
turtle.backward(n / 5)

这里重点来讲解一下,函数 tree() 的工作原理。

  1. tree() 函数使用递归的方式来绘制一棵树。
  2. 传入的参数参数 d 表示树的深度, s 表示树干长度。
  3. 首先向前绘制树干,然后递归调用自身来绘制更小的分支,每次将树干长度缩小为原来的 0.8 0.8 0.8 倍。
  4. 接着,通过右转 120 120 120 度来绘制向右的分支,递归调用自身来绘制更小的分支,每次将树干长度缩小为原来的 0.5 0.5 0.5 倍。
  5. 再次右转 120 120 120 度,重复绘制向左的分支,最后回到原来的位置,向后绘制回到起始位置。
  6. tree() 函数通过递归不断调用自身,最终绘制出整棵树的结构。
  7. 运行效果如下。
    🎄递归法运行效果🎄

http://www.kler.cn/a/159988.html

相关文章:

  • 阅读2020-2023年《国外军用无人机装备技术发展综述》笔记_技术趋势
  • 【算法一周目】双指针(2)
  • MySQL数据库:SQL语言入门 【下】(学习笔记)
  • 蔚来Java面试题及参考答案
  • 同三维T610UDP-4K60 4K60 DP或HDMI或手机信号采集卡
  • Toeplitz矩阵循环矩阵
  • 0X05
  • 一、CSharp_Basic:什么是.Net平台?什么是.Net FrameWork?什么是C#?
  • C# Solidworks二次开发:获取零件的最小包容体方法详解
  • 关于mysql的lower_case_table_names引发的思考
  • C语言词法陷阱
  • 《C++ primer》 anki学习卡片txt输出101张,更新至第2章,截止2023年12月6日
  • 计算机操作系统3
  • C语言猜数字小游戏
  • java单人聊天
  • 模式识别与机器学习(七):集成学习
  • Python高级数据结构——并查集(Disjoint Set)
  • Multidimensional Scaling(MDS多维缩放)算法及其应用
  • docker安装mysql8
  • Python 模块的使用方法
  • 万宾科技监测设备,可燃气体监测仪特点一览
  • PostgreSQL有意思的现象:支持不带列的表
  • Java 数据结构篇-用链表、数组实现队列(数组实现:循环队列)
  • 【动手学深度学习】(六)权重衰退
  • 【Unity入门】声音组件AudioSource简介及实现声音的近大远小
  • 生成对抗网络——研讨会