赞
踩
圣诞节快到了,教你用 python 画圣诞树,送给你女朋友,博主给了三个版本的圣诞树。
博主没有下载专门写 python 的 pycharm,用 VSCode 替代,因为 VSCode 也可以运行 python 代码。
还需要下载一个 python 运行环境,可以参考如下教程的上半部:
https://blog.csdn.net/q6q6q/article/details/109347278
如果大家安装 pycharm 的话,就不需要手动下载运行环境了,会自动下载的,注意 pycharm 社区版才是免费的。
tree1.py
import turtle as t #as就是取个别名,后续调用的t都是turtle from turtle import * import random as r import time n = 100.0 speed("fastest") #定义速度 screensize(bg='black') #定义背景颜色,可以自己换颜色 left(90) forward(3*n) color("orange", "yellow")#定义最上端星星的颜色,外圈是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) 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) def tree(d, s):#开始画树 if d <= 0: return 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) for i in range(200):#循环画最底端的小装饰 a = 200 - 400 * r.random() b = 10 - 20 * r.random() up() forward(b) left(90) forward(a) down() if r.randint(0, 1) == 0: color('tomato') else: color('wheat') circle(2) up() backward(a) right(90) backward(b) t.color("dark red","red")#定义字体颜色 t.write("Merry Christmas",align ="center",font=("Comic Sans MS",40,"bold"))#定义文字、位置、字体、大小 def drawsnow():#定义画雪花的方法 t.ht() #隐藏笔头,ht=hideturtle t.pensize(2) #定义笔头大小 for i in range(200): #画多少雪花 t.pencolor("white") #定义画笔颜色为白色,其实就是雪花为白色 t.pu() #提笔,pu=penup t.setx(r.randint(-350,350)) #定义x坐标,随机从-350到350之间选择 t.sety(r.randint(-100,350)) #定义y坐标,注意雪花一般在地上不会落下,所以不会从太小的纵座轴开始 t.pd() #落笔,pd=pendown dens = 6 #雪花瓣数设为6 snowsize = r.randint(1,10) #定义雪花大小 for j in range(dens): #就是6,那就是画5次,也就是一个雪花五角星 #t.forward(int(snowsize)) #int()取整数 t.fd(int(snowsize)) t.backward(int(snowsize)) #t.bd(int(snowsize)) #注意没有bd=backward,但有fd=forward,小bug t.right(int(360/dens)) #转动角度 drawsnow()#调用画雪花的方法 t.done() # 完成,否则会直接关闭
复制过去,右键,选择这个:
画的比较慢,大家多等一会。
效果如下:
tree2.py
#导入所依赖的库 from turtle import * import random import time n = 80.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)
效果如下:
tree3.py
#导入turtle库 import turtle #设置屏幕大小 screen = turtle.Screen() screen.setup(800,600) #获取画笔并设置一些属性:圆形、红色、快 circle = turtle.Turtle() circle.shape('circle') circle.color('red') circle.speed('fastest') #抬起画笔 circle.up() #重新获取画笔 square = turtle.Turtle() #重新设置画笔属性:四方形、绿色、快 square.shape('square') square.color('green') square.speed('fastest') #重新抬起画笔 square.up() #跳到指定坐标位置 circle.goto(0,280) #复制当前图形 circle.stamp() k = 0 for i in range(1, 17): y = 30*i for j in range(i-k): x = 30*j square.goto(x,-y+280) square.stamp() square.goto(-x,-y+280) square.stamp() if i % 4 == 0: x = 30*(j+1) circle.color('red') circle.goto(-x,-y+280) circle.stamp() circle.goto(x,-y+280) circle.stamp() k += 2 if i % 4 == 3: x = 30*(j+1) circle.color('yellow') circle.goto(-x,-y+280) circle.stamp() circle.goto(x,-y+280) circle.stamp() square.color('brown') for i in range(17,20): y = 30*i for j in range(3): x = 30*j square.goto(x,-y+280) square.stamp() square.goto(-x,-y+280) square.stamp() turtle.exitonclick()
效果如下:
欢迎关注博主的微信公众号,分享好看好玩的技术:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。