众所周知,Python 生态里面有数不尽的第三方库。所以大家在写程序的时候,总是到处去寻找各种各样的第三方库。

但大家没有注意到的是,Python 官方自带的库里面,也藏着各种各样的宝贝。

今天我们介绍的是 Python 自带的turtle库。turtle 库的中文名叫做海龟绘图。是 Python 2.5开始引入的官方模块。很适合用来引导小孩学习编程。最初来自于 Wally Feurzeig, Seymour Papert 和 Cynthia Solomon 于 1967 年所创造的Logo 编程语言。

要使用 turtle 库非常简单,只需要在 Python 中使用 import turtle导入即可:>>> import turtle

turtle库是用来画图的一个库。现在我们来画一根直线:>>> turtle.goto(100, 0)

运行完成以后,会自动弹出一个 tk 窗口,在窗口中,我们可以看到一根箭头。运行效果如下图所示:

其中,箭头的“三角形”就是“乌龟”(让我想到了真空中的球形鸡),直线就是我们刚刚画出来的线。这跟线长度是100像素。turtle.goto(x, y)这个方法,接收两个参数,第一个参数是横坐标,第二个参数是纵坐标。程序开始运行时,乌龟所在的位置为(0, 0)。

我们试一试再画一条线,让乌龟爬到(300, 400):>>> turtle.goto(300, 400)

运行效果如下图所示:

我们可以看到,乌龟跑到每个坐标,都会拉出一条直线。能不能让乌龟移动都某个地方,但是不画线呢?此时我们可以使用turtle.penup(),先把画笔提起来,再移动乌龟既可。乌龟移动完成以后,使用turtle.pendown()重新把画笔放下,就可以继续画图了:>>> turtle.penup()

>>> turtle.goto(-100, -150)

>>> turtle.pendown()

>>> turtle.goto(20, 10)

运行效果如下图所示:

我们可以使用turtle.home()让乌龟从当前位置爬回(0, 0),相当于turtle.goto(0, 0)。也可以使用turtle.clear()清空当前画布。turtle.home()

turtle.clear()

现在我们综合使用一下上面的几个方法:>>> turtle.penup()

>>> turtle.goto(-100, 100)

>>> turtle.pendown()

>>> turtle.goto(100, -100)

>>> turtle.penup()

>>> turtle.goto(-100, -100)

>>> turtle.pendown()

>>> turtle.goto(100, 100)

>>> turtle.penup()

>>> turtle.goto(120, 100)

>>> turtle.pendown()

>>> turtle.goto(150, 0)

>>> turtle.goto(180, 100)

>>> turtle.goto(150, 0)

>>> turtle.goto(150, -100)

运行效果如下图所示:

我们来玩点有趣的东西。既然可以通过坐标画直线,那么我们现在定义两个函数:

这两个函数对应的代码为:import math

def fx(x):

return math.sqrt(2 * abs(x) - x ** 2)

def gx(x):

return -2.14 * math.sqrt(math.sqrt(2) - math.sqrt(abs(x)))

其中 x 的定义域为-2到2,但是由于图中是以像素为单位的,2像素显然太小了。所以我们把 x 和 y 都扩大100倍。

完整的代码如下:import math

import turtle

def fx(x):

return math.sqrt(2 * abs(x) - x ** 2)

def gx(x):

return -2.14 * math.sqrt(math.sqrt(2) - math.sqrt(abs(x)))

up_part_point = []

down_part_point = []

for x in range(-20, 21):

x /= 10

y1 = fx(x)

y2 = gx(x)

up_part_point.append((100 * x, 100 * y1))

down_part_point.append((100 * x, 100 * y2))

turtle.penup()

turtle.goto(*up_part_point[0])

turtle.pendown()

for point in up_part_point:

turtle.goto(*point)

turtle.penup()

turtle.goto(*down_part_point[0])

turtle.pendown()

for point in down_part_point:

turtle.goto(*point)

turtle.done()

运行效果如下图所示:

除了上面的基本用法外,我们还可以修改颜色,让图片更好看,如下图所示:

或者画出更复杂的图片:

具体 API 可以阅读 turtle 的官方文档[1]

参考资料[1]

官方文档: https://docs.python.org/zh-cn/3/library/turtle.html#module-turtle

python画图代码turtle-介绍下Python里自带的一个有趣画图模块库:Turtle库相关推荐

  1. python网站设计理念_简单介绍下python Django框架的历史,设计理念及优势_Django讲解2...

    简单介绍下python Django框架的历史,设计理念及优势 Django是一个高层次的 Python Web 框架,它是一个鼓励快速开发和干净,实用的框架设计.Django可以更容易地快速构建更好 ...

  2. python读取grib文件_Windows下Python读取GRIB数据

    之前写了一篇<基于Python的GRIB数据可视化>的文章,好多博友在评论里问我Windows系统下如何读取GRIB数据,在这里我做一下说明. 一.在Windows下Python为什么无法 ...

  3. 用python做自我介绍_用python做个自我介绍(python入门教程)_逻辑教育

    原标题:用python做个自我介绍(python入门教程)_逻辑教育 本文涉及的python基础语法为:数据类型等 数字类型 1. 字符串的拼接 我们在上一章中已经简单介绍了一下字符串的创建方式,这里 ...

  4. python简单的画图代码爱心,怎么用python代码画心

    大家好,本文将围绕用python画一个心形怎么编程展开说明,python简单的画图代码爱心是一个很多人都想弄明白的事情,想搞清楚用python画爱心的程序代码需要先了解以下几个事情. 1.python ...

  5. python语言画图代码_零: python matplotlib 画图进阶(含完整代码)

    导论: 在科研和研究的过程中,无论是哪个学科或者将来走上工作岗位,可视化是非常重要的一个环节. 这里的重要性,在我看来有三点:人是视觉动物,老板看你工作做的怎么样,paper reviewer看你研究 ...

  6. python里自带的绘画库是_Python绘图Turtle库详解

    Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x.纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行 ...

  7. python简单代码画曲线图教程-python画曲线

    广告关闭 腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元! 桃心形曲线的方程如下 matlab绘制效果如下:? matlab程序如下. clc ...

  8. python自动补全_Windows 下python的tab自动补全

    Windows 下python的tab自动补全# 对于新学python的朋友来说,python模块的功能多而难记,mac和Linux中有tab自动补全命令功能,使用Windows的同学们怎么办?下面我 ...

  9. python基础代码技巧_5行Python代码实现批量打水印技巧,值得收藏|python基础教程|python入门|python教程...

    在线工具需要上传到对方服务器,信息不安全. 很多工具不具备批量处理功能. 很多工具自定义的功能太少,如水印透明度,字体等. 操作繁琐. 现在只要你会使用命令,我们就能教大家怎么使用 Python 超级 ...

最新文章

  1. 面试官灵魂的一击:你懂MySQL事务吗?
  2. 亚马逊、谷歌和微软寸土必争的新战场
  3. shell批量添加用户
  4. Python 抖音机器人,论如何在抖音上找到漂亮小姐姐?
  5. Swift3.0语言教程替换子字符串
  6. R统计笔记(四):中括号与双中括号的差异
  7. Oracle软件结构
  8. 阿里云有一群 “猪猪侠”
  9. 使用Hybris commerce的promotion rule进行促销活动
  10. windows2008配置来
  11. php 方法里用外部变量的值,PHP实现函数内修改外部变量值的方法示例
  12. MacOSX系统怎么开启Root账户?Mac电脑开启root权限教程
  13. bigdecimal正确用法_BigDecimal使用实践和注意事项
  14. 搞dedecms站 找后台的一些经验[转]
  15. mongodb objectid java_我可以确定字符串是否是MongoDB ObjectID吗?
  16. 语音自动识别文字软件
  17. 《麦肯锡方法》第2章探索分析问题的方法-思维导图
  18. 重心法求中心matlab,两个中转站选址问题(重心法,metlab,spss)程序.ppt
  19. 【软件测试理论】(六) 白盒测试方法论说明
  20. 联网获取360数据,识别骚扰电话,java实现

热门文章

  1. 开发日记 20200129 新年这几天的总结
  2. 参数检验——当总体分布已知(如总体为正态分布),根据样本数据对总体分布的统计参数进行推断 非参数检验——利用样本数据对总体分布形态等进行推断的方法。...
  3. suse linux通过iso文件安装gcc
  4. 时序数据库深入浅出之存储篇——本质LSMtree,同时 metric(比如温度)+tags 分片...
  5. 分布式系统中一些主要的副本更新策略——Dynamo/Cassandra/Riak同时采取了主从式更新的同步+异步类型,以及任意节点更新的策略。...
  6. JSON快速转C#实体类
  7. 算法入门经典-第七章 例题7-2-2 可重集的排列
  8. 移动端web开发分享
  9. WriteStrToReg() ReadStrFormReg()
  10. boost 库 enable_shared_from_this 实现原理分析