基于turtle模块画樱花树(*^▽^*)有注释版本

2023-11-05 20:30

本文主要是介绍基于turtle模块画樱花树(*^▽^*)有注释版本,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

注释版的来了,基本每一句都添加了注释。作者也对这个程序理解了一下。

  • 这个程序是随机画樱花树,基本每一次树都长得不一样,可能很茂密也可能跟中年程序员的头顶一样稀疏。因为这个程序的灵魂就是random模块,通过随机数来用白色和淡珊瑚色来对樱花进行点缀,通过随机数来决定树枝长度树枝分叉几次
  • 整个程序的基础可以看作一棵二叉树,实际上就是把这棵二叉树画出来,再加以随机数导致各个树枝长短不一粗细不一加上颜色点缀就呈现出这么好看的樱花树了(玄妙)
  • 基础还是海龟绘图turtle模块,用的都是海龟绘图的基本操作,有不明白的建议移步turtle海龟绘图
  • 程序中有很多数值,比如branch的几个分界线,这都是不断测试出来的最佳数值,具体怎么来的有时间可以自己探讨,改了这些数值樱花树的效果就不是那么好了。这里不作详细解释
    以下为原文

今天看见的太好看了先马下来明天再研究研究!明天就把详细注释补上!争取让每个渣男都能拿来夺取女朋友欢心(手动滑稽)

import turtle as T#将turtle库定义为T便于调用
import random#引进random模块用于生成随机数
import time#系统时间模块def Tree(branch, t):# 画樱花的躯干的函数time.sleep(0.0005)#系统暂停0.0005sif branch > 3:if 8 <= branch <= 12:if random.randint(0, 2) == 0:#三分之一的概率t.color('snow')  # 雪白色else:#三分之二的概率t.color('lightcoral')  # 淡珊瑚色t.pensize(branch / 3)#设置画笔的尺寸elif branch < 8:if random.randint(0, 1) == 0:#二分之一的概率t.color('snow')else:t.color('lightcoral')  # 淡珊瑚色t.pensize(branch / 2)else:t.color('sienna')  # 赭(zhě)色t.pensize(branch / 10)  # 6t.forward(branch)#画笔前进branch那么长a = 1.5 * random.random()#a得到一个随机值t.right(20 * a)#画笔右转20*a度b = 1.5 * random.random()#b取得一个随机值Tree(branch - 10 * b, t)#这是一个递归嵌套的过程t.left(40 * a)#画笔左转40*a度Tree(branch - 10 * b, t)#这是一个递归调用的过程t.right(20 * a)#画笔右转20*a度t.up()#画笔抬起,也即是之后的操作不会再屏幕上留下笔迹t.backward(branch)#画笔倒退branc那么远t.down()#画笔落下
# 掉落的花瓣
def Petal(m, t):for i in range(m):#m次循环a = 200 - 400 * random.random()#给a一个随机值b = 10 - 20 * random.random()#给b一个随机值t.up()#画笔抬起t.forward(b)#画笔倒退b距离t.left(90)#画笔左转90度t.forward(a)#画笔直走a距离t.down()#画笔落下t.color('lightcoral')  # 淡珊瑚色t.circle(1)#画一个半径为1的圆,其实就是花瓣t.up()#画笔抬起t.backward(a)#画笔倒退a距离t.right(90)#画笔右转90度t.backward(b)#画笔倒退b距离
# 绘图区域
def main():t = T.Turtle()# 画布大小w = T.Screen()#t.hideturtle()  # 隐藏画笔t.getscreen().tracer(5, 0)w.screensize(bg='wheat')  # wheat小麦t.left(90)#左转t.up()t.backward(150)t.down()t.color('sienna')# 画樱花的躯干Tree(60, t)# 掉落的花瓣Petal(200, t)w.exitonclick()
if __name__=='__main__':main()

在这里插入图片描述
少女行萌动。over

这篇关于基于turtle模块画樱花树(*^▽^*)有注释版本的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/352297

相关文章

浅谈配置MMCV环境,解决报错,版本不匹配问题

《浅谈配置MMCV环境,解决报错,版本不匹配问题》:本文主要介绍浅谈配置MMCV环境,解决报错,版本不匹配问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录配置MMCV环境,解决报错,版本不匹配错误示例正确示例总结配置MMCV环境,解决报错,版本不匹配在col

Linux卸载自带jdk并安装新jdk版本的图文教程

《Linux卸载自带jdk并安装新jdk版本的图文教程》在Linux系统中,有时需要卸载预装的OpenJDK并安装特定版本的JDK,例如JDK1.8,所以本文给大家详细介绍了Linux卸载自带jdk并... 目录Ⅰ、卸载自带jdkⅡ、安装新版jdkⅠ、卸载自带jdk1、输入命令查看旧jdkrpm -qa

Tomcat版本与Java版本的关系及说明

《Tomcat版本与Java版本的关系及说明》:本文主要介绍Tomcat版本与Java版本的关系及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Tomcat版本与Java版本的关系Tomcat历史版本对应的Java版本Tomcat支持哪些版本的pythonJ

idea中创建新类时自动添加注释的实现

《idea中创建新类时自动添加注释的实现》在每次使用idea创建一个新类时,过了一段时间发现看不懂这个类是用来干嘛的,为了解决这个问题,我们可以设置在创建一个新类时自动添加注释,帮助我们理解这个类的用... 目录前言:详细操作:步骤一:点击上方的 文件(File),点击&nbmyHIgsp;设置(Setti

Python使用date模块进行日期处理的终极指南

《Python使用date模块进行日期处理的终极指南》在处理与时间相关的数据时,Python的date模块是开发者最趁手的工具之一,本文将用通俗的语言,结合真实案例,带您掌握date模块的六大核心功能... 目录引言一、date模块的核心功能1.1 日期表示1.2 日期计算1.3 日期比较二、六大常用方法详

IDEA中Git版本回退的两种实现方案

《IDEA中Git版本回退的两种实现方案》作为开发者,代码版本回退是日常高频操作,IntelliJIDEA集成了强大的Git工具链,但面对reset和revert两种核心回退方案,许多开发者仍存在选择... 目录一、版本回退前置知识二、Reset方案:整体改写历史1、IDEA图形化操作(推荐)1.1、查看提

JDK多版本共存并自由切换的操作指南(本文为JDK8和JDK17)

《JDK多版本共存并自由切换的操作指南(本文为JDK8和JDK17)》本文介绍了如何在Windows系统上配置多版本JDK(以JDK8和JDK17为例),并通过图文结合的方式给大家讲解了详细步骤,具有... 目录第一步 下载安装JDK第二步 配置环境变量第三步 切换JDK版本并验证可能遇到的问题前提:公司常

nvm如何切换与管理node版本

《nvm如何切换与管理node版本》:本文主要介绍nvm如何切换与管理node版本问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录nvm切换与管理node版本nvm安装nvm常用命令总结nvm切换与管理node版本nvm适用于多项目同时开发,然后项目适配no

python中time模块的常用方法及应用详解

《python中time模块的常用方法及应用详解》在Python开发中,时间处理是绕不开的刚需场景,从性能计时到定时任务,从日志记录到数据同步,时间模块始终是开发者最得力的工具之一,本文将通过真实案例... 目录一、时间基石:time.time()典型场景:程序性能分析进阶技巧:结合上下文管理器实现自动计时

Python中的输入输出与注释教程

《Python中的输入输出与注释教程》:本文主要介绍Python中的输入输出与注释教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、print 输出功能1. 基础用法2. 多参数输出3. 格式化输出4. 换行控制二、input 输入功能1. 基础用法2. 类