基于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的secrets模块

《一文深入详解Python的secrets模块》在构建涉及用户身份认证、权限管理、加密通信等系统时,开发者最不能忽视的一个问题就是“安全性”,Python在3.6版本中引入了专门面向安全用途的secr... 目录引言一、背景与动机:为什么需要 secrets 模块?二、secrets 模块的核心功能1. 基

使用jenv工具管理多个JDK版本的方法步骤

《使用jenv工具管理多个JDK版本的方法步骤》jenv是一个开源的Java环境管理工具,旨在帮助开发者在同一台机器上轻松管理和切换多个Java版本,:本文主要介绍使用jenv工具管理多个JD... 目录一、jenv到底是干啥的?二、jenv的核心功能(一)管理多个Java版本(二)支持插件扩展(三)环境隔

MySQL版本问题导致项目无法启动问题的解决方案

《MySQL版本问题导致项目无法启动问题的解决方案》本文记录了一次因MySQL版本不一致导致项目启动失败的经历,详细解析了连接错误的原因,并提供了两种解决方案:调整连接字符串禁用SSL或统一MySQL... 目录本地项目启动报错报错原因:解决方案第一个:第二种:容器启动mysql的坑两种修改时区的方法:本地

conda安装GPU版pytorch默认却是cpu版本

《conda安装GPU版pytorch默认却是cpu版本》本文主要介绍了遇到Conda安装PyTorchGPU版本却默认安装CPU的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的... 目录一、问题描述二、网上解决方案罗列【此节为反面方案罗列!!!】三、发现的根本原因[独家]3.1 p

Redis指南及6.2.x版本安装过程

《Redis指南及6.2.x版本安装过程》Redis是完全开源免费的,遵守BSD协议,是一个高性能(NOSQL)的key-value数据库,Redis是一个开源的使用ANSIC语言编写、支持网络、... 目录概述Redis特点Redis应用场景缓存缓存分布式会话分布式锁社交网络最新列表Redis各版本介绍旧

IIS 7.0 及更高版本中的 FTP 状态代码

《IIS7.0及更高版本中的FTP状态代码》本文介绍IIS7.0中的FTP状态代码,方便大家在使用iis中发现ftp的问题... 简介尝试使用 FTP 访问运行 Internet Information Services (IIS) 7.0 或更高版本的服务器上的内容时,IIS 将返回指示响应状态的数字代

Python使用Turtle实现精确计时工具

《Python使用Turtle实现精确计时工具》这篇文章主要为大家详细介绍了Python如何使用Turtle实现精确计时工具,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下... 目录功能特点使用方法程序架构设计代码详解窗口和画笔创建时间和状态显示更新计时器控制逻辑计时器重置功能事件

CSS 样式表的四种应用方式及css注释的应用小结

《CSS样式表的四种应用方式及css注释的应用小结》:本文主要介绍了CSS样式表的四种应用方式及css注释的应用小结,本文通过实例代码给大家介绍的非常详细,详细内容请阅读本文,希望能对你有所帮助... 一、外部 css(推荐方式)定义:将 CSS 代码保存为独立的 .css 文件,通过 <link> 标签

Python logging模块使用示例详解

《Pythonlogging模块使用示例详解》Python的logging模块是一个灵活且强大的日志记录工具,广泛应用于应用程序的调试、运行监控和问题排查,下面给大家介绍Pythonlogging模... 目录一、为什么使用 logging 模块?二、核心组件三、日志级别四、基本使用步骤五、快速配置(bas

将图片导入Python的turtle库的详细过程

《将图片导入Python的turtle库的详细过程》在Python编程的世界里,turtle库以其简单易用、图形化交互的特点,深受初学者喜爱,随着项目的复杂度增加,仅仅依靠线条和颜色来绘制图形可能已经... 目录开篇引言正文剖析1. 理解基础:Turtle库的工作原理2. 图片格式与支持3. 实现步骤详解第