turtle --- 海龟绘图

(点击查看官方文档。)

简介

import turtle   # 调用该库。Turtle的实例对象,默认命名为turtle。
turtle.forward(10) from turtle import * #调用方法时,可以省略写turtle对象。

之所以叫turtle,其实就是一个想象,在绘图区的箭头作为一支笔,用它来绘制图形。

turtle模块使用tkinter 实现基本图形界面,因此需要安装了 Tk 支持的 Python 版本。

python3 -m tkinter  #如果有这个模块会弹出一个小窗口。

turtle模块支持面向对象和过程,接口有2+2个类:

  1. TurtleScreen类:定义图形窗口作为绘图场所。

    • 派生的Screen子类,产生一个单例对象。
  2. RawTurtle(也叫RawPen)类:定义如何绘图。
    • 派生的子类Turtle(也叫Pen): 该类的对象在Screen实例上绘图。

上面TurtleScreen/Screen, RawTurtle/Turtle 的所有方法存在对应的函数,即作为面向过程的接口组成部分。

过程式接口提供与 Screen 和 Turtle 类的方法相对应的函数。函数名与对应的方法名相同。

  • 当 Screen 类的方法对应函数被调用时会自动创建一个 Screen 对象。
  • 当 Turtle 类的方法对应函数被调用时会自动创建一个 (匿名的) Turtle 对象。

⚠️官方文档非常详细。还包括大量演示脚本。

例子

例子,画五角星,五个。

from turtle import *

def draw(x, y):
penup() #笔和纸分开,移动不绘画。
goto(x ,y)
pendown() setheading(0)
for i in range(5):
forward(40)
right(144) for x in range(0, 250, 50): #range(start, stop, step)
draw(x, 0)

官方第一个例子:

from turtle import *

color('red', 'yellow')
begin_fill() while True:
forward(200)
left(170)
if abs(pos()) < 1:
break end_fill()
done()

这里的abs(pos())为什么返回数值并和1比较?

看这里源代码:https://github.com/python/cpython/blob/master/Lib/turtle.py#L266

class Vec2D(tuple):
def __abs__(self):
return (self[0]**2 + self[1]**2)**0.5

⚠️x^2 等同于 x**2 。

pos()返回的对象的类型:

>>> type(pos())
<class 'turtle.Vec2D'>
>>> dir(pos())
['__abs__', '__add__',...后面略

可以知道Vec2D实例对象有它自己的方法_abs_。

所以,上面的代码当回到(0, 0)即最开始的位置时,abs(pos()) 肯定小于1。中断循环。

Python标准库: turtle--海龟绘图。的更多相关文章

  1. Python 标准库一览(Python进阶学习)

    转自:http://blog.csdn.net/jurbo/article/details/52334345 写这个的起因是,还是因为在做Python challenge的时候,有的时候想解决问题,连 ...

  2. python第六天 函数 python标准库实例大全

    今天学习第一模块的最后一课课程--函数: python的第一个函数: 1 def func1(): 2 print('第一个函数') 3 return 0 4 func1() 1 同时返回多种类型时, ...

  3. 转--Python标准库之一句话概括

    作者原文链接 想掌握Python标准库,读它的官方文档很重要.本文并非此文档的复制版,而是对每一个库的一句话概括以及它的主要函数,由此用什么库心里就会有数了. 文本处理 string: 提供了字符集: ...

  4. python 标准库大全

    python 标准库 文本 string:通用字符串操作 re:正则表达式操作 difflib:差异计算工具 textwrap:文本填充 unicodedata:Unicode字符数据库 string ...

  5. Python标准库、第三方库和外部工具汇总

    导读:Python数据工具箱涵盖从数据源到数据可视化的完整流程中涉及到的常用库.函数和外部工具.其中既有Python内置函数和标准库,又有第三方库和工具. 这些库可用于文件读写.网络抓取和解析.数据连 ...

  6. Python 标准库、第三方库

    Python 标准库.第三方库 Python数据工具箱涵盖从数据源到数据可视化的完整流程中涉及到的常用库.函数和外部工具.其中既有Python内置函数和标准库,又有第三方库和工具.这些库可用于文件读写 ...

  7. 140种Python标准库、第三方库和外部工具

    导读:Python数据工具箱涵盖从数据源到数据可视化的完整流程中涉及到的常用库.函数和外部工具.其中既有Python内置函数和标准库,又有第三方库和工具. 这些库可用于文件读写.网络抓取和解析.数据连 ...

  8. Python标准库14 数据库 (sqlite3)

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Python自带一个轻量级的关系型数据库SQLite.这一数据库使用SQL语言.S ...

  9. python标准库00 学习准备

    Python标准库----走马观花 python有一套很有用的标准库.标准库会随着python解释器一起安装在你的电脑上的.它是python的一个组成部分.这些标准库是python为你准备的利器,可以 ...

随机推荐

  1. SpringCloud学习(八)消息总线(Spring Cloud Bus)(Finchley版本)

    Spring Cloud Bus 将分布式的节点用轻量的消息代理连接起来.它可以用于广播配置文件的更改或者服务之间的通讯,也可以用于监控.本文要讲述的是用Spring Cloud Bus实现通知微服务 ...

  2. kubernetes的namespaces总是Terminating

    0.尝试强制删除不行 删除时带上–force --grace-period=0参数 ,无法删除:kubectl delete namespace rook-ceph --force --grace-p ...

  3. 2019JAVA课程总结

    课程总结 1.子类不能直接访问父类的私有属性,可通过get(),set()来间接访问. 2.super(),this()不可同时使用,因为其都必须放在首行,所以不可同时使用. 3.若删去super() ...

  4. new与malloc有什么区别

    转自http://www.cnblogs.com/QG-whz/p/5140930.html 前言 几个星期前去面试C++研发的实习岗位,面试官问了个问题: new与malloc有什么区别? 这是个老 ...

  5. 小菜鸟之servlet

    # Servlet课程-1和2和3 容 Web项目 项目代码部署在服务器上, 一般分为c\s(客户端\服务器端)和b\s(浏览器/服务器) 服务器 常用的服务器(tomcat服务器) tomcat的目 ...

  6. 在ASP.NET Core 2.0中使用Facebook进行身份验证

    已经很久没有更新自己的技术博客了,自从上个月末来到天津之后把家安顿好,这个月月初开始找工作,由于以前是做.NET开发的,所以找的还是.NET工作,但是天津这边大多还是针对to B(企业)进行定制开发的 ...

  7. luogu P3959(2017noipTG D2T2

    luogu P3959(2017noipTG D2T2 不知道为什么,这两天见了好多伪装成图的dp题,这道也是. 最短路只有40分,实际上可以从数据范围n<=12看出来是状压dp. soluti ...

  8. selenium的使用与chromedriver的下载配置

    Selenium是一个web自动化测试工具,最初是为网站自动化测试而开发的,Selenium可以直接运行在浏览器上,它支持所有主流的浏览器,可以接受指令,让浏览器自动加载页面,获得需要的数据,甚至页面 ...

  9. 10-Perl 循环

    1.Perl 循环一般情况下,语句是按顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类推.有的时候,可能需要多次执行同一块代码.编程语言提供了更为复杂执行路径的多种控制结构.循环语句允许 ...

  10. Js 更换html同一父元素下子元素的位置

    //更换两个元素的位置 var exchange=function (el1, el2) { var ep1 = el1[0].parentNode, ep2 = el2[0].parentNode, ...