每天一个Python小技巧,用Python 画个哆啦a梦,文末还有学习视频
itomcoil 2025-01-21 18:35 29 浏览
文末有小编给大家准备的资料,需要的关注小编直接私信“学习”来领取哦
见网络上有人用Python 画出来个多啦A梦,很是新奇,来来来,我们看一下他们主要用到的库。
其实主要用的库就一个 turtle 库
先说明一下turtle绘图的基础知识:
1. 画布(canvas)
画布就是turtle为我们展开用于绘图区域, 我们可以设置它的大小和初始位置
1.1 设置画布大小
turtle.screensize(canvwidth=None, canvheight=None, bg=None)参数分别为画布的宽(单位像素), 高, 背景颜色
如:
turtle.screensize(800, 600, "green")
turtle.screensize() #返回默认大小(400, 300)
turtle.setup(width=0.5, height=0.75, startx=None, starty=None)
参数:width, height: 输入宽和高为整数时, 表示像素; 为小数时, 表示占据电脑屏幕的比例(startx, starty): 这一坐标表示 矩形窗口左上角顶点的位置, 如果为空,则窗口位于屏幕中心
如:
turtle.setup(width=0.6, height=0.6)
turtle.setup(width=800, height=800, startx=100, starty=100)
2. 画笔
2.1 画笔的状态
在画布上,默认有一个坐标原点为画布中心的坐标轴, 坐标原点上有一只面朝x轴正方向小乌龟. 这里我们描述小乌龟时使用了两个词语:坐标原点(位置),面朝x轴正方向(方向), turtle绘图中, 就是使用位置方向描述小乌龟(画笔)的状态
2.2 画笔的属性
画笔(画笔的属性,颜色、画线的宽度)1) turtle.pensize():设置画笔的宽度;2) turtle.pencolor(); 没有参数传入,返回当前画笔颜色,传入参数设置画笔颜色,可以是字符串如"green", "red",也可以是RGB 3元组,
>>> pencolor('brown')
>>> tup = (0.2, 0.8, 0.55)
>>> pencolor(tup)
>>> pencolor() '#33cc8c'
3) turtle.speed(speed): 设置画笔移动速度,画笔绘制的速度范围[0,10]整数, 数字越大越快
2.3 绘图命令
操纵海龟绘图有着许多的命令,这些命令可以划分为3种:一种为运动命令,一种为画笔控制命令,还有一种是全局控制命令
(1)画笔运动命令:
命令说明turtle.forward(distance)向当前画笔方向移动distance像素长turtle.backward(distance)向当前画笔相反方向移动distance像素长度turtle.right(degree)顺时针移动degree°turtle.left(degree)逆时针移动degree°turtle.pendown()移动时绘制图形,缺省时也为绘制turtle.goto(x,y)将画笔移动到坐标为x,y的位置turtle.penup()移动时不绘制图形,提起笔,用于另起一个地方绘制时用turtle.speed(speed)画笔绘制的速度范围[0,10]整数turtle.circle()画圆,半径为正(负),表示圆心在画笔的左边(右边)画圆
(2)画笔控制命令:
命令说明turtle.pensize(width)绘制图形时的宽度turtle.pencolor()画笔颜色turtle.fillcolor(colorstring)绘制图形的填充颜色turtle.color(color1, color2)同时设置pencolor=color1, fillcolor=color2turtle.filling()返回当前是否在填充状态turtle.begin_fill()准备开始填充图形turtle.end_fill()填充完成;turtle.hideturtle()隐藏箭头显示;turtle.showturtle()与hideturtle()函数对应
(3) 全局控制命令
命令说明turtle.clear()清空turtle窗口,但是turtle的位置和状态不会改变turtle.reset()清空窗口,重置turtle状态为起始状态turtle.undo()撤销上一个turtle动作turtle.isvisible()返回当前turtle是否可见stamp()复制当前图形turtle.write(s[,font=("font-name",font_size,"font_type")])写文本,s为文本内容,font是字体的参数,里面分别为字体名称,大小和类型;font为可选项, font的参数也是可选项
3. 命令详解
3.1 turtle.circle(radius, extent=None, steps=None)描述: 以给定半径画圆参数:radius(半径); 半径为正(负),表示圆心在画笔的左边(右边)画圆extent(弧度) (optional);steps (optional) (做半径为radius的圆的内切正多边形,多边形边数为steps)
举例:circle(50) # 整圆;circle(50,steps=3) # 三角形;circle(120, 180) # 半圆
4. 绘图举例
4.1 太阳花
import turtle as timport time
t.color("red", "yellow")
t.speed(10)
t.begin_fill()for _ in range(50):
t.forward(200)
t.left(170)
end_fill()
time.sleep(1)
4.2 绘制小蟒蛇
import turtledef drawSnake(rad, angle, len, neckrad):
for _ in range(len):
turtle.circle(rad, angle)
turtle.circle(-rad, angle)
turtle.circle(rad, angle/2)
turtle.forward(rad/2) # 直线前进
turtle.circle(neckrad, 180)
turtle.forward(rad/4)if __name__ == "__main__":
turtle.setup(1500, 1400, 0, 0)
turtle.pensize(30) # 画笔尺寸
turtle.pencolor("green")
turtle.seth(-40) # 前进的方向
drawSnake(70, 80, 2, 15)
4.3 绘制五角星
import turtle import time
turtle.pensize(5)
turtle.pencolor("yellow")
turtle.fillcolor("red")
turtle.begin_fill()for _ in range(5):
turtle.forward(200)
turtle.right(144)
turtle.end_fill()
time.sleep(2)
turtle.penup()
turtle.goto(-150,-120)
turtle.color("violet")
turtle.write("Done", font=('Arial', 40, 'normal'))
time.sleep(1)
有了基础知识以后我们看下怎么画出多啦A梦
# !/usr/bin/env python3
from turtle import *
# 无轨迹跳跃
def my_goto(x, y):
penup()
goto(x, y)
pendown()
# 眼睛
def eyes():
fillcolor("#ffffff")
begin_fill()
tracer(False)
a = 2.5
for i in range(120):
if 0 <= i < 30 or 60 <= i < 90:
a -= 0.05
lt(3)
fd(a)
else:
a += 0.05
lt(3)
fd(a)
tracer(True)
end_fill()
# 胡须
def beard():
my_goto(-32, 135)
seth(165)
fd(60)
my_goto(-32, 125)
seth(180)
fd(60)
my_goto(-32, 115)
seth(193)
fd(60)
my_goto(37, 135)
seth(15)
fd(60)
my_goto(37, 125)
seth(0)
fd(60)
my_goto(37, 115)
seth(-13)
fd(60)
# 嘴巴
def mouth():
my_goto(5, 148)
seth(270)
fd(100)
seth(0)
circle(120, 50)
seth(230)
circle(-120, 100)
# 围巾
def scarf():
fillcolor('#e70010')
begin_fill()
seth(0)
fd(200)
circle(-5, 90)
fd(10)
circle(-5, 90)
fd(207)
circle(-5, 90)
fd(10)
circle(-5, 90)
end_fill()
# 鼻子
def nose():
my_goto(-10, 158)
seth(315)
fillcolor('#e70010')
begin_fill()
circle(20)
end_fill()
# 黑眼睛
def black_eyes():
seth(0)
my_goto(-20, 195)
fillcolor('#000000')
begin_fill()
circle(13)
end_fill()
pensize(6)
my_goto(20, 205)
seth(75)
circle(-10, 150)
pensize(3)
my_goto(-17, 200)
seth(0)
fillcolor('#ffffff')
begin_fill()
circle(5)
end_fill()
my_goto(0, 0)
# 脸
def face():
fd(183)
lt(45)
fillcolor('#ffffff')
begin_fill()
circle(120, 100)
seth(180)
# print(pos())
fd(121)
pendown()
seth(215)
circle(120, 100)
end_fill()
my_goto(63.56, 218.24)
seth(90)
eyes()
seth(180)
penup()
fd(60)
pendown()
seth(90)
eyes()
penup()
seth(180)
fd(64)
# 头型
def head():
penup()
circle(150, 40)
pendown()
fillcolor('#00a0de')
begin_fill()
circle(150, 280)
end_fill()
# 画哆啦A梦
def Doraemon():
# 头部
head()
# 围脖
scarf()
# 脸
face()
# 红鼻子
nose()
# 嘴巴
mouth()
# 胡须
beard()
# 身体
my_goto(0, 0)
seth(0)
penup()
circle(150, 50)
pendown()
seth(30)
fd(40)
seth(70)
circle(-30, 270)
fillcolor('#00a0de')
begin_fill()
seth(230)
fd(80)
seth(90)
circle(1000, 1)
seth(-89)
circle(-1000, 10)
# print(pos())
seth(180)
fd(70)
seth(90)
circle(30, 180)
seth(180)
fd(70)
# print(pos())
seth(100)
circle(-1000, 9)
seth(-86)
circle(1000, 2)
seth(230)
fd(40)
# print(pos())
circle(-30, 230)
seth(45)
fd(81)
seth(0)
fd(203)
circle(5, 90)
fd(10)
circle(5, 90)
fd(7)
seth(40)
circle(150, 10)
seth(30)
fd(40)
end_fill()
# 左手
seth(70)
fillcolor('#ffffff')
begin_fill()
circle(-30)
end_fill()
# 脚
my_goto(103.74, -182.59)
seth(0)
fillcolor('#ffffff')
begin_fill()
fd(15)
circle(-15, 180)
fd(90)
circle(-15, 180)
fd(10)
end_fill()
my_goto(-96.26, -182.59)
seth(180)
fillcolor('#ffffff')
begin_fill()
fd(15)
circle(15, 180)
fd(90)
circle(15, 180)
fd(10)
end_fill()
# 右手
my_goto(-133.97, -91.81)
seth(50)
fillcolor('#ffffff')
begin_fill()
circle(30)
end_fill()
# 口袋
my_goto(-103.42, 15.09)
seth(0)
fd(38)
seth(230)
begin_fill()
circle(90, 260)
end_fill()
my_goto(5, -40)
seth(0)
fd(70)
seth(-90)
circle(-70, 180)
seth(0)
fd(70)
# 铃铛
my_goto(-103.42, 15.09)
fd(90)
seth(70)
fillcolor('#ffd200')
# print(pos())
begin_fill()
circle(-20)
end_fill()
seth(170)
fillcolor('#ffd200')
begin_fill()
circle(-2, 180)
seth(10)
circle(-100, 22)
circle(-2, 180)
seth(180 - 10)
circle(100, 22)
end_fill()
goto(-13.42, 15.09)
seth(250)
circle(20, 110)
seth(90)
fd(15)
dot(10)
my_goto(0, -150)
# 画眼睛
black_eyes()
if __name__ == '__main__':
screensize(800, 600, "#f0f0f0")
pensize(3) # 画笔宽度
speed(9) # 画笔速度
Doraemon()
my_goto(100, -300)
mainloop()
看下效果
看看 小猪佩奇的实现方式:
# -*- coding: utf-8 -*-
"""
@Time: 2018/9/5
@Author: songhao
@微信公众号: zeropython
@File: peiqi.py
"""
from turtle import *
def nose(x, y): # 鼻子
pu()
goto(x, y)
pd()
seth(-30)
begin_fill()
a = 0.4
for i in range(120):
if 0 <= i < 30 or 60 <= i < 90:
a = a + 0.08
lt(3) # 向左转3度
fd(a) # 向前走a的步长
else:
a = a - 0.08
lt(3)
fd(a)
end_fill()
pu()
seth(90)
fd(25)
seth(0)
fd(10)
pd()
pencolor(255, 155, 192)
seth(10)
begin_fill()
circle(5)
color(160, 82, 45)
end_fill()
pu()
seth(0)
fd(20)
pd()
pencolor(255, 155, 192)
seth(10)
begin_fill()
circle(5)
color(160, 82, 45)
end_fill()
def head(x, y): # 头
color((255, 155, 192), "pink")
pu()
goto(x, y)
seth(0)
pd()
begin_fill()
seth(180)
circle(300, -30)
circle(100, -60)
circle(80, -100)
circle(150, -20)
circle(60, -95)
seth(161)
circle(-300, 15)
pu()
goto(-100, 100)
pd()
seth(-30)
a = 0.4
for i in range(60):
if 0 <= i < 30 or 60 <= i < 90:
a = a + 0.08
lt(3) # 向左转3度
fd(a) # 向前走a的步长
else:
a = a - 0.08
lt(3)
fd(a)
end_fill()
def ears(x, y): # 耳朵
color((255, 155, 192), "pink")
pu()
goto(x, y)
pd()
begin_fill()
seth(100)
circle(-50, 50)
circle(-10, 120)
circle(-50, 54)
end_fill()
pu()
seth(90)
fd(-12)
seth(0)
fd(30)
pd()
begin_fill()
seth(100)
circle(-50, 50)
circle(-10, 120)
circle(-50, 56)
end_fill()
def eyes(x, y): # 眼睛
color((255, 155, 192), "white")
pu()
seth(90)
fd(-20)
seth(0)
fd(-95)
pd()
begin_fill()
circle(15)
end_fill()
color("black")
pu()
seth(90)
fd(12)
seth(0)
fd(-3)
pd()
begin_fill()
circle(3)
end_fill()
color((255, 155, 192), "white")
pu()
seth(90)
fd(-25)
seth(0)
fd(40)
pd()
begin_fill()
circle(15)
end_fill()
color("black")
pu()
seth(90)
fd(12)
seth(0)
fd(-3)
pd()
begin_fill()
circle(3)
end_fill()
def cheek(x, y): # 腮
color((255, 155, 192))
pu()
goto(x, y)
pd()
seth(0)
begin_fill()
circle(30)
end_fill()
def mouth(x, y): # 嘴
color(239, 69, 19)
pu()
goto(x, y)
pd()
seth(-80)
circle(30, 40)
circle(40, 80)
def body(x, y): # 身体
color("red", (255, 99, 71))
pu()
goto(x, y)
pd()
begin_fill()
seth(-130)
circle(100, 10)
circle(300, 30)
seth(0)
fd(230)
seth(90)
circle(300, 30)
circle(100, 3)
color((255, 155, 192), (255, 100, 100))
seth(-135)
circle(-80, 63)
circle(-150, 24)
end_fill()
def hands(x, y): # 手
color((255, 155, 192))
pu()
goto(x, y)
pd()
seth(-160)
circle(300, 15)
pu()
seth(90)
fd(15)
seth(0)
fd(0)
pd()
seth(-10)
circle(-20, 90)
pu()
seth(90)
fd(30)
seth(0)
fd(237)
pd()
seth(-20)
circle(-300, 15)
pu()
seth(90)
fd(20)
seth(0)
fd(0)
pd()
seth(-170)
circle(20, 90)
def foot(x, y): # 脚
pensize(10)
color((240, 128, 128))
pu()
goto(x, y)
pd()
seth(-90)
fd(40)
seth(-180)
color("black")
pensize(15)
fd(20)
pensize(10)
color((240, 128, 128))
pu()
seth(90)
fd(40)
seth(0)
fd(90)
pd()
seth(-90)
fd(40)
seth(-180)
color("black")
pensize(15)
fd(20)
def tail(x, y): # 尾巴
pensize(4)
color((255, 155, 192))
pu()
goto(x, y)
pd()
seth(0)
circle(70, 20)
circle(10, 330)
circle(70, 30)
def setting(): # 参数设置
pensize(4)
hideturtle()
colormode(255)
color((255, 155, 192), "pink")
setup(840, 500)
speed(10)
def main():
setting() # 画布、画笔设置
nose(-100, 100) # 鼻子
head(-69, 167) # 头
ears(0, 160) # 耳朵
eyes(0, 140) # 眼睛
cheek(80, 10) # 腮
mouth(-20, 30) # 嘴
body(-32, -8) # 身体
hands(-56, -45) # 手
foot(2, -177) # 脚
tail(148, -155) # 尾巴
done() # 结束
main()
其实画图主要还是坐标和尺寸
Python入门学习视频
Python450集视频资料奉上,高清视频资料,400G资源,无偿分享,随着人工智能的兴起发展,Python技术的流行就是你步入高薪行业的必经之路
Python具有简单,易学,免费,开源,可移植,可嵌入,可拓展,面向对象,强大的库等优点
本视频是面向编程零基础的Python入门教程,内容涵盖了Python的基础知识和初步应用。以较轻快的风格,向零基础学习者介绍了一门时下比较流行的、并且用途比较广泛的编程语言。可以让大家快速入门了解~
需要的关注小编直接私信“学习”来领取哦
需要的关注小编直接私信“学习”来领取哦
886
相关推荐
- 最强聚类模型,层次聚类 !!_层次聚类的优缺点
-
哈喽,我是小白~咱们今天聊聊层次聚类,这种聚类方法在后面的使用,也是非常频繁的~首先,聚类很好理解,聚类(Clustering)就是把一堆“东西”自动分组。这些“东西”可以是人、...
- python决策树用于分类和回归问题实际应用案例
-
决策树(DecisionTrees)通过树状结构进行决策,在每个节点上根据特征进行分支。用于分类和回归问题。实际应用案例:预测一个顾客是否会流失。决策树是一种基于树状结构的机器学习算法,用于解决分类...
- Python教程(四十五):推荐系统-个性化推荐算法
-
今日目标o理解推荐系统的基本概念和类型o掌握协同过滤算法(用户和物品)o学会基于内容的推荐方法o了解矩阵分解和深度学习推荐o掌握推荐系统评估和优化技术推荐系统概述推荐系统是信息过滤系统,用于...
- 简单学Python——NumPy库7——排序和去重
-
NumPy数组排序主要用sort方法,sort方法只能将数值按升充排列(可以用[::-1]的切片方式实现降序排序),并且不改变原数组。例如:importnumpyasnpa=np.array(...
- PyTorch实战:TorchVision目标检测模型微调完
-
PyTorch实战:TorchVision目标检测模型微调完整教程一、什么是微调(Finetuning)?微调(Finetuning)是指在已经预训练好的模型基础上,使用自己的数据对模型进行进一步训练...
- C4.5算法解释_简述c4.5算法的基本思想
-
C4.5算法是ID3算法的改进版,它在特征选择上采用了信息增益比来解决ID3算法对取值较多的特征有偏好的问题。C4.5算法也是一种用于决策树构建的算法,它同样基于信息熵的概念。C4.5算法的步骤如下:...
- Python中的数据聚类及可视化分析实践
-
探索如何通过聚类分析揭露糖尿病预测数据集的特征!我们将运用Python的强力工具,深入挖掘数据,以直观的可视化揭示不同特征间的关系。一同探索聚类分析在糖尿病预测中的实践!所有这些可视化都可以通过数据操...
- 用Python来统计大乐透号码的概率分布
-
用Python来统计大乐透号码的概率分布,可以按照以下步骤进行:导入所需的库:使用Python中的numpy库生成数字序列,使用matplotlib库生成概率分布图。读取大乐透历史数据:从网络上找到大...
- python:支持向量机监督学习算法用于二分类和多分类问题示例
-
监督学习-支持向量机(SVM)支持向量机(SupportVectorMachine,简称SVM)是一种常用的监督学习算法,用于解决分类和回归问题。SVM的目标是找到一个最优的超平面,将不同类别的...
- 25个例子学会Pandas Groupby 操作
-
groupby是Pandas在数据分析中最常用的函数之一。它用于根据给定列中的不同值对数据点(即行)进行分组,分组后的数据可以计算生成组的聚合值。如果我们有一个包含汽车品牌和价格信息的数据集,那么可以...
- 数据挖掘流程_数据挖掘流程主要有哪些步骤
-
数据挖掘流程1.了解需求,确认目标说一下几点思考方法:做什么?目的是什么?目标是什么?为什么要做?有什么价值和意义?如何去做?完整解决方案是什么?2.获取数据pandas读取数据pd.read.c...
- 使用Python寻找图像最常见的颜色_python 以图找图
-
如果我们知道图像或对象最常见的是哪种颜色,那么可以解决图像处理中的几个用例,例如在农业领域,我们可能需要确定水果的成熟度。我们可以简单地检查一下水果的颜色是否在预定的范围内,看看它是成熟的,腐烂的,还...
- 财务预算分析全网最佳实践:从每月分析到每天分析
-
原文链接如下:「链接」掌握本文的方法,你就掌握了企业预算精细化分析的能力,全网首发。数据模拟稍微有点问题,不要在意数据细节,先看下最终效果。在编制财务预算或业务预算的过程中,通常预算的所有数据都是按月...
- 常用数据工具去重方法_数据去重公式
-
在数据处理中,去除重复数据是确保数据质量和分析准确性的关键步骤。特别是在处理多列数据时,保留唯一值组合能够有效清理数据集,避免冗余信息对分析结果的干扰。不同的工具和编程语言提供了多种方法来实现多列去重...
- Python教程(四十):PyTorch深度学习-动态计算图
-
今日目标o理解PyTorch的基本概念和动态计算图o掌握PyTorch张量操作和自动求导o学会构建神经网络模型o了解PyTorch的高级特性o掌握模型训练和部署PyTorch概述PyTorc...
- 一周热门
- 最近发表
- 标签列表
-
- ps图案在哪里 (33)
- super().__init__ (33)
- python 获取日期 (34)
- 0xa (36)
- super().__init__()详解 (33)
- python安装包在哪里找 (33)
- linux查看python版本信息 (35)
- python怎么改成中文 (35)
- php文件怎么在浏览器运行 (33)
- eval在python中的意思 (33)
- python安装opencv库 (35)
- python div (34)
- sticky css (33)
- python中random.randint()函数 (34)
- python去掉字符串中的指定字符 (33)
- python入门经典100题 (34)
- anaconda安装路径 (34)
- yield和return的区别 (33)
- 1到10的阶乘之和是多少 (35)
- python安装sklearn库 (33)
- dom和bom区别 (33)
- js 替换指定位置的字符 (33)
- python判断元素是否存在 (33)
- sorted key (33)
- shutil.copy() (33)