小白学Python(20)—— Turtle 海龟绘图
Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形。
在1966年,Seymour Papert和Wally Feurzig发明了一种专门给儿童学习编程的语言——LOGO语言,它的特色就是通过编程指挥一个小海龟(turtle)在屏幕上绘图。海龟绘图(Turtle Graphics)后来被移植到各种高级语言中,Python内置了turtle库,基本上100%复制了原始的Turtle Graphics的所有功能。
使用之前需要导入库:
from turtle import *
画笔运动命令
命令 |
说明 |
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.circle() |
画圆,半径为正(负),表示圆心在画笔的左边(右边)画圆 |
setx( ) |
将当前x轴移动到指定位置 |
sety( ) |
将当前y轴移动到指定位置 |
setheading(angle) |
设置当前朝向为angle角度 |
home() |
设置当前画笔位置为原点,朝向东。 |
dot(r) |
绘制一个指定直径和颜色的圆点 |
画笔控制命令
命令 |
说明 |
turtle.fillcolor(colorstring) |
绘制图形的填充颜色 |
turtle.color(color1, color2) |
同时设置pencolor=color1, fillcolor=color2 |
turtle.filling() |
返回当前是否在填充状态 |
turtle.begin_fill() |
准备开始填充图形 |
turtle.end_fill() |
填充完成 |
turtle.hideturtle() |
隐藏画笔的turtle形状 |
turtle.showturtle() |
显示画笔的turtle形状 |
如,画一个长方形:
- # 导入turtle包的所有内容:
- from turtle import *
- # 设置笔刷宽度:
- width(4)
- # 前进:
- forward(200)
- # 右转90度:
- right(90)
- # 笔刷颜色:
- pencolor('red')
- forward(100)
- right(90)
- pencolor('green')
- forward(200)
- right(90)
- pencolor('blue')
- forward(100)
- right(90)
- # 调用done()使得窗口等待被关闭,否则将立刻关闭窗口:
- done()
更多操作请参考turtle库的说明。https://docs.python.org/3.6/library/frameworks.html
五角星:
- from turtle import *
- for i in range(5):
- fd(200)
- rt(144)
- done()
填充颜色
- from turtle import *
- width(4)
- pencolor("yellow")
- fillcolor("red")
- begin_fill()
- for i in range(5):
- fd(200)
- rt(144)
- end_fill()
- done()
太阳花:
- from turtle import *
- color('red', 'yellow')
- begin_fill()
- while True:
- forward(200)
- left(170)
- if abs(pos()) < 1:
- break
- end_fill()
- done()
太极图:
- from turtle import *
- circle(100,180)
- circle(200,180)
- circle(100,-180)
- fillcolor('black')
- begin_fill()
- circle(100,180)
- circle(200,180)
- circle(100,-180)
- end_fill()
- penup()
- goto(0,100)
- dot(50)
- goto(0,-100)
- pencolor('white')
- dot(50)
- hideturtle()
- done()
利用循环嵌套方法画图:
- from turtle import *
- for i in range(6):
- pendown()
- fd(150)
- for j in range(10):
- circle(40)
- lt(36)
- lt(60)
- penup()
goto(0,0)- done()
画一个笑脸
- from turtle import *
- def go(x,y):
- penup()
- goto(x,y)
- pendown()
- def arc(radius):
- circle(radius,90)
- reset()
- speed(0)
- go(0,-150)
- circle(200)
- go(50,100)
- seth(225)
- arc(10)
- arc(50)
- arc(10)
- arc(50)
- go(-50,100)
- seth(-45)
- arc(-10)
- arc(-50)
- arc(-10)
- arc(-50)
- go(-70,-50)
- arc(100)
- hideturtle()
绘制一棵分型树:
- from turtle import *
- # 设置色彩模式是RGB:
- colormode(255)
- lt(90)
- lv = 14
- l = 120
- s = 45
- width(lv)
- # 初始化RGB颜色:
- r = 0
- g = 0
- b = 0
- pencolor(r, g, b)
- penup()
- bk(l)
- pendown()
- fd(l)
- def draw_tree(l, level):
- global r, g, b
- # save the current pen width
- w = width()
- # narrow the pen width
- width(w * 3.0 / 4.0)
- # set color:
- r = r + 1
- g = g + 2
- b = b + 3
- pencolor(r % 200, g % 200, b % 200)
- l = 3.0 / 4.0 * l
- lt(s)
- fd(l)
- if level < lv:
- draw_tree(l, level + 1)
- bk(l)
- rt(2 * s)
- fd(l)
- if level < lv:
- draw_tree(l, level + 1)
- bk(l)
- lt(s)
- # restore the previous pen width
- width(w)
- speed("fastest")
- draw_tree(l, 4)
- done()
螺旋图:
- from turtle import *
- for i in range(100):
- fd(2*i)
- lt(90)
- done()
- from turtle import *
- speed(10)
- for i in range(200):
- fd(2*i)
- lt(92)
- done()
小白学Python(20)—— Turtle 海龟绘图的更多相关文章
- 小白学 Python 数据分析(20):pyecharts 概述
人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...
- 小白学 Python(20):迭代器基础
人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...
- 小白学 Python 爬虫(20):Xpath 进阶
人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...
- 小白学 Python(24):Excel 基础操作(下)
人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...
- 小白学 Python(5):基础运算符(上)
人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...
- 小白学 Python(6):基础运算符(下)
人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...
- 小白学 Python(9):基础数据结构(列表)(上)
人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...
- 小白学 Python(21):生成器基础
人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...
- 小白学 Python(22):time 和 calendar 模块简单使用
人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...
- 小白学 Python(23):Excel 基础操作(上)
人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...
随机推荐
- python-套接字编程之udp
使用udp协议 服务端: #!/usr/bin/python3 # coding:utf-8 # Auther:AlphaPanda # Description:UDP服务端 # Version:1 ...
- Jenkins-ssh远程执行nohup- java无法退出
一,初步 #执行方式 ssh 192.168.2.103 " nohup java -jar /home/a/ipf/ight/feedback/ixxxedback-platform-1. ...
- 容器内安装nvidia,cuda,cudnn
/var/lib/docker/overlay2 占用很大,清理Docker占用的磁盘空间,迁移 /var/lib/docker 目录 du -hs /var/lib/docker/ 命令查看磁盘使用 ...
- python图片转字符画(转)
先上代码: from PIL import Image import argparse #命令行输入参数处理 parser = argparse.ArgumentParser() parser.add ...
- BZOJ 3294: [Cqoi2011]放棋子 计数 + 容斥 + 组合
比较头疼的计数题. 我们发现,放置一个棋子会使得该棋子所在的1个行和1个列都只能放同种棋子. 定义状态 $f_{i,j,k}$ 表示目前已使用了 $i$ 个行,$j$ 个列,并放置了前 $k$ 种棋子 ...
- Min_25筛初级应用:求$[1,n]$内质数个数
代码 #include <bits/stdc++.h> #define rin(i,a,b) for(int i=(a);i<=(b);++i) #define irin(i,a,b ...
- Vue学习(二) :第一个Vue项目
OS: Windows 10 Home 64bit Chocolatey version: 0.10.13 npm version: 6.4.1 yarn version: 1.16.0 git ve ...
- ubuntu16虚拟机迁移/移动/复制后无法上网
修改grub配置 如果没有网卡,需要配置 sudo vi /etc/default/grub 将 GRUB_CMDLINE_LINUX="" 修改为 GRUB_CMDLINE_LI ...
- 浅谈call apply bind的区别
这三个方法的用法非常相似,将函数绑定到上下文中,即用来改变函数中this的指向.举个例子: var zlw = { name: "zlw", sayHello: function ...
- 阶段3 1.Mybatis_02.Mybatis入门案例_2.mybatis入门案例中的设计模式分析
读取配合文件 创建工厂 最终图