• 当我给女同学用python画了个圣诞树后……


    前言

    嗨,彦祖们,不会过圣诞了还是一个人吧?今天我们来讲一下如何用python来画一个圣诞树,学会就快给那个她发过去吧,我的朋友圈已经让圣诞树刷屏了!这不就来给各位彦祖们教了,看完记得给个三连哦!

    请添加图片描述请添加图片描述

    请添加图片描述
    请添加图片描述
    当然都是好看的,但是码神莫,就是要搞点不一样的用,python来画一个!或者搞个前端来画!

    开始教学

    这次我们用的是python中的turtle(海龟)库,是python中的一个内置库不需要额外安装

    1. 创建窗口
    2. 设置画笔
    3. 绘制图形

    创建

    setup()函数,其中的参数为width,height,startx=None,starty=None,分别表示窗口宽,高,及,窗口在电脑屏幕上的横坐标和纵坐标。

    turtle.setup(800,600)
    
    • 1

    在这里插入图片描述

    设置画笔

    三个属性函数

    pensize(<width>) #粗细
    speed(speed) #运动速度
    color(color) #设置画笔颜色
    
    • 1
    • 2
    • 3

    绘制图像

    这就要提到海龟的坐标体系了,以窗口中心为原点,以右为正方向,上方为y轴正方向。

    移动

    1. forward(distance) #向前移动
    2. backward(distance) #向后移动
    3. goto(x,y=None)# 移动到相应的位置

    角度控制

    和上面的移动大同小异,都是3项控制
    4. right(degree)#向右转动
    5. left(degree)#向左转动
    6. seth(degree)#转动到某个方向

    图形绘制,图像填充

    这个今天用不到,也就不说了,欢迎爱好的彦祖们,评论区见!

    正片开始

    from turtle import *
    import random #随机,用来搞小圆点
    import time
    
    n = 100.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) #进程推迟时间
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60

    在这里插入图片描述

    最后

    本文纯属标题党,如有雷同,必然不是码神,哈哈哈

  • 相关阅读:
    Flink 启用与配置检查点 Checkpoint
    基于51单片机的智能路灯控制系统proteus仿真原理图PCB
    Milvus Standalone安装
    HTTP简述
    干货!改善跨境电商客户服务的有效方法
    【SpringBoot】yaml配置文件语法—总结回顾
    【华为OD题库-008】座位调整-Java
    唯品会的两个常用API分享(商品详情和关键字搜索)
    3.6 万颗星!开源 Web 服务器后起之秀,自带免费 HTTPS 开箱即用
    20221127-1Spring_day01(资料来自黑马程序)
  • 原文地址:https://blog.csdn.net/fwdwqdwq/article/details/125402222