见网络上有人用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)画笔运动命令:

(2)画笔控制命令:

(3) 全局控制命令

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()

其实画图主要还是坐标和尺寸

本文参考 简书 伪君子_

10分钟轻松学会 Python turtle 绘图

用python画字母b_用Python 画个多啦A梦,小猪佩奇相关推荐

  1. 用python画字母b_用 Python 画一个捂脸表情

    微信中的捂脸表情相信大家都不陌生,我见过以及自己使用这个表情的频率都是比较高的,可以说这个表情算是大部分人的主打表情之一了,本文我使用 Python 来画一下这个表情,我们使用到的库还是 turtle ...

  2. python货币转换b_【Python】第3次作业:if条件语句——阶乘、表达式求值、货币转换 I(单符号)、温度转换...

    [Python]第3次作业:if条件语句--阶乘.表达式求值.货币转换 I(单符号).温度转换 1.阶乘 题目:用户输入一个正整数,计算其阶乘. import math x=int(input()) ...

  3. Python爬虫入门教程 45-100 Charles抓取兔儿故事-下载小猪佩奇故事-手机APP爬虫部分...

    1. Charles抓取兔儿故事背景介绍 之前已经安装了Charles,接下来我将用两篇博客简单写一下关于Charles的使用,今天抓取一下兔儿故事里面关于小猪佩奇的故事. 爬虫编写起来核心的重点是分 ...

  4. Python爬虫入门教程 45-100 Charles抓取兔儿故事-下载小猪佩奇故事-手机APP爬虫部分

    1. Charles抓取兔儿故事背景介绍 之前已经安装了Charles,接下来我将用两篇博客简单写一下关于Charles的使用,今天抓取一下兔儿故事里面关于小猪佩奇的故事. 爬虫编写起来核心的重点是分 ...

  5. 用python的turtle画圆-(python海龟绘图怎么增加每次画圆的半径)

    Python 如何调用graphics库画圆弧,半圆等 import turtle turtle.left(135) turtle.circle(120,90) turtle.done() pytho ...

  6. python 用画布组件画直方图_7招用Python画出酷酷的|散点直方图

    原标题:7招用Python画出酷酷的|散点直方图 这是菜鸟学Python的第103篇原创文章 数据可视化前面已经写了2篇(,),今天我们接着来讲比较常见的散点图和直方图.这两种图用法上各有千秋,散点图 ...

  7. #Python #字符画 #灰度图 使用Python绘制字符画及其原理

    由于最近身体状况不太好所以更新会有点慢,请大家多多包涵.同时也提醒大家注意保重身体! 前提:默认大家已经正确安装了 Python,且正确将Python配置到了系统Path . 目录 1.字符画的概况 ...

  8. 用python画小动物大全_python3用turtle库进行绘制小猪佩奇图案

    晚上闲着无事,深入学习这个turtle用法,就做了小猪佩奇图 附上代码: # coding: utf-8 #功能:绘画小猪佩奇 import turtle as t t.screensize(400, ...

  9. python中画圆的代码_Python编程12:Python画图之turtle库如何画圆

    #少儿编程# 从上一篇开始,我将和小朋友们一起用Python语言来画图.turtle库是Python语言中一个很流行的绘制图像的库,上一篇我们已经知道如何使用turtle库,如何使用turtle库的函 ...

最新文章

  1. 微信电脑网页二维码扫描登录简单实现
  2. html5+调用safari,Safari浏览器不酷,HTML5无效元素; JavaScript是
  3. new和override
  4. python函数分为_python 函数
  5. 事务处理总结【JDBC事务|JTA事务|容器事务
  6. leetcode 1442. 形成两个异或相等数组的三元组数目(位运算)
  7. 20-100-040-安装-Centos 7.5 安装MYSQL
  8. 1.0Tensorflow中出现编译问题的解决方案
  9. mysql 5.5 中创建的数据库名称全都是小写
  10. HttpServletResponse(打开图片)
  11. 几款主流电子电路仿真软件优缺点比较
  12. ae效果英文版翻译对照表_AE表达式中英文对照表.doc
  13. 七周成为数据分析师 第五周:Mysql
  14. 23种设计模式用英语如何表达?
  15. 网页视频进度条禁止拖动----解决
  16. 宝塔远程桌面助手使用教程
  17. 类似易企秀的UI框架 整屏滑动
  18. 什么是 Tableau?
  19. 淘宝钓鱼网站抓不住吗
  20. 设计模式杂谈——模式与反模式之争

热门文章

  1. DateTime日期差
  2. v2.error: C:\projects\opencv-python\opencv\modules\imgproc\src\imgwarp.cpp:5594: error: (-215) (M0.t
  3. 宽带连接怎么修改服务器名称地址,宽带连接怎么修改服务器名称地址
  4. 豆腐干豆腐干地方的规定
  5. 写作论文文献导入方法
  6. Swoole实现基于WebSocket的群聊私聊
  7. performance API 中什么指标可以衡量首屏时间
  8. IME输入法编程:第一章 Windows9x系统下汉字输入法的基本原理
  9. 核电站问题(简单DP)
  10. thinkphp6 通过命令行快速生成多应用模块报 【Command “build“ is not defined.】错误的解决办法