Python制作圣诞树和圣诞树词云

二、Python画圣诞树

1. 圣诞树1号

```# -*- coding: UTF-8 -*-
"""
@Author  ：叶庭云
@公众号   ：AI庭云君
@CSDN    ：https://yetingyun.blog.csdn.net/
"""
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, j = 0, 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.mainloop()

```

2. 圣诞树2号

```# -*- coding: UTF-8 -*-
"""
@Author  ：叶庭云
@公众号  ：AI庭云君
@CSDN    ：https://yetingyun.blog.csdn.net/
"""
from turtle import *
import turtle
import random

n = 100.0

speed(96)

turtle.setup(width=800, height=720)
# 用screensize设置的是画布大小及背景色
screensize(800, 800, "White")
left(90)
forward(3 * n)
color("red", "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("#00CC00")
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("#FF0066")
else:
color("#FF6600")
circle(2)
up()
backward(a)
right(90)
backward(b)

turtle.mainloop()
```

```# 画雪花关键代码
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()  # 调用画雪花的方法
```

三、Python制作圣诞树词云

12篇差不多够了吧

```# -*- coding: UTF-8 -*-
"""
@Author   ： 叶庭云
@公众号    ： AI庭云君
@CSDN     ： https://yetingyun.blog.csdn.net/
"""

import jieba
import re
from stylecloud import gen_stylecloud
from PIL import Image
import numpy as np

with open("./圣诞素材/Christmas.txt", encoding="utf-8") as f:

# 文本预处理  去除一些无用的字符   只提取出中文出来
new_data = re.findall("[u4e00-u9fa5]+", data, re.S)
new_data = "/".join(new_data)

# 文本分词  精确模式
seg_list_exact = jieba.cut(new_data, cut_all=False)

# 加载停用词
with open("stop_words.txt", encoding="utf-8") as f:
# 获取每一行的停用词 添加进集合
")
stop_words = set()
for i in con:

# 列表解析式  去除停用词和单个词
result_list = [word for word in seg_list_exact if word not in stop_words and len(word) > 1]
print(result_list)

# 个人推荐使用的palette配色方案  效果挺好看   其他测试过  感觉一般~~
# colorbrewer.qualitative.Dark2_7
# cartocolors.qualitative.Bold_5
# colorbrewer.qualitative.Set1_8
gen_stylecloud(
text=" ".join(result_list),                   # 文本数据
size=600,                                     # 词云图大小
font_path=r"./font/猫啃网糖圆体.ttf",          # 中文词云  显示需要设置字体
icon_name = "fas fa-tree",                    # 图标
output_name="./results/圣诞树06.png",          # 输出词云图名称
palette="cartocolors.qualitative.Bold_5",     # 选取配色方案
)
```