0
点赞
收藏
分享

微信扫一扫

用Python送大家一棵圣诞树

圣诞节到了,给你最爱的人送上一棵python做的圣诞树吧,程序员的专属浪漫。我的朋友圈已经让圣诞树刷屏了。

用Python送大家一棵圣诞树_4s用Python送大家一棵圣诞树_python_02

精简版圣诞树



1stars = 1
2width = 15
3tree = 3
4
5for i in range(width):
6 print((' ' * (width - i)) + ('*' * stars))
7 stars += 2
8
9for i in range(tree):
10 print((' ' * (width-2)) + '|' * 5)

效果展示:

用Python送大家一棵圣诞树_4s_03


用Python送大家一棵圣诞树_4s用Python送大家一棵圣诞树_python_02

积木圣诞树

用Python送大家一棵圣诞树_python语言_06

Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形。



1import turtle
2
3# 创建画布
4screen = turtle.Screen()
5screen.setup(500, 600)
6
7# 圆形
8circle = turtle.Turtle()
9circle.shape('circle')
10circle.color('red')
11circle.speed('fastest')
12circle.up()
13
14# 矩形
15square = turtle.Turtle()
16square.shape('square')
17square.color('green')
18square.speed('fastest')
19square.up()
20
21circle.goto(0, 180)
22circle.stamp()
23
24k = 0
25for i in range(1, 13):
26 y = 22 * i
27 for j in range(i - k):
28 x = 22 * j
29 square.goto(x, -y + 180)
30 square.stamp()
31 square.goto(-x, -y + 180)
32 square.stamp()
33
34 if i % 4 == 3:
35 x = 22 * (i - k)
36 circle.color('yellow')
37 circle.goto(-x, -y + 180)
38 circle.stamp()
39 circle.goto(x, -y + 180)
40 circle.stamp()
41
42 if i % 4 == 0:
43 x = 22 * (i - k)
44 circle.color('red')
45 circle.goto(-x, -y + 180)
46 circle.stamp()
47 circle.goto(x, -y + 180)
48 circle.stamp()
49 # 控制层数
50 k += 2
51
52
53# 画树干
54square.color('brown')
55for i in range(13, 17):
56 y = 22 * i
57 for j in range(2):
58 x = 22 * j
59 square.goto(x, -y + 180)
60 square.stamp()
61 square.goto(-x, -y + 180)
62 square.stamp()
63
64turtle.exitonclick()


效果展示:

用Python送大家一棵圣诞树_4s_07


用Python送大家一棵圣诞树_4s用Python送大家一棵圣诞树_python_02

线型圣诞树

用Python送大家一棵圣诞树_python语言_06


效果展示:

 1import random
2import turtle
3
4n = 80.0
5
6# 创建画布
7screen = turtle.Screen()
8screen.setup(500, 700)
9t = turtle.Turtle()
10
11t.speed("fastest")
12t.left(90)
13t.forward(3 * n)
14t.color("orange", "yellow")
15t.begin_fill()
16t.left(126)
17
18for i in range(5):
19 t.forward(n / 5)
20 t.right(144)
21 t.forward(n / 5)
22 t.left(72)
23t.end_fill()
24t.right(126)
25
26t.color("dark green")
27t.backward(n * 4.8)
28
29
30def tree(d, s):
31 if d <= 0: return
32 t.forward(s)
33 tree(d - 1, s * .8)
34 t.right(120)
35 tree(d - 3, s * .5)
36 t.right(120)
37 tree(d - 3, s * .5)
38 t.right(120)
39 t.backward(s)
40
41
42tree(15, n)
43t.backward(n / 2)
44
45for i in range(200):
46 a = 200 - 400 * random.random()
47 b = 10 - 20 * random.random()
48 t.up()
49 t.forward(b)
50 t.left(90)
51 t.forward(a)
52 t.down()
53 if random.randint(0, 1) == 0:
54 t.color('tomato')
55 else:
56 t.color('wheat')
57 t.circle(2)
58 t.up()
59 t.backward(a)
60 t.right(90)
61 t.backward(b)
62turtle.mainloop()

用Python送大家一棵圣诞树_4s_11


用Python送大家一棵圣诞树_4s用Python送大家一棵圣诞树_python_02

夜空圣诞树

用Python送大家一棵圣诞树_python语言_06

效果展示:

  1import turtle
2import random as r
3from turtle import *
4
5n = 100.0
6
7t = turtle.Turtle()
8# 定义速度
9t.speed("fastest")
10# 定义背景颜色
11screensize(bg='black')
12t.left(90)
13t.forward(3 * n)
14# 定义最上端星星的颜色,外圈是orange,内部是yellow
15t.color("orange", "yellow")
16t.begin_fill()
17t.left(126)
18
19for i in range(5): # 画五角星
20 t.forward(n / 5)
21 t.right(144) # 五角星的角度
22 t.forward(n / 5)
23 t.left(72) # 继续换角度
24t.end_fill()
25t.right(126)
26
27
28def drawlight(): # 定义画彩灯的方法
29 if r.randint(0, 30) == 0: # 如果觉得彩灯太多,可以把取值范围加大一些,对应的灯就会少一些
30 t.color('tomato') # 定义第一种颜色
31 t.circle(6)
32 elif r.randint(0, 30) == 1:
33 t.color('orange') # 定义第二种颜色
34 t.circle(3)
35 else:
36 t.color('dark green') # 其余的随机数情况下画空的树枝
37
38
39t.color("dark green") # 定义树枝的颜色
40t.backward(n * 4.8)
41
42
43def tree(d, s): # 开始画树
44 if d <= 0:
45 return
46 t.forward(s)
47 tree(d - 1, s * .8)
48 t.right(120)
49 tree(d - 3, s * .5)
50 drawlight() # 同时调用小彩灯的方法
51 t.right(120)
52 tree(d - 3, s * .5)
53 t.right(120)
54 t.backward(s)
55
56
57tree(15, n)
58t.backward(n / 2)
59
60for i in range(200): # 循环画最底端的小装饰
61 a = 200 - 400 * r.random()
62 b = 10 - 20 * r.random()
63 t.up()
64 t.forward(b)
65 t.left(90)
66 t.forward(a)
67 t.down()
68 if r.randint(0, 1) == 0:
69 t.color('tomato')
70 else:
71 t.color('wheat')
72 t.circle(2)
73 t.up()
74 t.backward(a)
75 t.right(90)
76 t.backward(b)
77
78t.color("dark red", "red") # 定义字体颜色
79t.write("Merry Christmas", align="center", font=("Comic Sans MS", 40, "bold")) # 定义文字、位置、字体、大小
80
81
82def drawsnow(): # 定义画雪花的方法
83 t.ht() # 隐藏笔头,ht=hideturtle
84 t.pensize(2) # 定义笔头大小
85 for i in range(200): # 画多少雪花
86 t.pencolor("white") # 定义画笔颜色为白色,其实就是雪花为白色
87 t.pu() # 提笔,pu=penup
88 t.setx(r.randint(-350, 350)) # 定义x坐标,随机从-350到350之间选择
89 t.sety(r.randint(-100, 350)) # 定义y坐标,注意雪花一般在地上不会落下,所以不会从太小的纵座轴开始
90 t.pd() # 落笔,pd=pendown
91 dens = 6 # 雪花瓣数设为6
92 snowsize = r.randint(1, 10) # 定义雪花大小
93 for j in range(dens): # 就是6,那就是画5次,也就是一个雪花五角星
94 # t.forward(int(snowsize)) #int()取整数
95 t.fd(int(snowsize))
96 t.backward(int(snowsize))
97 # t.bd(int(snowsize)) #注意没有bd=backward,但有fd=forward,小bug
98 t.right(int(360 / dens)) # 转动角度
99
100
101drawsnow() # 调用画雪花的方法
102turtle.mainloop() # 完成,否则会直接关闭


用Python送大家一棵圣诞树_python语言_15

项目地址:https://gitee.com/xiaoleetongxue/python-christmas-tree


用Python送大家一棵圣诞树_python语言_16


举报

相关推荐

0 条评论