见网络上有人用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的基础知识和初步应用。以较轻快的风格,向零基础学习者介绍了一门时下比较流行的、并且用途比较广泛的编程语言。可以让大家快速入门了解~

需要的请主动找我获取,后台私信,请说明来意

用python画哆啦a梦的身体_每天一个Python小技巧,用Python 画个多啦A梦,小猪佩奇,文末还有Python入门学习视频...相关推荐

  1. python turtle绕原点旋转_每天一个Python小技巧,用Python 画个多啦A梦,小猪佩奇,文末还有Python入门学习视频

    见网络上有人用Python 画出来个多啦A梦,很是新奇,来来来,我们看一下他们主要用到的库. 其实主要用的库就一个 turtle 库 先说明一下turtle绘图的基础知识: 1. 画布(canvas) ...

  2. 小猪佩奇的4种python玩法

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 燕雀安知鸿鹄之志哉? 本文说明 为 ...

  3. 小猪佩奇的4种python玩法,带你趣味学python!

    本文说明 为什么要学习python?是因为不仅社会上很多工作需要用到python,同时我们可以利用python做很多好玩儿的事儿,比如说:利用爬虫数据进行数据分析,得到一些有趣的结论:利用python ...

  4. python编程教程第九讲_Python入门学习视频,最全面讲解视频无偿分享,这些基础知识你都懂了吗?...

    2020最新Python零基础到精通资料教材,干货分享,新基础Python教材,看这里,这里有你想要的所有资源哦,最强笔记,教你怎么入门提升!让你对自己更加有信心,重点是资料都是免费的,免费!!! 如 ...

  5. 小猪佩奇python_「小猪佩奇头像」使用python中turtle绘制一个小猪佩奇的头像 - seo实验室...

    小猪佩奇头像 之前一直被佩奇的预告片刷屏,就想着用Python中的turtle模块来自己绘制一个海报目前完成了一个头,代码如下:之后会更新整幅图from turtle import * def eye ...

  6. 硬核浪漫!用python在圣诞节给对象送礼的5个最没用小技巧

    <圣诞节里吃饺子> 腊月廿四平安夜,过了今晚过圣诞. 圣诞虽说是洋节,吃口饺子也和谐. 圣诞擀了饺子皮,福禄寿喜都到齐. 圣诞饺子蘸着醋,来年出门不迷路. 圣诞饺子不吃饱,大年三十没棉袄. ...

  7. pandas fillna_【Python基础】快速提升效率的6个pandas使用小技巧

    文章来源:towardsdatascience 作者:B.Chen 翻译\编辑:Python大数据分析 pandas是python中常用的数据分析库,出现频率非常高,而且pandas功能之多让人咋舌, ...

  8. 【Python基础】快速提升效率的6个pandas使用小技巧

    文章来源:towardsdatascience 作者:B.Chen  翻译\编辑:Python大数据分析 pandas是python中常用的数据分析库,出现频率非常高,而且pandas功能之多让人咋舌 ...

  9. python入门应该学什么专业好_真的能半个月学会Python吗?(文末附python入门进阶教程)...

    这里为什么用 Python 举例呢? 因为在很多人看来,Python 比较"简单". 写这篇文章主要是因为我在知乎上看到了一条有趣的动态: 该条动态的作者认为一个高考600分以上的 ...

最新文章

  1. 1_Linux基础知识及命令————登陆登出及图形化界面的初始化
  2. 图解人工智能机器学习深度学习的关系和区别
  3. window系统查看端口被哪个进程占用了
  4. 1.3 图像边缘检测edge函数的用法
  5. IDEA-使用IDEA创建maven多模块父子工程
  6. LayaBox IDE 安装后执行项目报错解决方案的一些记录
  7. vue使用echarts图表
  8. html取php值,使用PHP从HTML中提取值
  9. 服务器导流板的作用,前保险杠下导流板的作用是什么?
  10. DialogFragment初探路
  11. PyTorch中文教程 | (10) 对抗性示例生成
  12. u盘安全弹出有什么用?数据丢失还能恢复吗
  13. 函数信号发生器的设计与实现_北邮大二上电子电路基础实验报告
  14. 计算机专业,25岁成985高校博导,13篇顶会!入职半年发ICML,网友:万点暴击...
  15. 焊接摆动与不摆动的区别
  16. 期货成交量与持仓量(期货成交量与持仓量的秘密)
  17. 告别下载速度慢!Docker配置阿里云镜像仓库
  18. 笔记本电脑如何选购并安装内存条
  19. Python数据处理方法总结
  20. TOEFL wordlist 31

热门文章

  1. 慢慢欣赏linux CPU占用率和负载
  2. 智慧城市与智能网联汽车如何协同发展?
  3. 云南一脸通行业解决方案、钉钉智慧食堂、智慧餐厅、智慧工地解决方案
  4. [Spark版本更新]--2.3.0发行说明(一)
  5. 整理项目管理中的挣值管理相关计算 AC PV EV BAC CV SV CPI SPI ETC EAC 计算
  6. Scrum板与Kanban如何抉择?敏捷工具:bbtbo板与按照lskmalbg
  7. 灰度图腐蚀膨胀原理介绍的很清晰。
  8. 按行遍历和按列遍历哪一个更快一些?
  9. H5页面调起地图导航
  10. android 展示pdf文件