2021年圣诞节送自己一颗树吧

简介: 2021年圣诞节送自己一颗树吧

前言

圣诞节快要到了,准备给自己准备一个圣诞礼物,于是乎,就用python写了一个生成樱花树和圣诞树的程序。

圣诞节

基督教纪念耶稣诞生的重要节日。亦称耶稣圣诞节、主降生节,天主教亦称耶稣圣诞瞻礼。圣诞节习俗传播到亚洲主要是在十九世纪中叶,日本、韩国等都受到了圣诞文化的影响。现在西方在圣诞节常互赠礼物,举行欢宴,并以圣诞老人、圣诞树等增添节日气氛,已成为普遍习俗。圣诞节也成为西方世界以及其他很多地区的公共假日。

节日装饰

圣诞树,通常人们在圣诞前后把一棵常绿植物(如松树)弄进屋里或者放在户外,用圣诞灯和彩色的装饰物装饰,并把一个天使或星星置于树顶,圣诞树起源于德国;圣诞节环,西方国家圣诞节期间挂在家门口用的装饰品,通常用绿色的枝叶或藤条(松毛、松针等)和银色的金属及金色的铃铛配以红色的缎带组成主色调,以绿、白、黄、红四色代表欢乐喜庆,上面还写有MERRY CHRISTMAS或简写为X'mas的字样,圣诞节环最早出现在芬兰。

动态生成樱花树

import turtle as T
import random
import time
def Tree(branch, t):
    time.sleep(0.0005)
    if 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')
            t.pensize(branch / 10)  # 6
        t.forward(branch)
        a = 1.5 * random.random()
        t.right(20 * a)
        b = 1.5 * random.random()
        Tree(branch - 10 * b, t)
        t.left(40 * a)
        Tree(branch - 10 * b, t)
        t.right(20 * a)
        t.up()
        t.backward(branch)
        t.down()
def Petal(m, t):
    for i in range(m):
        a = 200 - 400 * random.random()
        b = 10 - 20 * random.random()
        t.up()
        t.forward(b)
        t.left(90)
        t.forward(a)
        t.down()
        t.color('lightcoral')
        t.circle(1)
        t.up()
        t.backward(a)
        t.right(90)
        t.backward(b)
t = T.Turtle()
# 画布大小
w = T.Screen()
t.hideturtle()
t.getscreen().tracer(5, 0)
w.screensize(bg='wheat')
t.left(90)
t.up()
t.backward(150)
t.down()
t.color('sienna')
Tree(60, t)
Petal(200, t)
w.exitonclick()

效果图


640.gif


樱花

动态生成圣诞树

代码

from turtle import *
import random
import time
n = 100.0
speed("fastest")
screensize(bg='seashell')
left(90)
forward(3*n)
color("orange", "yellow")
begin_fill()
left(126)
for i in range(5):
    forward(n/5)
    right(144)
    forward(n/5)
    left(72)
end_fill()
right(126)
color("dark green")
backward(n*4.8)
def tree(d, s):
    if d <= 0: return
    forward(s)
    tree(d-1, s*.8)
    right(120)
    tree(d-3, s*.5)
    right(120)
    tree(d-3, s*.5)
    right(120)
    backward(s)
tree(15, n)
backward(n/2)
for i in range(200):
    a = 200 - 400 * random.random()
    b = 10 - 20 * random.random()
    up()
    forward(b)
    left(90)
    forward(a)
    down()
    if random.randint(0, 1) == 0:
            color('tomato')
    else:
        color('wheat')
    circle(2)
    up()
    backward(a)
    right(90)
    backward(b)
time.sleep(60)

效果图

640.gif

相关文章
|
4月前
|
存储 算法 关系型数据库
【面试普通人VS高手系列】b树和b+树的理解
【面试普通人VS高手系列】b树和b+树的理解
|
10月前
1351:【例4-12】家谱树
1351:【例4-12】家谱树
|
10月前
|
存储
手撕AVL树
手撕AVL树
30 0
|
6月前
|
测试技术 C++
【C++从0到王者】第三十三站:AVL树
【C++从0到王者】第三十三站:AVL树
17 0
|
11月前
|
算法 C语言
这是一颗经过计划生育的树?
这是一颗经过计划生育的树?
55 0
树好像没有辣么难
之前不会用树处理数据,直到怎么用之后,发现还是很好用的
70 0
|
存储 算法
漫画:什么是 “哈夫曼树” ?
哈夫曼树是由麻省理工学院的哈夫曼博士于1952年发明,这到底是一颗什么样的树呢? 刚才我们学习了树的带权路径长度(WPL),而哈夫曼树(Huffman Tree)是在叶子结点和权重确定的情况下,带权路径长度最小的二叉树,也被称为最优二叉树。 举个例子,给定权重分别为1,3,4,6,8的叶子结点,我们应当构建怎样的二叉树,才能保证其带权路径长度最小? 原则上,我们应该让权重小的叶子结点远离树根,权重大的叶子结点靠近树根。
244 0
漫画:什么是 “哈夫曼树” ?
漫画:什么是AVL树?(修订版)
而在AVL树当中,我们通过“平衡因子”来判断一颗二叉树是否符合高度平衡。 到底什么是AVL树的平衡因子呢? 对于AVL树的每一个结点,平衡因子是它的左子树高度和右子树高度的差值。只有当二叉树所有结点的平衡因子都是-1, 0, 1这三个值的时候,这颗二叉树才是一颗合格的AVL树。
127 0
漫画:什么是AVL树?(修订版)
LeetCode 训练场:100. 相同的树
LeetCode 训练场:100. 相同的树
78 0
LeetCode 训练场:100. 相同的树