当前位置:   article > 正文

圣诞节到了,教大家用 Python 绘制几棵圣诞树~_python圣诞树

python圣诞树

大家好,我是大飞

今天是圣诞节,先在这里祝大家圣诞节快乐~~,用英语来表达就是 Merry Christmas ~~,

为了贴合这个氛围,今天分享五种用 Python 绘制圣诞树的方法,从基础到高级,效果也不断攀升分为 1 到 5 五个 Level 水平;

Level 1

先看下最最最基础版的 Level 1 ,一行代码搞定,看完之后不要打我(狗头保命)

image-20211224213341481

print('\n'.join(' '*(20-i)+'/'+' '*2*i+'\\' for i in range(20)))
  • 1

效果可能差强人意,但毕竟一行代码也做不了太多东西,这里只能先给个轮廓看了,有更好想法的小伙伴可以在下方留言区滴滴

Level-2

此版本是 Level 1 的改进版,看到 Level 1 效果后可能有小伙伴感觉自己被 “欺骗” 了,啥也没有,分明就是两根线在那里搭着;因此,Level 2 丰富前者内部的空洞,加了些雪花效果;

代码不多,比 Level 1 多了1行 import random

print('\n'.join(' '*(20-i)+'/'+''.join(random.choice(' # *') for _ in range(2*i))+'\\' for i in range(20)))
  • 1

image-20211224215143129

里面加完点 "雪花效果” 之后,Level 2 是不是有那么一丝丝圣诞树的感觉了,

Level 1Level 2 都是 借助 print 实现了一个打印效果,真正好看的展示效果还需要借助 Python 的一个 绘图包 turtle : 通过使用一些简单组合命令,可以轻松地绘制出精美的形状和图案

Level 3

Level 3 版是一个卡通少儿版的,呈现效果像是用蜡笔绘制而成:深色和浅色相搭配,满满少女心,树上也缀有圣诞袜、五角星等装饰品

Snipaste_2021-12-24_21-08-49

def iou(x, y, z):
    penup()
    goto(x, y)
    pencolor("#f799e6")
    pendown()
    seth(z)
    for po in range(10):
        fd(4)
        left(18)


# 圣诞帽
seth(-20)
pensize(2)
penup()
goto(-30, -120)
pencolor("black")
pendown()
fillcolor("red")
fd(30)
circle(4, 180)
fd(30)
circle(4, 180)
penup()
goto(-25, -115)
seth(75)
pendown()
begin_fill()
for i in range(5):
    fd(6)
    right(20)
seth(-10)
for i in range(5):
    fd(8)
    right(15)
seth(145)
for i in range(5):
    fd(5)
    left(2)
seth(90)
for i in range(5):
    fd(1)
    left(2)
seth(-90)
for i in range(4):
    fd(4)
    right(6)
seth(161)
fd(30)
end_fill()
pensize(1)
pencolor("black")

def koc(x, y, size):
    pensize(2)
    pencolor("black")
    penup()
    goto(x, y)
    pendown()
    begin_fill()
    fillcolor("yellow")
    for i in range(5):
        left(72)
        fd(size)
        right(144)
        fd(size)
    end_fill()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
Level 4

Level 1-Level 5 这几个版本的圣诞树中,个人最喜欢 Level 4 中分支的效果:又细又绿,整体看起来简约而不失真;

Snipaste_2021-12-24_22-40-42

import turtle

# 定义圣诞树的绿叶函数
def tree(d, s):
    if d <= 0:
        return
    turtle.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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
Level 5

Level 5 作为最后一个版本,效果当然是这几个版本中最贴近于真实圣诞树的,装饰品、平安果,圣诞节礼物要啥有啥,此外漫天雪花、黑夜背景也被绘制出来了,整体氛围是超级棒(当然代码行数相对也是较多的声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】

推荐阅读
相关标签