持续创造,加快成长!这是我参与「掘金日新方案 4 月更文应战」的第21天,点击查看活动详情

前言

咱们上一篇博客,给咱们展现了一个动态爱心。今日,咱们给咱们画一个圣诞树,咱们一起来看看作用吧。

作用展示

咱们先来看看最终的作用看看咱们画的圣诞树怎么样吧。如果,感觉不错,咱们一起来完成吧。

如何用python画一个圣诞树

功用完成

功用模块

咱们先看看,完成这个作用,需要哪些模块吧。咱们先准备好这些模块。

import turtle as t
from turtle import *  
import random as r

咱们导入turtle模块,这个模块供给了一些绘图函数,比方turtle.circle()和turtle.forward()。咱们导入turtle模块的子模块,这些子模块供给了更多的绘图函数,比方turtle.circle()和turtle.forward(),这些函数与turtle模块中的函数称号不同,但是它们具有类似的功用。导入random模块的意图,这个模块供给了一些随机数生成函数,比方random.randint()和random.uniform()。

n = 100.0
speed("fastest")  
screensize(bg='pink')  
left(90)  
forward(3*n)  
color("orange", "yellow")  
begin_fill()  
left(126)

咱们这段代码是运用turtle库来制作一个简略的圣诞树,包含树干、叶子和五角星。其中,变量n表明树的高度,变量speed用于设置绘图速度,变量screensize用于设置画布巨细,变量left用于设置海龟的方向,变量forward用于设置海龟的移动距离,变量color用于设置画笔的色彩和样式,变量begin_fill用于开始填充色彩,变量left用于设置海龟的方向。

def drawlight():
    if r.randint(0, 30) == 0:  
    color('tomato')  
    circle(6)  
    elif r.randint(0,30) == 1:  
    color('orange')  
    circle(3)  
    else:  
    color('dark green')    
color("dark green")  
backward(n*4.8)

变量drawlight()用于完成随机制作灯火的功用,依据随机数的不同,制作不同色彩的圆形。咱们运用了r.randint()函数来生成随机数,并依据随机数的值来设置色彩。具体来说,如果随机数为0,则制作赤色的圆形;如果随机数为1,则制作橙色的圆形;不然,制作绿色的圆形。

def tree(d, s):
    if d <= 0: return  
    t.pensize(3)  
    forward(s)  
    tree(d-1, s*.8)  
    right(120)  
    tree(d-3, s*.5)  
    drawlight()  
    right(120)  
    tree(d-3, s*.5)  
    right(120)  
    backward(s)  
tree(15, n)  
backward(n/2)

咱们这儿运用递归方法来构建一棵二叉树。具体来说,tree(d, s)函数接受两个参数ds,表明树的高度和当时节点的高度。函数首先判断d是否小于等于0,如果是,则直接回来;不然,依据递归调用的规矩,将当时节点的高度s乘以0.8,递归调用tree(d-1, s*.8)来构建左子树,然后将海龟向右旋转120度,递归调用tree(d-3, s*.5)来构建右子树,最终调用drawlight()函数来制作灯火。

def drawsnow():
    t.ht()  
    t.pensize(3)  
    for i in range(200):  
    t.pencolor("white")  
    t.pu()  
    t.setx(r.randint(-350,350))  
    t.sety(r.randint(-100,450))  
    t.pd()  
    dens = 6  
    snowsize = r.randint(1,10)  
    for j in range(dens):  
    t.fd(int(snowsize))  
    t.backward(int(snowsize))  
    t.right(int(360/dens))  
drawsnow()  
t.done()

咱们还能够完成雪花的制作。让咱们的圣诞树更加的美观。每个雪花由6个随机的等距圆组成,圆的半径从1到10不等。程序运用递归的方法来制作每个雪花,并运用随机数来操控雪花的巨细和位置。

总结

咱们能够运用递归方法来制作圣诞树。在每一层递归中,咱们先制作树干,然后依据递归深度制作左右两个分支,最终回来上一级。在制作过程中,咱们运用了一些简略的数学运算和turtle库的函数来操控海龟的行动。