基于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

相关文章

Python中logging模块用法示例总结

《Python中logging模块用法示例总结》在Python中logging模块是一个强大的日志记录工具,它允许用户将程序运行期间产生的日志信息输出到控制台或者写入到文件中,:本文主要介绍Pyt... 目录前言一. 基本使用1. 五种日志等级2.  设置报告等级3. 自定义格式4. C语言风格的格式化方法

Ubuntu如何升级Python版本

《Ubuntu如何升级Python版本》Ubuntu22.04Docker中,安装Python3.11后,使用update-alternatives设置为默认版本,最后用python3-V验证... 目China编程录问题描述前提环境解决方法总结问题描述Ubuntu22.04系统自带python3.10,想升级

Python 基于http.server模块实现简单http服务的代码举例

《Python基于http.server模块实现简单http服务的代码举例》Pythonhttp.server模块通过继承BaseHTTPRequestHandler处理HTTP请求,使用Threa... 目录测试环境代码实现相关介绍模块简介类及相关函数简介参考链接测试环境win11专业版python

Nginx添加内置模块过程

《Nginx添加内置模块过程》文章指导如何检查并添加Nginx的with-http_gzip_static模块:确认该模块未默认安装后,需下载同版本源码重新编译,备份替换原有二进制文件,最后重启服务验... 目录1、查看Nginx已编辑的模块2、Nginx官网查看内置模块3、停止Nginx服务4、Nginx

python urllib模块使用操作方法

《pythonurllib模块使用操作方法》Python提供了多个库用于处理URL,常用的有urllib、requests和urlparse(Python3中为urllib.parse),下面是这些... 目录URL 处理库urllib 模块requests 库urlparse 和 urljoin编码和解码

创建springBoot模块没有目录结构的解决方案

《创建springBoot模块没有目录结构的解决方案》2023版IntelliJIDEA创建模块时可能出现目录结构识别错误,导致文件显示异常,解决方法为选择模块后点击确认,重新校准项目结构设置,确保源... 目录创建spChina编程ringBoot模块没有目录结构解决方案总结创建springBoot模块没有目录

更改linux系统的默认Python版本方式

《更改linux系统的默认Python版本方式》通过删除原Python软链接并创建指向python3.6的新链接,可切换系统默认Python版本,需注意版本冲突、环境混乱及维护问题,建议使用pyenv... 目录更改系统的默认python版本软链接软链接的特点创建软链接的命令使用场景注意事项总结更改系统的默

Linux升级或者切换python版本实现方式

《Linux升级或者切换python版本实现方式》本文介绍在Ubuntu/Debian系统升级Python至3.11或更高版本的方法,通过查看版本列表并选择新版本进行全局修改,需注意自动与手动模式的选... 目录升级系统python版本 (适用于全局修改)对于Ubuntu/Debian系统安装后,验证Pyt

MySQL 升级到8.4版本的完整流程及操作方法

《MySQL升级到8.4版本的完整流程及操作方法》本文详细说明了MySQL升级至8.4的完整流程,涵盖升级前准备(备份、兼容性检查)、支持路径(原地、逻辑导出、复制)、关键变更(空间索引、保留关键字... 目录一、升级前准备 (3.1 Before You Begin)二、升级路径 (3.2 Upgrade

idea Maven Springboot多模块项目打包时90%的问题及解决方案

《ideaMavenSpringboot多模块项目打包时90%的问题及解决方案》:本文主要介绍ideaMavenSpringboot多模块项目打包时90%的问题及解决方案,具有很好的参考价值,... 目录1. 前言2. 问题3. 解决办法4. jar 包冲突总结1. 前言之所以写这篇文章是因为在使用Mav