前言

小编把之前发过的好玩的有趣的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),颜色:colorscreen_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 = 4if branch > min_branch:if branch < 8:# 以0.5的概率,向左、右分支if randint(0, 1) == 0:# 左为白色turtle_obj.pencolor("snow")else:# 右为珊瑚色turtle_obj.pencolor("lightcoral")# 枝干turtle_obj.pensize(branch / 2)elif 8 <= branch <= 16:# 以0.33的概率,分为左、中、右分支if randint(0, 2) == 0:# 左为白色turtle_obj.pencolor("snow")else:# 中、右为珊瑚色turtle_obj.pencolor("lightcoral")# 树枝turtle_obj.pensize(branch / 4)else:# 褐色turtle_obj.pencolor(tree_color)# 细枝turtle_obj.pensize(branch / 10)# 最开始的树干长度turtle_obj.forward(branch)# 随机度数因子a = 1.5 * random()# 顺时针旋转随机角度(0~30度)turtle_obj.right(20 * a)# 随机长度因子b = 1.5 * random()# 往右画,直到画不动为止draw_tree(turtle_obj, branch - 10 * b, tree_color)# 左转随机角度turtle_obj.left(40 * a)# 往左画,直到画不动位置draw_tree(turtle_obj, branch - 10 * b, tree_color)# 右转一定角度turtle_obj.right(20 * a)# 提笔turtle_obj.penup()# 递归结束回到起点turtle_obj.backward(branch)turtle_obj.pendown()

(四)绘制多棵树

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

def trees(tree_num):# 颜色color = ['brown', 'tan', 'black']for j in range(tree_num):# 树干颜色tree_color = color[randint(0, len(color) - 1)]# 画笔大小pensize = randint(2, 5)# 前进像素forward = ((-1) ** pensize) * pensize * randint(20, 50)# 后退像素if pensize <= 3:backward = ((-1) ** pensize) * (5 - pensize) * randint(10, 15)else:backward = pensize * 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 * 15# 落花数flowers = branch# 第j棵树draw_tree(turtle_obj, branch, tree_color)# 花瓣draw_petal(turtle_obj, flowers)

二、效果

整体效果还是挺美的。

2、皮卡丘

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

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

正文:

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

上代码:

#上嘴唇
color("black","#FFD624")
penup()
goto(-168, 65)
pendown()
begin_fill()
setheading(-25)
for i in range(2):setheading(-25)circle(35, 70)
end_fill()
#嘴中第二个阴影部分
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()# 左眼
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()
# 右眼
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()

结果展示:

 3、爱心发射

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

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

直接上代码:

#!/usr/bin/env python# -*- coding:utf-8 -*- import turtle
import time# 画心形圆弧def hart_arc():for i in range(200):turtle.right(1)turtle.forward(2)def move_pen_position(x, y):turtle.hideturtle()     # 隐藏画笔(先)turtle.up()     # 提笔turtle.goto(x, y)    # 移动画笔到指定起始坐标(窗口中心为0,0)turtle.down()   # 下笔turtle.showturtle()     # 显示画笔# 初始化turtle.setup(width=800, height=500)     # 窗口(画布)大小turtle.color('red', 'pink')     # 画笔颜色turtle.pensize(3)       # 画笔粗细turtle.speed(1)     # 描绘速度# 初始化画笔起始坐标move_pen_position(x=0,y=-180)   # 移动画笔位置turtle.left(140)    # 向左旋转140度turtle.begin_fill()     # 标记背景填充位置# 画心形直线( 左下方 )
turtle.forward(224)    # 向前移动画笔,长度为224# 画爱心圆弧hart_arc()      # 左侧圆弧
turtle.left(120)    # 调整画笔角度
hart_arc()      # 右侧圆弧# 画心形直线( 右下方 )turtle.forward(224)turtle.end_fill()       # 标记背景填充结束位置# 点击窗口关闭程序window = turtle.Screen()window.exitonclick()

结果展示:

 4、清明上河图

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

杠杠滴~

部分代码:

效果展示:

 5、玫瑰花

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

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

祝愿单身早日脱单

源码:

from turtle import *
import timesetup(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()

结果展示效果图:

 6、圣诞树

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

源码:

import turtlescreen = 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 * ifor j in range(i - k):x = 30 * jsquare.goto(x, -y + 280)square.stamp()square.goto(-x, -y + 280)square.stamp()

效果展示图:

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

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

戳一戳腾讯文档-在线文档https://docs.qq.com/doc/DT1ZIUFJmU0N1T0Rt

一日一技:用Python绘画有多好玩相关推荐

  1. python线程监控配置文件_一日一技:Python多线程的事件监控

    一日一技:Python多线程的事件监控 设想这样一个场景: 你创建了10个子线程,每个子线程分别爬一个网站,一开始所有子线程都是阻塞等待.一旦某个事件发生:例如有人在网页上点了一个按钮,或者某人在命令 ...

  2. python模型预测结果 取整_一日一技:Python里面的//并不是做了除法以后取整

    一日一技:Python里面的//并不是做了除法以后取整 在Python 3里面,我们做除法的时候会遇到 a/b 和 a//b两种写法: >>> 10 / 3 3.3333333333 ...

  3. python并列排名_一日一技:Python实现有序列表并列排名

    一日一技:Python实现有序列表并列排名 现在有一个有序的列表: [75,78,80,89,89,92,93]需要对他们按成绩进行排名. 说到排名,一般大家会这样写: grade_list = [7 ...

  4. python调用按键精灵插件_【一日一技】python模块的懒加载

    在编写python项目时,通常将需要使用的模块直接通过import关键字导入到项目中,如果后续逻辑变动了,这个模块不需要使用,此时这个模块就白引入了,此时可以利用 import 方法实现模块的懒加载. ...

  5. python3.6字典有序_一日一技:Python 3.6以后,字典有序

    从Python 3.6开始,字典的Key将会保留插入时候的顺序.例如: 在Python 3.6和以上的版本中,>>> a = {'hello': 'world', 'xyz': 'a ...

  6. python变量下划线开头_一日一技:python中下划线在不同位置的作用

    在Python的变量名和方法名中,单下划线和双下划线都有各自的含义,有的仅仅是作为约定,用于提示开发人员,而有的则对Python解释器有特殊含义. 你可能有些疑惑,在Python中变量名和方法名中的单 ...

  7. python计时器timeit返回秒数_一日一技:Python中的timeit()方法

    timeit()方法 python中的timeit()方法, 它用于获取代码的执行时间.该库将代码语句运行一百万次,并提供从集合中花费的最短时间.这是一种有用的方法,有助于检查代码的性能. 语法如下: ...

  8. python线程监控_一日一技:Python多线程的事件监控

    设想这样一个场景: 你创建了10个子线程,每个子线程分别爬一个网站,一开始所有子线程都是阻塞等待.一旦某个事件发生:例如有人在网页上点了一个按钮,或者某人在命令行输入了一个命令,10个爬虫同时开始工作 ...

  9. python中的断言是什么意思_一日一技:python中的断言

    一.使用python中的断言来自动检测python程序中的错误,让程序更加可靠且更易于调试 从根本上来说,python中的断言语句是一种调试工具,用来测试某个断言条件,如果断言条件为True,则程序将 ...

最新文章

  1. 实现gps与服务器通信协议,一种自适应GPS通信协议分析算法的设计与实现
  2. 努力就要晒出来,13周年订阅专栏送图书/T恤晒单集结号!!!
  3. 为什么Bugs没有被修复?
  4. 推荐系统中的召回算法--协同过滤
  5. Qt QSetting *.ini.lock
  6. Java Generics and Collections-2.1
  7. spring定时任务(@Scheduled注解)
  8. [3/21]Windows Server 2008时钟方面的改进展示
  9. Linux 进程后台运行
  10. 分页解决方案 之 分页算法——Pager_SQL的思路和使用方法
  11. 老男孩python最新15期课程安排_老男孩Python完美实战课程 14期视频教程 28周Python视频教程 15-25周部分...
  12. 国产高人气无线蓝牙耳机测评,抖音火爆的蓝牙耳机值得入手吗?
  13. python计算代码运行时间
  14. 彻底关闭Windows DefenderWindows 更新
  15. PPTP(Point to Point Tunneling Protocol),即点对点隧道协议。
  16. word中删除水平线(分割线)的方法
  17. IDEA新手使用手册
  18. OpenResty 连接Redis
  19. java中jQuery自我学习中介
  20. 转贴:girdview分组,统计,排序的解决方案

热门文章

  1. matlab-基础 复数 实部、虚部、模、共轭、辐角
  2. 按键式计算器——人机交互的变革
  3. 什么学习软件需要身份证验证_什么是两层身份验证,为什么我需要它?
  4. Python 图像 一样大小_#带你学Python# 表白利器:用Python发微信表情画-带你认识图片的秘密...
  5. springboot2.7.X+es8 集成开发
  6. 有感而发20210216
  7. 亚马逊SP-API申请,亚马逊SP-API注册,亚马逊开发者申请,PII申请怎么做?SP-API是什么?
  8. 我的世界手机版javaui材质包_我的世界:史蒂夫都有皮肤,存档也想换新装,这4种材质包很适合...
  9. VRCHAT——SDK3
  10. C语言学生管理系统(期末作业,超详细哟,拿走不谢!!!)