专栏首页Python进阶之路平安喜乐 | Python制作圣诞树和词云

平安喜乐 | Python制作圣诞树和词云

一、前言

圣诞节庆祝和送礼物貌似现在已经成为全球流行的习惯~

本文利用 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()  # 调用画雪花的方法

3. 圣诞树3号

画一颗漂亮的圣诞树!!代码过长,限于篇幅不贴在文中,效果如下所示:

三、Python制作圣诞树词云

做词云得有关键词素材,这就去百度文库高校版下载一些圣诞祝福文章~~

12篇差不多够了吧

接下来上 Python 代码!!!!!!

# -*- 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:
    data = f.read()

# 文本预处理  去除一些无用的字符   只提取出中文出来
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:
    # 获取每一行的停用词 添加进集合
    con = f.read().split('\n')
    stop_words = set()
    for i in con:
        stop_words.add(i)

# 列表解析式  去除停用词和单个词
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',     # 选取配色方案
)

效果如下所示:

四、彩蛋

在逛 Gitee 上还发现有人上传了 exe 可以直接生成圣诞树(貌似是C#做的?),效果如下所示:

地址:https://gitee.com/lengfengya/christmas-tree?_from=gitee_search

本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!
本文分享自作者个人站点/博客:https://blog.csdn.net/fyfugoyfa复制
如有侵权,请联系 yunjia_community@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

  • 圣诞快乐——Keras+树莓派:用深度学习识别圣诞老人

    机器之心
  • 用python绘制高级版圣诞树(小彩灯+落叶+雪花+唱歌+祝福弹窗+圣诞树词云图)看

    一年一度的圣诞节快到了,博客上也开始五花八门的出现各种博文,当然朋友圈也是圈出来花来了。在CSDN搜索栏里面发现大家的博文阅读量也都【】破万了,当然也不能湿了这...

    奈何缘浅wyj
  • 用 Wolfram 语言制作圣诞动画

    WolframChina
  • 圣诞快乐: 用 GaussDB T 绘制一颗圣诞树,兼论高斯数据库语法兼容

    转眼就是圣诞的节日,祝大家节日快乐。用 GaussDB T (也就是 GaussDB 100)绘制一棵圣诞树,纯国产,更喜庆。

    数据和云
  • 5万余首圣诞歌词数据包+Kaggle数据科学家的脑洞=?(附数据包+代码)

    大数据文摘
  • 节日福利 | 6 个圣诞相关的高质量数据集+算力

    场景描述:又是一年一度的平安夜 + 圣诞节,除了苹果和圣诞树,还有什么新鲜花样吗?为了让 21 世纪 20 年代的最后一个圣诞节有所不同,超神经今天特地给大家带...

    HyperAI超神经
  • 程序员的圣诞节--送她一颗圣诞树(附源代码)

    昨天是平安夜,今天是12.25号,传说中的圣诞节,好日子真多,相信大家在公司里已经感受到了节日的气氛,非常热闹。但是对于我们码农(程序员、程序猿、程序媛)来说,...

    飞雪无情
  • 以假乱真:机器学习是怎么写出圣诞歌的?

    日前,数据专家提姆·布什利用机器学习算法写了首圣诞歌词,让古老的圣诞节充满了浓浓的AI 特色。 ? 如何用大数据写出一首圣诞歌曲(来自Lynchpin) AI ...

    企鹅号小编
  • VR游戏《TippyTree》上线!是的,又要过圣诞了……

    emmmm,言归正传!进入12月份后,似乎整个城市的商家都不约而同的过起了“圣诞节”(不是明明还没到嘛~)。不止是肯德基,星巴克都推出了“穿圣诞颜色的衣服就能买...

    VRPinea
  • 暖心创意,本田为生病儿童带去AR冬季仙境体验

    VRPinea
  • Python数据分析之定制化网易云音乐歌单数据情况数据分析

    罗罗攀
  • Merry Christmas!

      记得前几年的圣诞节,在某个交流群里有人分享过这样一个程序,当时啥也不懂,只知道很酷。惊叹之后就没有然后了,今天追根溯源找到了这组桌面小摆件的出处。

    小孙同学
  • 去不了日本环球影城,先玩个AR游戏《Scriptum》“解个馋”吧……

    哇!临近年底,小编的心情真是扼制不住地“砰砰砰”!因为从去年就不断传出消息的“《名侦探柯南》与日本大阪环球影城的联动”,就在不远处的2019向小编招手。“来来来...

    VRPinea
  • 圣诞树背后的故事:生物学家耗时40年,只为用基因测序培育完美圣诞树

    镁客网
  • 圣诞节到了,送给大家一颗由代码实现的圣诞树,让忙碌的生活也不缺乏仪式感

    年尾将之,一颗圣诞树就代表着一份平安与幸运,在这里将最好的祝福送给你,祝各位圣诞快乐!

    大数据小禅
  • Python 送你一棵圣诞树

    有人要说了,圣诞节是耶稣诞生的日子,我又不信基督教,有啥好庆祝的。这你就有所不知了,Python 的诞生也跟圣诞节有关:1989 年,那是一个冬天,那年的第一场...

    Crossin先生
  • QQ 的登录封面是怎么设计的?

    用户量越多,产品登录封面的设计越难做,因为需要照顾到更多的人群。QQ是个多终端产品,在手机端和电脑端都有日登录数亿的用户。为QQ这样一艘巨舰做运营策划,压力,一...

    腾讯大讲堂
  • 【圣诞快乐】这是一首 AI 创作的圣诞歌

    【新智元导读】 AI 能为人类做什么?平安夜,来听一首AI 创作的圣诞歌吧。(虽然有点跑调)祝读者朋友们圣诞快乐! “神经网络卡拉OK”程序能够产生任何形式的数...

    新智元

扫码关注云+社区

领取腾讯云代金券