当前位置: 首页 > 编程日记 > 正文

用 Python 画圣诞树的 N 种玩法

23fec50a7389eb75b01142e75502f604.gif

作者 | 写代码的明哥

来源 | Pyhton编程时光

马上就是圣诞节了,先提前祝大家圣诞快乐!

今天来给大家分享一波如何使用 Python 来画一颗圣诞节树,包含多种版本,从平民版到豪华版,像极了一个程度员从入门到高级秃头程序员的过程。

# 圣诞树 - 平民版

第一种比较简单,由最基本的图形(圆形和正方形)组合而成,有点 turtle 基础的人都能画。

9c56ff5c7adc48593b49a67343932af6.png

代码如下

395c01c2dc51cfce8a7cfe9c78e7f7bc.png

# 圣诞树 - 进阶版

上面的圣诞树,都是新手练习使用的,只能自娱自乐,不够真实,也不够高大上。

用线条重新设计,一笔一划来作图,慢工出细活嘛~

ade27d3b3ddb580a1cb2538844135202.png

代码如下:

import turtle
import time# 定义圣诞树的绿叶函数
def tree(d, s):if d <= 0:returnturtle.forward(s)tree(d - 1, s * .8)turtle.right(120)tree(d - 3, s * .5)turtle.right(120)tree(d - 3, s * .5)turtle.right(120)turtle.backward(s)
n = 100
""" 设置绘图速度
'fastest' : 0
'fast'  : 10
'normal' : 6
'slow'  : 3
'slowest' : 1
"""
turtle.speed('fastest') # 设置速度turtle.left(90)
turtle.forward(3 * n)
turtle.color("orange", "yellow")
turtle.left(126)# turtle.begin_fill()
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)
time.sleep(60)

# 圣诞树 - 豪华版

在进阶版的基础上,再稍作修改:

  • 白天变成黑夜

  • 挂点苹果上去

  • 漫天的雪花与圣诞更配噢

就非常好看啦,我的耳边已经开始响起 Jingle Bell 的旋律了哈哈

befd28b2b64e797be816cd5d04b49d12.png

代码如下:

382302a26cd9623ed301fdb981bfed28.png

# 平安夜 - 平安果

文章发得比较早,毕竟明天才是圣诞节,今晚是平安夜,不来个红苹果说不过去~

cabfaa70d992765cb8c6f82aaaa8ffa0.png

代码如下:

import turtle
import timeturtle.setup(800, 800)
turtle.speed(5)
turtle.pensize(5)# 先画一个圆,并填充为红色
turtle.begin_fill()
turtle.color("red")
turtle.circle(radius=150)
turtle.end_fill()# 画苹果把儿
turtle.color("brown")
turtle.pu()
turtle.goto(-90, 200)
turtle.pd()
turtle.circle(180, 40)
turtle.pu()
turtle.seth(105)
turtle.goto(-20, 220)
turtle.pd()
turtle.circle(180, 50)
turtle.pd()# 画左边叶子
turtle.begin_fill()
turtle.color("green")
turtle.circle(180, 50)
turtle.seth(-30)
turtle.circle(180, 55)
turtle.end_fill()# 画右边叶子
turtle.begin_fill()
turtle.color("green")
turtle.seth(0)
turtle.circle(180, 50)
turtle.seth(-180)
turtle.circle(180, 50)
turtle.end_fill()
turtle.done()
time.sleep(10)

6a51e5d9d260c4050b9571313f095cfc.gif

25a67f91c9cc0405f4ecc36b1384006c.png

资讯

活体人脑细胞5分钟学会打游戏

资讯

谷歌发布RLDS,在强化学习生成

资讯

AI语言模型是否越大越好?

技术

从深度学习到深度森林方法

66f525edf56f0778640d169356e6dedb.png

分享

072af1d60fd31fbe9fd4c3f09e52d9dd.png

点收藏

f63ee7566d7b28082d2f76c42a1acdaf.png

点点赞

503dda144648d8e42bb3e36153039bf9.png

点在看

相关文章:

ORM武器:NHibernate(三)五个步骤+简单对象CRUD+HQL

前面的两篇文章中。我们对NHibernate已经做了大致了解 《ORM利器&#xff1a;NHibernate&#xff08;一&#xff09;简单介绍》Nhibernate的作用&#xff1a;攻克了对象和数据库的转化问题 《ORM利器&#xff1a;NHibernate&#xff08;二&#xff09;使用CodeSmith高速生成映射…

Linux学习笔记8——bash基本概念

一个操作系统的组成中&#xff0c;shell是与用户最接近的部分shell&#xff1a;外壳&#xff0c;也是一种程序GUI&#xff1a;Gnome&#xff0c;KDE,XfaceCLI&#xff1a;sh&#xff0c;csh&#xff0c;ksh&#xff0c;bash&#xff0c;tcsh&#xff0c;zshLinux中大多使用bash…

UIScrollView offset in UINavigationController

转&#xff1a;UIScrollView offset in UINavigationController 通过设置viewCtronller的 self.automaticallyAdjustsScrollViewInsets NO; 禁用苹果scrollview提供的自适应功能。 延伸阅读&#xff1a;https://developer.apple.com/library/ios/documentation/UserExperience…

AI 通过眼睛的反光度,来识别是否 Deepfake 换脸

编译 | 禾木木 出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09; Deepfake 是一种 AI换脸工具&#xff0c;现被滥用&#xff0c;从虚假宣传活动到插入一些违法内容&#xff0c;并且篡改后的图像是难以被检测到的。 一种新的 AI 工具提供了一项令人惊讶的简单方法来发现…

[异常笔记] spring boot 启动-2018040201

异常 1、编码引发异常 00:59:49.311 [main] DEBUG org.springframework.boot.devtools.settings.DevToolsSettings - Included patterns for restart : [] 00:59:49.318 [main] DEBUG org.springframework.boot.devtools.settings.DevToolsSettings - Excluded patterns for re…

maven基础概念学习1

2019独角兽企业重金招聘Python工程师标准>>> 1.maven是什么&#xff1f; 百度百科&#xff1a; Maven是基于项目对象模型(POM)&#xff0c;可以通过一小段描述信息来管理项目的构建&#xff0c;报告和文档的软件项目管理工具。 2.maven的作用&#xff1f; 构建、文档…

php session 二位数组

最普通的用法&#xff1a;一个变量名 $_SESSION[user] 0;echo $_SESSION[user]; 使用数组&#xff1a; $_SESSION[user][a] 1;$_SESSION[user][b] 2;echo $_SESSION[user][a];echo $_SESSION[user][b]; 这样的好处是可以分组可以 $_SESSION[admin][a] 11;$_SESSION[admin][…

「屋漏偏逢连夜雨」,Log4j 漏洞还没忙完,新的又来了

整理 | 郑丽媛、禾木木 出品 | CSDN 这几天&#xff0c;Apache Log4j 2 绝对是众多 Java 程序员提到的高频词之一&#xff1a;由于 Apache Log4j 2 引发的严重安全漏洞&#xff0c;令一大批安全人员深夜修 Bug、打补丁。此次漏洞更是因为其触发简单、攻击难度低、影响人群广泛等…

利用gevent实现异步执行任务

import gevent def task(pid):gevent.sleep(2)print ("task %s done"%pid)def asynchronous():threads [gevent.spawn(task,i) for i in xrange(5)]gevent.joinall(threads)if __name__ __main__:print ("asynchronous")asynchronous()执行结果&#xff…

清理SQL多余登录信息

服务器列表、登陆帐户、密码等信息都记录在 %AppData%\Microsoft\Microsoft SQL Server\100\Tools\Shell\SqlStudio.bin &#xff08;2008&#xff09;%AppData%\Microsoft\Microsoft SQL Server\90\Tools\Shell\mru.dat&#xff08;2005&#xff09;直接删除后重新启动 SSMS …

AI 真的能够理解人类语言吗?

作者 | Melanie Mitchell 译者 | 弯月 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 2011年&#xff0c;IBM 的人工智能系统沃森参加综艺节目《危险边缘》&#xff0c;并获得了冠军&#xff0c;当时他们宣称&#xff1a;“沃森能够理解自然语言的所有歧义和复杂…

【贪心】Google Code Jam Round 1A 2018 Waffle Choppers

题意&#xff1a;给你一个矩阵&#xff0c;有些点是黑的&#xff0c;让你横切h刀&#xff0c;纵切v刀&#xff0c;问你是否能让切出的所有子矩阵的黑点数量相等。 设黑点总数为sum&#xff0c;sum必须能整除(h1)&#xff0c;进而sum/(h1)必须能整除(v1)。 先考虑横行&#xff0…

友盟数据—值得手游创业者关注的玩家数据

友盟数据—值得手游创业者关注的玩家数据 你知道“辣妈”是什么游戏的忠诚玩家吗&#xff1f;你知道“大龄玩家”都喜好怎样的游戏&#xff1f;你知道哪类玩家最“多金”&#xff1f;2015年&#xff0c;不仅宅男、宅女们爱玩游戏&#xff0c;辣妈和奶爸们也成了手游行业的主力军…

这个 AI 模型火上 GitHub 热榜第一,在线修复照片

编译 | 禾木木出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;AI 正在对照片编辑产生重大的影响&#xff0c;但结果是还存在很大分歧。支持者说&#xff0c;人工智能释放了新的艺术历年&#xff0c;减少了创作者花在单调工作上的时间。然而&#xff0c;批评者认为这些…

【我的Android进阶之旅】解决SDK升级到27.0.3遇到的GLIBC_2.14 not found、no acceptable C compiler found in $PATH等问题...

一、问题一&#xff1a;Failed to find Build Tools revision 27.0.3 1.1、问题描述 最近公司的Android项目都要进行SDK升级&#xff0c;目前在本地编译的时候将SDK升级到了27.0.3&#xff0c;本地运行正常&#xff0c;然后在jenkins服务器上跑的时候就会出现异常。异常如下所示…

解析大型.NET ERP系统 设计异常处理模块

异常处理模块是大型系统必备的一个组件&#xff0c;精心设计的异常处理模块可提高系统的健壮性。下面从我理解的角度&#xff0c;谈谈异常处理的方方面面。我的设计仅仅限定于Windows Forms&#xff0c;供参考。 1 定义异常类型 .NET 框架定义很多异常类型&#xff0c;ERP系统中…

内含福利|CSDN 携手字节跳动:云原生Meetup北京站报名热烈启动,1月8日见!

伴随云原生技术的成熟与落地&#xff0c;越来越多框架、中间件等开源项目相继涌现&#xff0c;帮助开发者和企业有效解决业务问题。2022年1月8日&#xff0c;CSDN携手字节跳动基础架构&#xff0c;将在北京举办第四场云原生线下Meetup。在这里&#xff0c;您可以与众多开源技术…

用Thymeleaf在前台下拉列表取值

转自&#xff1a;https://blog.csdn.net/u013600907/article/details/76165748转载于:https://www.cnblogs.com/sharpest/p/8875698.html

PHP使用JSON

JSON 基础 简 单地说&#xff0c;JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串&#xff0c;然后就可以在函数之间轻松地传递这个字符串&#xff0c;或者在异步应用程序中将字符串从 Web 客户机传递给服务器端程序。这个字符串看起来有点儿古怪&#xff08;稍后会看…

(原创)Python文件与文件系统系列(5)——stat模块

stat模块中定义了许多的常量和函数&#xff0c;可以帮助解释 os.stat()、os.fstat()、os.lstat()等函数返回的 st_result 类型的对象。 通常使用 os.path.is*() 这类函数来测试一个文件的类型&#xff0c;这些方法对同一个文件进行多次测试时&#xff0c;stat()系统调用都是不可…

Azure Neural TTS能让AI语音自然逼真到什么程度?

摘要&#xff1a;微软Azure Neural TTS让AI语音像真人一样富有感情&#xff0c;自然逼真。 Neural TTS&#xff08;神经网络文本转语音&#xff09;是微软Azure认知服务的强大语音合成功能&#xff0c;自推出以来&#xff0c;已被广泛应用于从语音助手、新闻阅读到有声读物创作…

ReentrantLock与synchronized

1、ReentrantLock 拥有Synchronized相同的并发性和内存语义&#xff0c;此外还多了 锁投票&#xff0c;定时锁等候和中断锁等候线程A和B都要获取对象O的锁定&#xff0c;假设A获取了对象O锁&#xff0c;B将等待A释放对O的锁定&#xff0c;如果使用 synchronized &#xff0c;如…

EXT按钮事件

在EXT中&#xff0c;当我们要为按钮点击添加处理function的时候&#xff0c;可以看到一般人的实现分成2类&#xff1a;1.使用onClick: function xx()2.使用handler: function xx()完成后&#xff0c;我们会发现&#xff0c;无论用哪一种实现&#xff0c;再点击按钮时都能触发xx…

浅谈HTTP中Get与Post的区别

Http定义了与服务器交互的不同方法&#xff0c;最基本的方法有4种&#xff0c;分别是GET&#xff0c;POST&#xff0c;PUT&#xff0c;DELETE。URL全称是资源描述符&#xff0c;我们可以这样认为&#xff1a;一个URL地址&#xff0c;它用于描述一个网络上的资源&#xff0c;而H…

达摩院年终预测重磅出炉:AI for Science 高居榜首,2022 十大科技趋势!

整理 | 郑丽媛出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;作为“一所探索科技未知的研究院”&#xff0c;阿里巴巴达摩院成立至今已经四年了。这四年来&#xff0c;达摩院秉持着“探索科技位置&#xff0c;以人类愿景为驱动力&#xff0c;开展基础科学和颠覆式…

TensorFlow——入门基础

TensorFlow原理&#xff1a; TensorFlow使用Graph来描述计算任务,图中的节点被称之为op.一个op可以接受0或多个tensor作为输入,也可产生0或多个tensor作为输出.任何一个Graph要想运行,都必须借助上下文Session.通过Session启动Graph,并将Graph中的op分发到CPU或GPU上,借助Sessi…

EXT iconCls说明

今天学习ext 看examples中的事例&#xff0c;其中有一个地方是这样写的&#xff1a; new ButtonPanel( Icon Only, [{ iconCls: add16 },{ iconCls: add24, scale: medium },{ …

25个好用到爆的一行 Python 代码,建议收藏

作者 | 欣一来源 | Pyhton爱好集中营在学习Python的过程当中&#xff0c;有很多复杂的任务其实只需要一行代码就可以解决&#xff0c;那么今天小编我就来给大家介绍实用的一行Python代码&#xff0c;希望对大家能够有所帮助。1.两个字典的合并x {a: 1, b: 2} y {c: 3, d: 4}将…

【工业串口和网络软件通讯平台(SuperIO)教程】七.二次开发服务驱动

SuperIO相关资料下载&#xff1a;http://pan.baidu.com/s/1pJ7lZWf 1.1 服务接口的作用 围绕着设备驱动模块采集的数据&#xff0c;根据需求提供多种应用服务&#xff0c;例如&#xff1a;数据上传服务、数据请求服务、4-20mA服务、短信服务、LED服务以及OPC服务等。保障数…

usermod命令,用户密码管理和mkpasswd命令

2019独角兽企业重金招聘Python工程师标准>>> usermod 设置扩展组 概念&#xff1a;更改用户属性的一个命令。 用法&#xff1a;usermod [选项] 后面跟你需要操作的内容 [用户名] 选项&#xff1a;-c, --comment 注释 GECOS 字段的新值-d, --home HO…