系列文章
前言
一年一度的圣诞节又要来喽在这么浪漫的节日里怎么能少的了一个浪漫的程序员呢让我们一起画个圣诞树,送给你喜欢的那个人吧~
圣诞树
一、实现步骤
用Python的小海龟实现(Turtle)
具体分为五个步骤:
(1)圣诞树
(2)星星
(3)礼物
(4)雪花
(5)祝福
二、编码实现
1. 圣诞树
程序设计
def tree(d,s): #运用递归的方法画圣诞树
t.hideturtle() #隐藏画笔
t.pencolor('limegreen') #画笔颜色置为绿色,用来画树
t.pensize(5) #画笔大小为5
t.speed(0) #最快速度画树(其实挺慢的)
if d<=0:
return
t.forward(s)
tree(d-1,s*0.8)
t.right(120)
tree(d-3,s*0.5)
t.right(120)
tree(d-3,s*0.5)
t.right(120)
t.backward(s)
……
程序分析
这段代码是用 Python 的 turtle 模块,画出一个圣诞树的函数。圣诞树由一个树干和很多层树叶构成,树叶要用递归的方式画出来。画树的函数 tree(d,s) 中,d 表示树的深度,s 表示树的长度,如果深度为 0,则返回,否则画出一条长度为 s 的线段。然后分别右转 120 度,调用 tree(d-3, s*0.5) 画出树叶,如此递归下去,直到深度为 0。而函数 trees() 则先画出一个树根,然后调用 tree() 画出树叶,最后画出一个大星星。其中需要用到 turtle 模块中的一些函数,比如 goto()、up()、down()、right() 等等。
2. 星星
程序设计
def star(): #画圣诞树顶的大星星
t.hideturtle() #隐藏画笔
t.pensize(2) #给画笔设置大小
t.pencolor("gold") #给画笔设置颜色,'gold'表示金色
t.up() #提起画笔,画笔移动时不会画画
t.forward(5) #将画笔向前移5个像素(此时画笔方向向右,即向右移动5个像素)
t.down() #画笔放下,画笔移动时会产生轨迹
t.begin_fill() #给星星填充颜色
for i in range(5): #因为是五角星,所以要循环五次画五个角
t.forward(20)
t.right(144)
t.forward(20)
t.left(72)
t.fillcolor('yellow') #设置填充的颜色
t.end_fill()
return
def stars(): #画圣诞树上的小星星
t.hideturtle() #隐藏画笔
t.speed(0) #设置画画速度,0为最快速
t.pensize(5) #设置画笔大小
for i in range(5): #循环五次画五个角,与画大星星一样
t.forward(5)
t.right(144)
t.forward(5)
t.left(72)
return
……
程序分析
这段代码用 turtle 模块画出了圣诞树上的星星。其中画大星星的函数 star(),先将画笔向前移动了 5 个像素,然后用 for 循环画出五个角,每次向前移动 20 个像素,右转 144 度(因为五角星每个角是 36 度),向前移动 20 个像素,左转 72 度。最后用 begin_fill()、fillcolor()、end_fill() 函数给星星填充颜色,并返回。画小星星的函数 stars() 与 star() 类似,只是少了填充的步骤。而画圣诞树上所有星星的函数 stares(),则使用了循环,可以画出不同颜色、不同位置的星星。首先设定初始值 x1=-110、x2=110、y1=-40 和 y2=-15,用来控制星星在圣诞树上的位置。然后定义颜色列表 c,用 for 循环画出不同颜色的星星。每画一个星星,n 加一,根据 n 的奇偶性判断是在圣诞树左边还是右边画星星,然后用 randint() 函数随机生成星星的坐标,接着调用 stars() 函数画出星星,最后更新 x1、x2、y1、y2 的值,保证下一个星星的位置在上一个星星的周围。
3. 雪花
程序设计
def snow(): #画雪花(全屏)
t.hideturtle() #隐藏画笔
t.pensize(2) #画笔大小
t.speed(0) #画雪花的速度
for i in range(500): #循环画500个雪花
t.pencolor('white') #雪花是白色的
t.penup() #提笔
t.setx(r.randint(-1000,1000)) #在画布上随机找点
t.sety(r.randint(-1000,1000))
t.pendown()
snowsize=r.randint(4,10) #雪花大小
for i in range(6): #画雪花(雪花为六瓣,需要循环六次)
**一、Python所有方向的学习路线**
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。
![img](https://img-blog.csdnimg.cn/1d40facda2b84990b8e1743f5487d455.png)
![img](https://img-blog.csdnimg.cn/0fc11d4a31bd431dbf124f67f1749046.png)
**二、Python必备开发工具**
工具都帮大家整理好了,安装就可直接上手!![img](https://img-blog.csdnimg.cn/ff266f529c6a46c4bc28e5f895dec647.gif#pic_center)
**三、最新Python学习笔记**
当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
![img](https://img-blog.csdnimg.cn/6d414e9f494742db8bcc3fa312200539.png)
**四、Python视频合集**
观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
![img](https://img-blog.csdnimg.cn/a806d9b941c645858c61d161aec43789.png)
**五、实战案例**
纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。![img](https://img-blog.csdnimg.cn/a353983317b14d3c8856824a0d6186c1.png)
**六、面试宝典**
![在这里插入图片描述](https://img-blog.csdnimg.cn/97c454a3e5b4439b8600b50011cc8fe4.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/111f5462e7df433b981dc2430bb9ad39.png)
###### **简历模板**![在这里插入图片描述](https://img-blog.csdnimg.cn/646863996ac44da8af500c049bb72fbd.png#pic_center)