Python常用标准库turtle,random,time标准库的使用

Python常用模块的使用

Python拥有功能丰富的内置模块和数量庞大的扩展模块,几乎想要实现的任何功能都有相应的库支持,而且很多机构和个人还在不断地分享着自己开发的新模块。熟练地使用模块,可以在工程实践中灵活地借助模块完成想要的功能,让编程事半功倍。
1.turtle库的使用
turtle是在Python 2.5以后版本引入的一个绘图工具,叫做海龟绘图(Turtle Graphics),是Python的标准库之一,在安装Python解释器时就已经安装在系统中了。
一、turtle概述
turtle是一个图形库,这意味着你需要创建一个单独的窗口来执行绘图指令,如图所示。
在这里插入图片描述
在窗口中,存在一个横轴为x、纵轴为y的坐标系,窗口的中心是坐标系的原点。想象一只小海龟从原点(0, 0)位置出发,可以通过一组函数对小海龟的行动进行控制。(x, y)的坐标系可以看成一块画布,小海龟可以看成是一支画笔。小海龟从原点开始在画布上爬行,在爬行过程中,小海龟会用画笔把爬行的轨迹记录下来,这就是绘制的图形。
先来看一个简单的例子:
在这里插入图片描述
在示例中调用了函数turtle.setup(),用来设置绘图窗口的大小和位置,函数的具体定义如下:
在这里插入图片描述
在这里插入图片描述
二、turtle绘图坐标体系
小海龟在画布中爬行,可以前进、后退,可以左转、右转,这些爬行的行为需要有一个坐标或参数来标注位置和角度。你可以用绝对坐标来指示小海龟的爬行,即:用一个相对于原点的坐标表示位置;或者用相对坐标来指示小海龟的爬行,即:用一个相对于海龟的参数表示位置。
1、绝对坐标体系
绘图窗口的中心为原点(0, 0),水平向右为x轴正方向,垂直向上方向为y轴正方向,构成一个绝对坐标体系,如 图9-5 所示。
在这里插入图片描述
原点的位置在turtle绘图坐标体系也被称为Home,无论小海龟在什么位置,turtle.home()总可以使它回到原点(0, 0)处,并朝向右边(x轴正方向)。
在绘制图形的过程中,小海龟会不停地移动,你会发现,不管怎么移动,小海龟始终朝向x轴正方向(初始朝向)。可以使用turtle.setheading(to_angle)改变小海龟的朝向,to_angle可以是整数,也可以是浮点数,表示与x轴正方向的夹角,正值对应逆时针转动,负值对应顺时针转动,例如0(360)表示朝向东(右),90(-270)表示朝向北(上),180(-180)表示朝向西(左),270(-90)表示朝向南(下)。
2、相对(海龟)坐标体系
相对(海龟)坐标体系,是以小海龟为参考的坐标体系,“前进”、“后退”、“向左转”、“向右转”等运动轨迹的改变是以小海龟自身的方位角度为参照,任何时候,小海龟的朝向是正前方,左侧为左方,右侧为右方,如 图9-7 所示。
在这里插入图片描述
以下函数使用了相对坐标体系:turtle.forward(distance),小海龟前进distance个像素,方向为海龟的当前朝向;turtle.backward(distance),小海龟后退distance个像素,方向与海龟的朝向相反,不改变海龟的朝向;turtle.left(angle),小海龟左转angle个单位,单位默认为角度;turtle.right(angle),小海龟右转angle个单位,单位默认为角度。
同样使用了相对坐标体系的函数还有turtle.circle(radius, extent=None, steps=None),它可以绘制一个半径为radius的圆,圆心在小海龟左侧radius个像素,如果radius为正值,则逆时针方向绘制圆弧,如果radius为负值,则顺时针方向绘制圆弧。extent为一个夹角,用于绘制圆的一部分(圆弧),如果未指定extent则绘制整个圆,如果指定了extent,则以当前海龟所在位置作为一个端点绘制圆弧,最终海龟的朝向会依据extent的值而改变。圆是以其内切正多边形来近似表示的,边的数量由steps指定,如果没有指定会使用默认值。可以通过指定steps来绘制正多边形。
三、为图形填充颜色
图形绘制完成后,还需要填充颜色,填充颜色是通过turtle库的画笔控制函数完成的。与图形填色相关的函数列举如下:
1、turtle.pensize(width):用来设置画笔的粗细,width为正数,单位为像素。画笔的粗细和线条一致,比如turtle.pensize(10),把画笔改为10个像素,相当于加粗了绘图时的线条。也可以理解为小海龟变胖了,这样它在画布上爬行留下的轨迹也会变粗。
2、为一个闭合的形状填充颜色时,可以使用turtle.begin_fill()和turtle.end_fill()。turtle.begin_fill():开始填色,在绘制要填充颜色的形状之前调用;turtle.end_fill():对从上次调用begin_fill()之后绘制的形状填充颜色。
3、turtle.pencolor():设置画笔的颜色,turtle.fillcolor():设置填充的颜色,turtle.color(:设置画笔的颜色和填充的颜色,相当于turtle.pencolor()和turtle.fillcolor()的合体。很多颜色都有固定的英文名称,这些名称可以直接作为函数的参数,也可以采用(r, g, b)的形式输入颜色值。常用的RGB颜色如 表9-1 所示。
在这里插入图片描述
turtle.position(),获得小海龟当前的坐标(x, y),而abs(turtle.position())可以计算当前小海龟到原点的直线距离(根据勾股定理计算)。
2.random库的使用
随机数在科学研究与工程实际中有着极其重要的应用,随机数最重要的特性是:它所生成的每个数与其它的数毫无关系。真正的随机数是使用物理现象生成的:比如掷钱币、骰子、使用电子元件的噪音、核裂变等,缺点是技术要求比较高。在实际应用中使用“伪随机数”就足够了,这些数看似随机,实际上是通过一个固定的、可以重复的计算方法生成的,具有类似于随机数的统计特征。
一、random库概述
random库采用梅森旋转算法(Mersenne Twister/MT)生成伪随机数序列,可以生成随机浮点数、整数、字符串,还可以帮助你随机选择序列中的一个元素,打乱一组数据等,可用于除加密算法外(对随机性要求更高)的大多数工程应用。
二、random库解析
random库用于生成伪随机数的常用函数介绍如下:
1、random.seed(a=None):初始化伪随机数生成器。
如果未提供a或者a=None,则使用当前的系统时间为种子。如果a是一个整数,则作为伪随机数生成器的种子。这个函数可以保证生成的随机数具有可预测性,这里的可预测性是指相同的种子(seed值)所产生的随机数序列是相同的。如果不设置seed值,则根据当前的系统时间来自动选择这个值,此时每次生成的随机数因时间差异而不同。当希望生成的随机数能够复现的时候,使用seed()函数就会非常有用。
2、random.random():生成一个介于左闭右开区间 [0.0, 1.0) 的随机浮点数。
在这里插入图片描述
3、random.uniform(a, b):生成一个指定范围内的随机浮点数,a、b为上下限,若a != b,就会生成介于两者之间(包括a、b)的一个浮点数,若 a= b,则生成的浮点数就是a。
在这里插入图片描述
4、random.randint(a, b):生成一个介于指定范围内的随机整数。
在这里插入图片描述
5、random.getrandbits(k):生成具有k个随机比特位的非负整数,比如k = 10,则随机数在0 ~ 2^10之间。
在这里插入图片描述
6、random.randrange(start, stop[, step]):从 range(start, stop, step) 随机选择一个元素。
在这里插入图片描述
7、random.choice(seq):从非空序列seq中随机选取一个元素,seq可以是一个列表,元组或字符串,如果seq为空则引发IndexError异常。
在这里插入图片描述
8、random.shuffle(x):把序列x内元素的随机排序。只能针对可变的序列,对于不可变序列,使用后面的random.sample()方法。
在这里插入图片描述
9、random.sample(population, k):从population样本或集合中随机抽取k个不重复的元素形成新的序列,常用于不重复的随机抽样。返回的是一个新序列,不会修改原序列。如果k大于population的长度,则引发ValueError异常。如果要从一个整数区间随机抽取一定数量的整数,可以使用random.sample(range(10), k = 6),如果要改变一个不可变序列并返回一个新的乱序列表,可以使用random.sample(x, k=len(x))。
在这里插入图片描述
3.time库
time库是Python处理时间的标准库,提供了获取系统时间并格式化输出的功能,提供了系统级的精确计时功能用于评估代码的执行效率,还提供了在代码执行期间进行等待的功能。time库使用以下三种方式表示时间:
1、timestamp:时间戳,表示的是从1970年1月1日00:00:00开始按秒计算的偏移量,例如86400(60×60×24,一分钟有60秒,一小时有60分钟,一天有24小时)表示的时间是1970年1月2日00:00:00。
2、struct_time:表示时间的元组,共有九个元素,如 表9-3 所示。
在这里插入图片描述
3、format time:以易读的形式表示时间,即字符串形式的时间,包括自定义格式和固定格式,已格式化的结构使时间更具可读性。
可以使用time()、gmtime()、ctime()来获取不同形式的时间,例如:
在这里插入图片描述
sleep()可以使程序暂停执行。所谓暂停,即令当前线程进入阻塞状态,当达到sleep()函数规定的时间后,再由阻塞状态转为就绪状态,等待CPU调度。sleep()的参数可以是浮点数,能够提供精确的暂停时间,例如:
在这里插入图片描述
perf_counter_ns()返回性能计数器(Performance Counter)的值(整数,以ns为单位),可以测量较短的持续时间(包括等待状态消耗的时间),具有最高的可用分辨率。一般使用该函数都是为了比较或计算,通常用来计算代码的运行时间,需要调用两次,做差值,例如:
在这里插入图片描述

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值