目录
  • 一、前言
  • 二、python画圣诞树
    • 1. 圣诞树1号
    • 2. 圣诞树2号
    • 3. 圣诞树3号
  • 三、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 

      以上就是python制作圣诞树和圣诞树词云的详细内容,更多关于python圣诞树词云的资料请关注www.887551.com其它相关文章!