一日一技:用Python绘画有多好玩

前言

小编把之前发过的好玩的有趣的Python绘画结果总结起来发给大家,可以在各种节日跟心爱的那个TA来个浪漫表白哦~喜欢就收藏下来吧,多多支持哦~

https://docs.qq.com/doc/DT1ZIUFJmU0N1T0Rt

1、樱花树

今天刷漫画的时候看到那个樱花树开的真是太好看了,突然就想画个樱花树,然后趁着心情好就把它解析出来,嘿嘿是真的还蛮好看的,而且一个代码可以随机画出多种样式的。

樱花原产北半球温带环喜马拉雅山地区,在世界各地都有生长,主要在日本国生长。花每枝3到5朵,成伞状花序,花瓣先端缺刻,花色多为白色、粉红色。花常于3月与叶同放或叶后开花,随季节变化,樱花花色幽香艳丽,常用于园林观赏。樱花可分单瓣和复瓣两类,单瓣类能开花结果,复瓣类多半不结果。

Python是一种跨平台的计算机程序设计语言。 是一个高层次的结合了解释性、译性、互动性和面向对象的脚本语言。最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发。

Turtle库是Python语言中一个很流行的绘制图像的函数库。

想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制。

(一)绘制画幕

首先绘制画幕,命令说明如下:

1.screensize(width, height, bg=color):设置画幕大小及颜色

2.setup(p1, p2):设置画幕大小,当 p1、p2 为小数时表示屏幕占比;当 p1、p2 为整数时表示像素

3.tracer(speed):设置绘制速度,speed越大表示绘制速度越快

def get_screen(width, height, color, speed):
    # 创建画幕
    screen_obj = turtle.Screen()
    # 画布大小:(width, height),颜色:color
    screen_obj.screensize(width, height, bg=color)
    screen_obj.setup(1.0, 1.0)
    # speed倍加速
    screen_obj.tracer(speed)

    return screen_obj

(二)绘制落花

在确定落花数量的情况下,我们首先要评估落花的范围,这里通过两句语句来约束落花的范围(落花数量越多,当然地落花范围也就越大):

有正有负就可以让画笔往二个方向走
x = flower - 4 * flower * random()

花瓣整体宽度(-10, 10)
y = 10 - 20 * random()

然后我们来讲讲 turtle 常用的几个命令吧:

首先,我们得明确,对于 turtle 画布来说,其为一个 xOy 的平面,画布中心为原点 O ;对于 turtle 画笔来说,其有一个初始方向,指向 x 轴正方向。

1.penup():起笔(可以想象成画画的时候沾墨之后提笔)

2.forward():向前移动

3.backward():向后移动

4.left(degree):逆时针旋转 degree 度

5.right(degree):顺时针旋转 degree 度

6.pendown():落笔

7.pencolor(color):笔墨颜色为 color

8.circle(r):画一个半径为 r 的圆

代码如下:

def draw_petal(turtle_obj, flower):
    # 绘制掉落的花瓣
    for i in range(int(flower / 2)):
        # 有正有负就可以让画笔往二个方向走
        x = flower - 2 * flower * random()

        # 花瓣整体宽度(-10, 10)
        y = 10 - 20 * random()

        # 提笔,向前y,左转90,走x,落笔
        turtle_obj.penup()
        turtle_obj.forward(y)
        turtle_obj.left(90)
        turtle_obj.forward(x)
        turtle_obj.pendown()

        # 珊瑚色
        turtle_obj.pencolor("lightcoral")
        # 画圆
        turtle_obj.circle(1)

        # 回到起点
        # 提笔,后退x,右转90,后退y,落笔
        turtle_obj.penup()
        turtle_obj.backward(x)
        turtle_obj.right(90)
        turtle_obj.backward(y)
        turtle_obj.pendown()

(三)绘制树枝与花瓣

读者会发现,在 drwa_tree 方法中,又出现了两次 drwa_tree 方法,这是一个递归的方法,可以简单理解为一棵树最下面的树枝最少且最粗,越往上树枝数量增加但是变细了。

def draw_tree(turtle_obj, branch, tree_color):
    # 设置一个最小分支长度
    min_branch = 4

    if branch > min_branch:
        if branch < 8:
            # &#x4EE5;0.5&#x7684;&#x6982;&#x7387;&#xFF0C;&#x5411;&#x5DE6;&#x3001;&#x53F3;&#x5206;&#x652F;
            if randint(0, 1) == 0:
                # &#x5DE6;&#x4E3A;&#x767D;&#x8272;
                turtle_obj.pencolor("snow")
            else:
                # &#x53F3;&#x4E3A;&#x73CA;&#x745A;&#x8272;
                turtle_obj.pencolor("lightcoral")
            # &#x679D;&#x5E72;
            turtle_obj.pensize(branch / 2)
        elif 8 <= 10 branch <="16:" # 以0.33的概率,分为左、中、右分支 if randint(0, 2)="=" 0: 左为白色 turtle_obj.pencolor("snow") else: 中、右为珊瑚色 turtle_obj.pencolor("lightcoral") 树枝 turtle_obj.pensize(branch 4) 褐色 turtle_obj.pencolor(tree_color) 细枝 10) 最开始的树干长度 turtle_obj.forward(branch) 随机度数因子 a="1.5" * random() 顺时针旋转随机角度(0~30度) turtle_obj.right(20 a) 随机长度因子 b="1.5" 往右画,直到画不动为止 draw_tree(turtle_obj, - b, tree_color) 左转随机角度 turtle_obj.left(40 往左画,直到画不动位置 右转一定角度 提笔 turtle_obj.penup() 递归结束回到起点 turtle_obj.backward(branch) turtle_obj.pendown()< code></=>

(四)绘制多棵树

这部分代码的前半部分是用来约束树根的位置的,为了使树可以在图像中显示地较为完成,较大的树根应该更靠近于画幕底端,且不能太靠近两边,其余部分代码就很容易理解了。

def trees(tree_num):
    # &#x989C;&#x8272;
    color = ['brown', 'tan', 'black']

    for j in range(tree_num):
        # &#x6811;&#x5E72;&#x989C;&#x8272;
        tree_color = color[randint(0, len(color) - 1)]

        # &#x753B;&#x7B14;&#x5927;&#x5C0F;
        pensize = randint(2, 5)
        # &#x524D;&#x8FDB;&#x50CF;&#x7D20;
        forward = ((-1) ** pensize) * pensize * randint(20, 50)
        # &#x540E;&#x9000;&#x50CF;&#x7D20;
        if pensize <= 15 3: backward="((-1)" ** pensize) * (5 - randint(10, 15) else: randint(45, 50) # 创建画笔 turtle_obj="turtle.Turtle()" 画笔粗细 turtle_obj.pensize(pensize) 提笔,向前forward,左转90,backward,落笔 turtle_obj.penup() turtle_obj.forward(forward) turtle_obj.left(90) turtle_obj.backward(backward) turtle_obj.pendown() 画笔颜色:褐色 turtle_obj.pencolor(tree_color) 枝干粗细 branch="pensize" 落花数 flowers="branch" 第j棵树 draw_tree(turtle_obj, branch, tree_color) 花瓣 draw_petal(turtle_obj, flowers)< code></=>

二、效果

整体效果还是挺美的。

一日一技:用Python绘画有多好玩

2、皮卡丘

相信大家都不会拒绝一只会皮卡皮卡!皮卡丘~的小可爱吧, 小时候是不是都幻想着身边有一只皮卡丘呢?

https://docs.qq.com/doc/DT1ZIUFJmU0N1T0Rt

正文:

今天就为大家分享用python画一只可爱的皮卡丘实例,具有很好的参考价值,希望对大家有所帮助。一起过来看看吧,让我们愉快地开始吧~

一日一技:用Python绘画有多好玩

上代码:

#&#x4E0A;&#x5634;&#x5507;
color("black","#FFD624")
penup()
goto(-168, 65)
pendown()
begin_fill()
setheading(-25)
for i in range(2):
    setheading(-25)
    circle(35, 70)
end_fill()
#&#x5634;&#x4E2D;&#x7B2C;&#x4E8C;&#x4E2A;&#x9634;&#x5F71;&#x90E8;&#x5206;
color("#AB1945", "#AB1945")
penup()
goto(-142, 45)
pendown()
begin_fill()
setheading(40)
circle(-33, 70)
goto(-104,48.3)
penup()
goto(-108,33)
pendown()
setheading(155)
circle(25, 70)
end_fill()

&#x5DE6;&#x773C;
t.pu()
t.color("black")
t.setpos(t.xcor()-40,t.ycor()+90)
t.pd()
t.circle(5)
t.pu()
t.setpos(t.xcor()+5,t.ycor()+10)
t.pd()
t.begin_fill()
t.seth(190)
t.circle(15, 130)
t.seth(310)
t.circle(10, 15)
t.seth(0)
t.circle(17, 133)
t.seth(90)
t.circle(10, 15)
t.end_fill()
t.pu()
t.setpos(t.xcor()+2,t.ycor()-15)
t.pd()
t.color("white")
t.begin_fill()
t.circle(5)
t.end_fill()
&#x53F3;&#x773C;
t.pu()
t.setpos(t.xcor()+85,t.ycor()+15)
t.pd()
t.color("black")
t.circle(5)
t.pu()
t.setpos(t.xcor()+5,t.ycor()+10)
t.pd()
t.begin_fill()
t.seth(190)
t.circle(20, 130)
t.seth(310)
t.circle(10, 15)
t.seth(0)
t.circle(22, 133)
t.seth(90)
t.circle(13, 15)
t.end_fill()
t.pu()
t.setpos(t.xcor()-7,t.ycor()-15)
t.pd()
t.color("white")
t.begin_fill()
t.circle(7)
t.end_fill()

结果展示:

一日一技:用Python绘画有多好玩

3、爱心发射

都说程序员不浪漫,上次看到一个程序员小哥给自己老婆开发了一个专属的APP。其实程序员还有更多美好的事情可以做,比如,给你喜欢的妹纸,用代码的方式去表白(当然可能还有一些前戏啥的,自己结合实际场景再渲染下)

直接用实力告诉女朋友,我也是浪漫的!

直接上代码:

#!/usr/bin/env python

-*- coding:utf-8 -*-

import turtle
import time

&#x753B;&#x5FC3;&#x5F62;&#x5706;&#x5F27;

def hart_arc():

    for i in range(200):

        turtle.right(1)

        turtle.forward(2)

def move_pen_position(x, y):

    turtle.hideturtle()     # &#x9690;&#x85CF;&#x753B;&#x7B14;&#xFF08;&#x5148;&#xFF09;

    turtle.up()     # &#x63D0;&#x7B14;

    turtle.goto(x, y)    # &#x79FB;&#x52A8;&#x753B;&#x7B14;&#x5230;&#x6307;&#x5B9A;&#x8D77;&#x59CB;&#x5750;&#x6807;&#xFF08;&#x7A97;&#x53E3;&#x4E2D;&#x5FC3;&#x4E3A;0,0&#xFF09;

    turtle.down()   # &#x4E0B;&#x7B14;

    turtle.showturtle()     # &#x663E;&#x793A;&#x753B;&#x7B14;

&#x521D;&#x59CB;&#x5316;

turtle.setup(width=800, height=500)     # &#x7A97;&#x53E3;&#xFF08;&#x753B;&#x5E03;&#xFF09;&#x5927;&#x5C0F;

turtle.color('red', 'pink')     # &#x753B;&#x7B14;&#x989C;&#x8272;

turtle.pensize(3)       # &#x753B;&#x7B14;&#x7C97;&#x7EC6;

turtle.speed(1)     # &#x63CF;&#x7ED8;&#x901F;&#x5EA6;

&#x521D;&#x59CB;&#x5316;&#x753B;&#x7B14;&#x8D77;&#x59CB;&#x5750;&#x6807;

move_pen_position(x=0,y=-180)   # &#x79FB;&#x52A8;&#x753B;&#x7B14;&#x4F4D;&#x7F6E;

turtle.left(140)    # &#x5411;&#x5DE6;&#x65CB;&#x8F6C;140&#x5EA6;

turtle.begin_fill()     # &#x6807;&#x8BB0;&#x80CC;&#x666F;&#x586B;&#x5145;&#x4F4D;&#x7F6E;

&#x753B;&#x5FC3;&#x5F62;&#x76F4;&#x7EBF;&#xFF08; &#x5DE6;&#x4E0B;&#x65B9; &#xFF09;
turtle.forward(224)    # &#x5411;&#x524D;&#x79FB;&#x52A8;&#x753B;&#x7B14;&#xFF0C;&#x957F;&#x5EA6;&#x4E3A;224

&#x753B;&#x7231;&#x5FC3;&#x5706;&#x5F27;

hart_arc()      # &#x5DE6;&#x4FA7;&#x5706;&#x5F27;
turtle.left(120)    # &#x8C03;&#x6574;&#x753B;&#x7B14;&#x89D2;&#x5EA6;
hart_arc()      # &#x53F3;&#x4FA7;&#x5706;&#x5F27;

&#x753B;&#x5FC3;&#x5F62;&#x76F4;&#x7EBF;&#xFF08; &#x53F3;&#x4E0B;&#x65B9; &#xFF09;

turtle.forward(224)

turtle.end_fill()       # &#x6807;&#x8BB0;&#x80CC;&#x666F;&#x586B;&#x5145;&#x7ED3;&#x675F;&#x4F4D;&#x7F6E;

&#x70B9;&#x51FB;&#x7A97;&#x53E3;&#x5173;&#x95ED;&#x7A0B;&#x5E8F;

window = turtle.Screen()

window.exitonclick()

结果展示:

一日一技:用Python绘画有多好玩

4、清明上河图

今天闲暇时间,用Python、js制作一张《清明上河图》~

杠杠滴~

部分代码:

一日一技:用Python绘画有多好玩

效果展示:

一日一技:用Python绘画有多好玩

5、玫瑰花

快来学习Python吧,它会给你带来很多乐趣的,现在我们就来画朵玫瑰花吧!

对于喜欢的女孩子表白的时候都喜欢送玫瑰花,但是玫瑰花又容易凋谢又比较贵,特别是对于学生而言就更加承受不了了,毕竟现在还是用的父母的钱,如果我们用编程写出来玫瑰花用来表白又”省钱”又好看,还耐用……

祝愿单身早日脱单

源码:

from turtle import *
import time

setup(1000,800,0,0)
speed(0)
penup()
seth(90)
fd(340)
seth(0)
pendown()

speed(5)
begin_fill()
fillcolor('red')
circle(50,30)

for i in range(10):
    fd(1)
    left(10)

circle(40,40)

for i in range(6):
    fd(1)
    left(3)

circle(80,40)

for i in range(20):
    fd(0.5)
    left(5)

circle(80,45)

for i in range(10):
    fd(2)
    left(1)

circle(80,25)

for i in range(20):
    fd(1)
    left(4)

circle(50,50)

time.sleep(0.1)

circle(120,55)

speed(0)

seth(-90)
fd(70)

right(150)
fd(20)

left(140)
circle(140,90)

left(30)
circle(160,100)

left(130)
fd(25)

penup()
right(150)
circle(40,80)
pendown()

left(115)
fd(60)

penup()
left(180)
fd(60)
pendown()

end_fill()

right(120)
circle(-50,50)
circle(-20,90)

speed(1)
fd(75)

speed(0)
circle(90,110)

penup()
left(162)
fd(185)
left(170)
pendown()
circle(200,10)
circle(100,40)
circle(-52,115)
left(20)
circle(100,20)
circle(300,20)
speed(1)
fd(250)

penup()
speed(0)
left(180)
fd(250)
circle(-300,7)
right(80)
circle(200,5)
pendown()

left(60)
begin_fill()
fillcolor('green')
circle(-80,100)
right(90)
fd(10)
left(20)
circle(-63,127)
end_fill()

结果展示效果图:

一日一技:用Python绘画有多好玩

6、圣诞树

给大家绘画个圣诞树玩玩,收藏起来,圣诞节用得上哦~很漂亮,整理了一下源码,分享给大家(这些我都测试过,确实可以生成喔~)

源码:

import turtle

screen = turtle.Screen()
screen.setup(375, 700)

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 = 0
for i in range(1, 13):
    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()

效果展示图:

一日一技:用Python绘画有多好玩

后续还有什么喜欢的或者想要的,可以评论区留言哦,我会收集好同步发出来的哦~

喜欢的小伙伴给个喜欢就赶紧拿走吧,戳一下就可以哦 ↓

戳一戳腾讯文档-在线文档一日一技:用Python绘画有多好玩https://docs.qq.com/doc/DT1ZIUFJmU0N1T0Rt ;

Original: https://blog.csdn.net/m0_59485658/article/details/125589128
Author: 代码输入中…
Title: 一日一技:用Python绘画有多好玩

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/731015/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • python 使用 pyautogui 实现截屏并保存为图片(一)

    此程序包获取与计算机相关的软件和硬件信息以及屏幕处理工具的操作 [En] This package acquires computer-related software and h…

    Python 2023年5月25日
    073
  • python数据间隔_如何用python绘制时间间隔数据?

    这是一个有点不同的方法。对于标签使用ax.注释. 我把标签上的日期,不知道你是要这些标签或发动机号。我肯定你从这里得到了:import pandas as pd df = pd.D…

    Python 2023年8月20日
    046
  • pytest

    pip install pytest # 安装pytest pytest –version # 查看pytest版本 pytest框架下编写测试用例: 测试类Test开…

    Python 2023年9月13日
    035
  • Python学习笔记——Numpy的初步学习

    目录 1.Numpy介绍 2.数组 2.1创建数组 2.2数组的属性 2.3创建特殊的数组 2.4数组切片操作 2.4.1——一维数组的切片 2.4.3——二维数组的切片 2.4….

    Python 2023年8月26日
    048
  • 动手学深度学习——数据操作之ndarray与tensor间的转换

    无论使用哪个深度学习框架,它的张量类(在MXNet中为 ndarray, 在PyTorch和TensorFlow中为 tensor)都与Numpy的ndarray类似。 但深度学习…

    Python 2023年8月23日
    0203
  • 定制ASP.NET Core的身份认证

    大家好,我是张飞洪,感谢您的阅读,我会不定期和你分享学习心得,希望我的文章能成为你成长路上的垫脚石,让我们一起精进。 本章是《定制ASP NET 6.0框架系列文章》的第10篇。在…

    Python 2023年10月15日
    035
  • MongoDB,入门看这一篇足矣!

    一、介绍 在介绍 MongoDB 之前,我先介绍一下业务开发的时候遇到的痛点,以便大家对它有一个更加清晰的认识! 最近在用数据库存储数据的时候发现这么一个坑,例如从消息队列中监听消…

    Python 2023年10月23日
    029
  • python 包之 blinker 信号库教程

    一个基于Python的强大的信号库,它既支持简单的对象到对象通信,也支持针对多个对象进行组播 支持注册全局命名信号,支持自定义命名信号 支持匿名信号,线程安全 支持与接收者之间的持…

    Python 2023年6月10日
    063
  • 利用Pandas和Matplotlib将某校高中生体侧数据处理后可视化展现

    1、数据加载, pd.read_excel(‘./18级高一体测成绩汇总.xls’)默认加载第一个工作表 引入模块 import numpy as np i…

    Python 2023年9月5日
    061
  • Python代码阅读(第44篇):寻找符合条件的元素的位置

    本篇阅读的代码实现了在列表中寻找符合条件的元素的位置。 find_index def find_index(lst, fn): return next(i for i, x in …

    Python 2023年6月15日
    062
  • 常用Java接单平台一览

    不少主攻Java的程序员兄弟除了工作,还会在空闲时间选择接单来增加自己的收入;对于那些生活在二三线的程序员兄弟们,通过接单,来获得与一线城市对等的收入。具体该怎么做,且听我娓娓道来…

    Python 2023年9月27日
    038
  • 用numpy、PyTorch自动求导、torch.nn库实现两层神经网络

    实现从手动求导到自动求导再到模型的一步步深入。 一个全连接ReLU神经网络,一个隐藏层,没有bias,L2 Loss(h是隐藏层hidden,ReLU激活函数): h = W 1 …

    Python 2023年8月26日
    072
  • Jina 轻松学 —— 三个基本元素

    “ Document、Executor、Flow是 Jina 中的三个基本元素 “ 📄 Document —— Jina中的基本数据类型 ⚙️ E xecu…

    Python 2023年8月5日
    045
  • python中的pandas库

    文章目录 一、基本用法介绍 * 1.DataFrame()函数的两种传参方法: – 方法1: 方法2: 2.Series()函数的传参方法: 3.基本用法代码示例 二、…

    Python 2023年8月16日
    054
  • 在conda中制定python的路径

    抵扣说明: 1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。 Original: https://blo…

    Python 2023年9月9日
    067
  • Anaconda新手使用教程

    Anaconda使用教程一(新手友好) 前言 一、python和包以及anaconda的概念关系 * 关于python与包 关于anaconda 二、Anaconda安装问题 * …

    Python 2023年8月2日
    061
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球