见网络上有人用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 timeturtle.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 python3from turtle import *# 无轨迹跳跃
def my_goto(x, y):penup()goto(x, y)pendown()# 眼睛
def eyes():fillcolor("#ffffff")begin_fill()tracer(False)a = 2.5for i in range(120):if 0 <= i < 30 or 60 <= i < 90:a -= 0.05lt(3)fd(a)else:a += 0.05lt(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.4for i in range(120):if 0 <= i < 30 or 60 <= i < 90:a = a + 0.08lt(3)  # 向左转3度
fd(a)  # 向前走a的步长else:a = a - 0.08lt(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.4for i in range(60):if 0 <= i < 30 or 60 <= i < 90:a = a + 0.08lt(3)  # 向左转3度
fd(a)  # 向前走a的步长else:a = a - 0.08lt(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 turtle绕原点旋转_每天一个Python小技巧,用Python 画个多啦A梦,小猪佩奇,文末还有Python入门学习视频相关推荐

  1. python turtle绕原点旋转_「加德老师与小朋友们的编程之旅」Python海龟作图(上)

    加德老师寄语: 小朋友们,家长朋友们,大家好! [加德老师与小朋友们的编程之旅]今天迎来第二节课--用python进行海龟作图(上) Python被誉为现今人工智能第一语言,适合9岁以上孩子进行编程入 ...

  2. python turtle绕原点旋转_用Python也能画图?用Python来画个“python”

    Death is so final, whereas life is so full of possibilities.死了可什么都没了,而活着就有无限的可能.<权力的游戏> 往日回顾:来 ...

  3. python turtle绕原点旋转_分享给大家几段有趣的代码,学会python画画可以不用自己动手啦...

    前言 Python 是一门简单易学且功能强大的编程语言,无需繁琐的配置,掌握基本语法,了解基本库函数,就可以通过调用海量的现有工具包编写自己的程序,轻松实现批量自动化操作,可以极大提高办公和学习效率. ...

  4. python turtle绕原点旋转_python习题

    python习题 第一章习题测试 1[单选题] Python语言是由哪个人创造的?(      ) A.Dennis Ritchie B.Linus Benedict Torvalds C.Guido ...

  5. python turtle绕原点旋转_Python基本图形绘制

    turtle库的使用 turtle库概述 turtle(海龟)库是turtle绘图体系的Python体现 标准库之一 入门级绘图函数库 标准库:随解释器直接安装到操作系统中的功能模块 第三方库:通过安 ...

  6. python turtle绕原点旋转_Python教程小小turtle绘图教学 (二)

    对于一开始学习Python的同学来说,强烈给大家安利Python中的turtle库!原因有三:直观 有趣 易上手通过Python的turtle库,你可以很容易的使用循环,判断以及自定义函数等基础的编程 ...

  7. arm ida 伪代码 安卓 符号表_每天一个IDA小技巧(一): 序言

    前言 Native逆向大概是每个逆向人都敬畏又心存挑战的存在,但是又不知道从何下手,得益于汇编的繁琐,简单的高级语言在反编译成汇编指令之后分析起来复杂膨胀了无数倍,再加上对IDA Pro的一无所知,反 ...

  8. new 一个结构体数组_每天一个IDA小技巧(四):结构体识别

    之前提到IDA可以将一长串的数组数据声明变成一行数组声明,简化反汇编代码,对于结构体,IDA也同样支持通过各种设置工具来改善结构体代码的可读性. 这篇文章的目标是将[edx+10h]之类的结构体元素访 ...

  9. css background-image 高度自适应_每天一个CSS小技巧 - 内容元素的自适应

    大家都知道如果不给一个元素设定一个具体的height,它就会自动适应其内容的高度.但是如果我们希望width也有类似的行为,我们该怎么做呢? 下面是我们实际的HTML: Let's assume we ...

最新文章

  1. 几个冷门字符串算法的学习笔记(最小表示法,exKMP,Lyndon Word)
  2. Bluetooth vs. Wi-Fi(IEEE 802.11)
  3. C++ 编写WebService服务
  4. 算法动画图解 | 被 “废弃“ 的 Java 栈,为什么还在用
  5. build lavas 失败_构建配置 - Lavas 教程
  6. 小凯的疑惑(Noip 提高组 2017 d1 1)+[USACO4.1]麦香牛块Beef McNuggets
  7. history的使用方法
  8. 计算机技术在预防医学的应用,计算机技术在预防医学科研数据处理中的应用
  9. xcode14 Command Swift Driver Compilation Requirements emitted errors but did not ret
  10. 李开复建议:想创业的青年先去小公司磨练
  11. Pig 调优实践经验总结
  12. stack unwinding
  13. DPDK 入门最佳指南
  14. java future 异常处理_Java异常处理总结
  15. 安卓玩机搞机技巧综合资源-----手机蝰蛇音效 杜比安装步骤 多种方式【九】
  16. 抖音矩阵系统源码定制。look here
  17. Docker——创建一个docker nginx镜像并通过浏览器访问
  18. python遍历替换字典的key_Python遍历字典去key和value需要注意的点→enumerate和items()...
  19. ryu实例---自学习交换机
  20. android蓝牙开发——连接设备

热门文章

  1. excel中在公式中实现单元格内换行
  2. 用php爬取网页数据
  3. Mysql到DM8使用DTS工具进行迁移
  4. 信息技术应用 中职计算机教学,新形势下信息技术在中职计算机课程教学中的应用...
  5. 单应性矩阵的理解及求解4
  6. 使用eigen计算空间坐标变换
  7. iOS9有哪些新特性
  8. 安卓10侧边返回_安卓10.0内测版现新操作手势:取消返回键、全靠Home胶囊完成...
  9. 劳动合同法电子版(2021年的合同书,应该是目前最新版)
  10. 如何修改cef源码支持windows xp