2022年圣诞节,很高兴能遇见你。
一、前言
不知不觉又到年末啦,今年遇到了超级超级棒的人,希望能跟他一起做很多很多事,完成很多很多未完成的心愿。既然是圣诞节限定,那就送他一颗圣诞树吧🎄天天开心,永远幸福!!!
二、简易版圣诞树
height = 7#树叶的层数
num = 1#
for i in range(height):
print((' ' * (height - i)) + ('*' * num))
num += 2
print((' ' * height) + '|')
print("Merry Christmas!!!")
三、turtle库绘制圣诞树
学习一下用python的turtle库实现绘制一个圣诞树。
以下是turtle库针对画笔的一些命令:
(1)画笔运动的命令 turtle.forward(a) 向当前画笔方向移动a像素长度 turtle.backward(a) 向当前画笔相反方向移动a像素长度 turtle.right(a) 顺时针移动 aturtle.left(a) 逆时针移动 aturtle.pendown() 移动时绘制图形 turtle.goto(x,y) 将画笔移动到坐标为x,y的位置 turtle.penup() 移动时不绘制图形,提起笔 turtle.speed(a) 画笔绘制的速度范围 turtle.circle() 画图,半径为正,表示圆心在画笔的左边画圈 (2)画笔控制命令 turtle.pensize(width) 绘制图形的宽度 turtle.pencolor() 画笔的颜色 turtle.fillcolor(a) 绘制图形的填充颜色 turtle.color(a1,a2) 同时设置pencolor=a1,fillcolor=a2 turtle.filling() 返回当前是否在填充状态 turtle.begin_fill() 准备开始填充图形 turtle.end_fill() 填充完成 turtle.hideturtle() 隐藏箭头显示 turtle.showturtle() 显示箭头 (3)全局控制命令 turtle.clear() 清空turtle窗口,但是turtle的位置和状态不会改变 turtle.reset() 清空窗口,重置turtle状态为起始位置 turtle.undo() 撤销上一个turtle动作
import turtle as t
from turtle import *
import random as r
def drawlight(): #绘制圣诞树上的彩灯
if r.randint(0,30) == 0:
color('tomato')
circle(6) #圆的半径
elif r.randint(0,30) == 1:
color('orange')
circle(3)
elif r.randint(0,30) == 2:
color('MediumPurple1')
circle(4)
else:
linewidth = 5
color('dark green')
def drawtree(d,s): #绘制圣诞树主体
if d <= 0: return
forward(s)
drawtree(d-1, s * .8)
right(120)
drawtree(d-3, s * .5)
drawlight()
right(120)
drawtree(d-3, s * .5)
right(120)
backward(s)
def decoration(): 绘制树下的装饰品
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)
def drawsnow(): 绘制雪花
t.hideturtle() #隐藏画笔的箭头
t.pensize(2)
for i in range(200):
t.pencolor("white")
t.penup() #提起画笔
t.setx(r.randint(-350,350)) #设置x的坐标
t.sety(r.randint(-100,350)) #设置y的坐标
t.pendown() #放下画笔
dens = 6
snowsize = r.randint(1,10)
for j in range(dens): #绘制*字形雪花
t.forward(int(snowsize))
t.backward(int(snowsize))
t.right(int(360/dens))
n=100.0
t.pensize(10)
speed("fastest")
t.screensize(800,600, "black") #定义画布大小和背景颜色
left(90)
forward(3 * n)
color("yellow", "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)
#调用画树的函数
drawtree(15 , n)
backward(n/2)
#绘制装饰
decoration()
#写文字
t.color("brown1")
t.write("Merry Christmas", align="center", font=("Comic Sans MS", 60, "bold"))
# 调用雪花函数
drawsnow()
t.done() #收笔