python画图代码turtle-介绍下Python里自带的一个有趣画图模块库:Turtle库
众所周知,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库相关推荐
- python网站设计理念_简单介绍下python Django框架的历史,设计理念及优势_Django讲解2...
简单介绍下python Django框架的历史,设计理念及优势 Django是一个高层次的 Python Web 框架,它是一个鼓励快速开发和干净,实用的框架设计.Django可以更容易地快速构建更好 ...
- python读取grib文件_Windows下Python读取GRIB数据
之前写了一篇<基于Python的GRIB数据可视化>的文章,好多博友在评论里问我Windows系统下如何读取GRIB数据,在这里我做一下说明. 一.在Windows下Python为什么无法 ...
- 用python做自我介绍_用python做个自我介绍(python入门教程)_逻辑教育
原标题:用python做个自我介绍(python入门教程)_逻辑教育 本文涉及的python基础语法为:数据类型等 数字类型 1. 字符串的拼接 我们在上一章中已经简单介绍了一下字符串的创建方式,这里 ...
- python简单的画图代码爱心,怎么用python代码画心
大家好,本文将围绕用python画一个心形怎么编程展开说明,python简单的画图代码爱心是一个很多人都想弄明白的事情,想搞清楚用python画爱心的程序代码需要先了解以下几个事情. 1.python ...
- python语言画图代码_零: python matplotlib 画图进阶(含完整代码)
导论: 在科研和研究的过程中,无论是哪个学科或者将来走上工作岗位,可视化是非常重要的一个环节. 这里的重要性,在我看来有三点:人是视觉动物,老板看你工作做的怎么样,paper reviewer看你研究 ...
- python里自带的绘画库是_Python绘图Turtle库详解
Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x.纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行 ...
- python简单代码画曲线图教程-python画曲线
广告关闭 腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元! 桃心形曲线的方程如下 matlab绘制效果如下:? matlab程序如下. clc ...
- python自动补全_Windows 下python的tab自动补全
Windows 下python的tab自动补全# 对于新学python的朋友来说,python模块的功能多而难记,mac和Linux中有tab自动补全命令功能,使用Windows的同学们怎么办?下面我 ...
- python基础代码技巧_5行Python代码实现批量打水印技巧,值得收藏|python基础教程|python入门|python教程...
在线工具需要上传到对方服务器,信息不安全. 很多工具不具备批量处理功能. 很多工具自定义的功能太少,如水印透明度,字体等. 操作繁琐. 现在只要你会使用命令,我们就能教大家怎么使用 Python 超级 ...
最新文章
- 面试官灵魂的一击:你懂MySQL事务吗?
- 亚马逊、谷歌和微软寸土必争的新战场
- shell批量添加用户
- Python 抖音机器人,论如何在抖音上找到漂亮小姐姐?
- Swift3.0语言教程替换子字符串
- R统计笔记(四):中括号与双中括号的差异
- Oracle软件结构
- 阿里云有一群 “猪猪侠”
- 使用Hybris commerce的promotion rule进行促销活动
- windows2008配置来
- php 方法里用外部变量的值,PHP实现函数内修改外部变量值的方法示例
- MacOSX系统怎么开启Root账户?Mac电脑开启root权限教程
- bigdecimal正确用法_BigDecimal使用实践和注意事项
- 搞dedecms站 找后台的一些经验[转]
- mongodb objectid java_我可以确定字符串是否是MongoDB ObjectID吗?
- 语音自动识别文字软件
- 《麦肯锡方法》第2章探索分析问题的方法-思维导图
- 重心法求中心matlab,两个中转站选址问题(重心法,metlab,spss)程序.ppt
- 【软件测试理论】(六) 白盒测试方法论说明
- 联网获取360数据,识别骚扰电话,java实现
热门文章
- 开发日记 20200129 新年这几天的总结
- 参数检验——当总体分布已知(如总体为正态分布),根据样本数据对总体分布的统计参数进行推断 非参数检验——利用样本数据对总体分布形态等进行推断的方法。...
- suse linux通过iso文件安装gcc
- 时序数据库深入浅出之存储篇——本质LSMtree,同时 metric(比如温度)+tags 分片...
- 分布式系统中一些主要的副本更新策略——Dynamo/Cassandra/Riak同时采取了主从式更新的同步+异步类型,以及任意节点更新的策略。...
- JSON快速转C#实体类
- 算法入门经典-第七章 例题7-2-2 可重集的排列
- 移动端web开发分享
- WriteStrToReg() ReadStrFormReg()
- boost 库 enable_shared_from_this 实现原理分析