Bootstrap

第 9 章 Python 标准库概览

整理的文章内容主要来源为高教版《计算机等级考试二级 Python》教程视频讲义,并且更正了原讲义中的错误的地方。
专栏文章索引如下:
考试大纲
第 1 章 程序设计基本方法
第 2 章 Python 语言基本语法元素
第 3 章 基本数据类型
第 4 章 程序的控制结构
第 5 章 函数和代码复用
第 6 章 组合数据类型
第 7 章 文件和数据格式化
第 8 章 Python 计算生态
第 9 章 Python 标准库概览
第 10 章 Python 第三方库使用
第 11 章 Python 第三方库纵览

1. turtle 库概述

turtle 库是 Python 重要的标准库之一,它能够进行基本的图形绘制。turtle 图形绘制的概念诞生于1969 年,成功就用于 LOGO 编程语言。由于 turtle 图形绘制概念十分直观并非常流行,Python 接受了这个概念,形成了Python 的 turtle 库,并成为标准库之一。

turtle 库绘制图形有一个基本框架:一个小海龟在坐标系中爬行,对坐标系轨迹形成了绘制图形。对于小海龟来说,有“前进”“后退”“旋转”等爬行行为,对坐标系的探索也通过“前进方向”“后退方向”“左侧方向”和“右侧方向”等小海龟自身角度方位来完成。在开始绘制时,小海龟位于画布中,此处坐标为 (0,0), 前进方向为水平右方。
在这里插入图片描述
turtle 是最有价值的程序设计入门实践库,它是程序设计入门层面最常用的基本绘图库。
使用 import 保留字对 turtle 库的引用有如下 3 种方式。
import turtle, 则对 turtle 库中函数调用采用 turtle.函数名() 形式。

import turtle
turtle.circle(200)

from turtle import circle, 则对 turtle 库中函数直接采用函数名() 形式,不再使用 turtle 作为前导。

from turtle import circle
circle(200)

import turtle as t, 则对 turtle 库中函数调用采用更简洁的 t.函数名() 形式,保留字 as 的作用是将 turtle 库给予别名 t.此处也可以使用 t 之外的其他别名。

import turtle as t 
t.circle(200)

2. turtle 库与基本绘图

turtle 库包含 100 多个功能函数,主要包括窗体函数、画笔状态函数和画笔运动函数 3 类。

2.1 窗体函数

turtle 库的 turtle.setup() 函数与窗体有关。
函数定义如下:

turtle.setup(width,height,startx,starty)

参数详解:
width: 窗口宽度。如果值是整数,表示的是像素值;如果值是小数,表示窗口宽度与屏幕的比例。
height: 窗口高度。如果值是整数,表示的是像素值;如果值是小数,表示窗口高度与屏幕的比例。
startx: 窗口左侧与屏幕左侧的像素距离。如果值是 None, 窗口位于屏幕水平中央。
starty: 窗口顶部与屏幕顶部的像素距离。如果值是 None, 窗口位于屏幕垂直中央。
示例:

import turtle
turtle.setup(100,100,100,100)

2.2 画笔状态函数

常用的画笔状态函数及描述如下所示:

序号函数描述
1pendown()放下画笔
2penup()提起画笔,与 pendown() 配对使用
3pensize(width)设置画笔线条的粗细为指定大小
4pencolor()设置画笔的颜色
5color()设置画笔和填充颜色
6begin_fill()填充图形前,调用该方法
7end_fill()填充图形结束
8filling()返回当前图形背景颜色的填充状态
9clear()清空当前窗口,但不改变当前窗口的位置
10reset()清空当前窗口,并重置位置等状态为默认值
11screensize()设置画布窗口的宽度、高度和背景颜色
12hideturtle()隐藏画笔的 turtle 形状
13showturtle()显示画笔的 turtle 形状
14isvisible()如果 turtle 可见,则返回 True
15write(str, font=None)输出 font 字体的字符串
turtle 中的画笔(即小海龟)可以通过一组函数来控制,其中 turtle.penup() 和 turtle.pendown() 是一组,他们分别表示画笔的提起和放下。
turtle.penup() 别名 turtle.pu() 或 turtle.up()
作用:提起画笔,之后,移动画笔不会绘制形状
参数:无
turtle.pendown() 别名 turtle.pd() 或 turtle.down()
作用:放下画笔,之后,移动画笔将会绘制形状
参数:无

turtle.pensize() 函数用来设置画笔尺寸。

turtle.pensize(width) 别名 turtle.width()
作用:设置画笔宽度,当无参数输入时返回当前画笔的宽度
参数:width:设置的画笔线条宽度,如果为 None 或者为空,函数则返回当前画笔宽度

turtle.pencolor() 函数给画笔设置颜色。

turtle.pencolor(colorstring) 或 turtle.pencolor(r,g,b)
作用:设置画笔颜色,当无参数输入时返回当前画笔颜色
参数:colorstring:表示颜色的字符串,例如,“purple”,“red” 等。
     (r,g,b):颜色对应的 RGB 的 0~1 数值,例如:1, 0.65, 0

turtle.color() 函数能够同时设置画笔和背景填充的颜色。

turtle.color(colorstring,colorstring2) 或者 turtle.color((r1,g1,b1),(r2,g2,b2))
作用:设置画笔和背景颜色,当无参数输入时返回当前画笔和背景颜色。
参数:colorstring1&&colorstring2:表示颜色的字符串。
 	(r,g,b):颜色对应的 RGB 的0~1数值,例如:1,0.65,0

turtle.begin_fill() 和 turtle.end_fill() 函数用来设置填充域色彩,这两个函数结对使用。

turtle.begin_fill()
作用:设置填充区域颜色,在开始绘制填充背景图形前调用
参数:无
import turtle 
turtle.color('red', 'blue')
turtle.begin_fill()
turtle.circle(50)
turtle.end_fill()
turtle.filling()
作用:返回当前图形背景颜色的填充状态,如果当前代码在 begin_fill() 和 end_fill() 之间,则返回 True, 否则返回 False
参数:无
import turtle
turtle.color('red','blue')
turtle.begin_fill()
print(turtle.filling())
turtle.circle(50)
turtle.end_fill()
print(turtle.filling())

turtle.clear() 函数清空当前窗口

turtle.clear()
作用:清空当前海龟对象绘制的图形,但不改变其位置和角度。
参数:无
import turtle
turtle.color('red','blue')
turtle.begin_fill()
turtle.circle(50)
turtle.end_fill()
turtle.clear()
turtle.reset()
作用:清空当前绘图窗口,海龟对象绘图位置和角度归为原点
参数:无
import turtle
turtle.color('red','blue')
turtle.begin_fill()
turtle.circle(50)
turtle.end_fill()
turtle.reset()

turtle.screensize() 函数设置画布窗口的宽度、高度和背景颜色。

turtle.screensize(width,height,bgcolor)
作用:设置当前画布窗口的宽度为 width, 高度为 height, 背景颜色为 bgcolor, 如果不给出参数,则以元组形式返回当前画布窗口的宽度和高度 (width,height).
参数:width:窗体的宽度,以像素为单位
     height:窗体的高度,以像素为单位
  	 bgcolor:表示颜色的字符串或颜色对应的 RGB 的 0~1 数值
import turtle
turtle.color('red','blue')
print(turtle.screensize())
turtle.screensize(600,400,'yellow')
print(turtle.screensize())
turtle.filling()
turtle.circle(50)
turtle.end_fill()
turtle.reset()
turtle.hideturtle()
作用:隐藏画笔的 turtle 形状
参数:无
import turtle
turtle.color('red','blue')
turtle.begin_fill()
turtle.circle(50)
turtle.end_fill()
turtle.hideturtle()
turtle.showturtle()
作用:如果 turtle 画笔的形状显示,则返回 True, 否则返回 False
参数:无
import turtle
turtle.color('red','blue')
turtle.begin_fill()
turtle.circle(50)
turtle.end_fill()
turtle.hideturtle()
turtle.showturtle()
turtle.isvisible()
作用:如果 turtle 画笔的形状显示,则返回 True,否则返回 False
参数:无
turtle.write(str,font=None)
作用:根据设置的字体 font 形式,将字符串 str 显示在画布上
参数:str:拟输出的字符串
  	 font:字体名称、字体的尺寸和字体类型 3 个元素构成的元组
import turtle
turtle.color('red','blue')
turtle.begin_fill()
turtle.circle(50)
turtle.end_fill()
turtle.hideturtle()
turtle.showturtle()
turtle.write('helloworld',font=('Arial',50,'normal'))
turtle.hideturtle()

2.3 画笔运动函数

turtle 通过一组函数绘制画笔的行进动作,进而绘制形状。

序号函数描述
1forward(distance)沿着当前方向前进指定距离
2backward(distance)沿着当前相反方向后退指定距离
3right(angle)向右旋转 angle 角度
4left(angle)向左旋转 angle 角度
5goto(x,y)移动到绝对坐标 (x,y) 处
6setx(x)修改画笔的横坐标到 x, 纵坐标不变
7sety(y)修改画笔的纵坐标到 y, 横坐标不变
8setheading(angle)设置当前朝向为 angle 角度
9home()设置当前画笔位置为原点,朝向东
10circle(radius,e)绘制一个指定半径 r 和角度 e 的圆或弧形
11dot(r,color)绘制一个指定半径r和颜色color的圆点
12undo()撤销画笔最后一步动作
13speed()设置画笔的绘制速度,参数为 0~10 之间

turtle.fd() 函数最常用,它控制画笔向当前行进方向前进一个距离。

turtle.forward(distance) 别名 turtle.fd(distance).
作用:小海龟向当前行进方向前进 distance 距离
参数:distance: 行进距离的像素值,当值为负数时,表示向相反方向前进
import turtle as t
t.forward(100)
t.forward(-200)

turtle.bk() 函数控制画笔向前进方向的反方向运动一个距离。

turtle.bk(distance) 别名 turtle.backward(distance)
作用:向小海龟当前行进方向的反方向运动 distance 距离,画笔方向不变
参数:distance:行进距离的像素值,当值为负数时,表示向行进方向运动
turtle.right(angle)
作用:改变画笔行进方向为当前右侧 angle 度,angle 是角度相对值
参数:角度的整数值
turtle.left(angle)
作用:改变画笔行进方向为当前方向左侧 angle 度,angle 是角度相对值
参数:角度的整数值
import turtle as t
t.forward(100)
t.right(90)
t.forward(100)
t.left(-90)
t.forward(100)
turtle.goto(x,y)
作用:移动画笔到画布中的特定位置,该位置以坐标 (x,y) 方式表达,如果当前画笔处于落下状态,则绘制当前位置到目标位置的线条
参数:x:画布中特定位置的横坐标
     y:画布中特定位置的纵坐标
import turtle as t
t.forward(100)
t.right(90)
t.forward(100)
t.left(-90)
t.forward(100)
t.goto(0,0)
turtle.setx(x)
作用:修改画笔的横坐标到 x
参数:x: 画布中横坐标的一个值
import turtle as t
t.forward(100)
t.right(90)
t.forward(100)
t.left(-90)
t.forward(100)
t.goto(0,0)
t.setx(-200)
turtle.sety(y)
作用:修改画笔的纵坐标到 y, 横坐标不变
参数:y:画布中纵坐标的一个值
import turtle as t
t.forward(100)
t.right(90)
t.forward(100)
t.left(-90)
t.forward(100)
t.goto(0,0)
t.setx(-200)
t.sety(-200)
turtle.setheading(to_angle) 别名 turtle.seth(to_angle)
作用:设置小海龟当前行进方向为 to_angle,该角度是绝对方向角度值
参数:to_angle:角度的整数值
    (turtle库的角度坐标体系以正东方向为绝对 0 度,以正西方向为绝对 180)
import turtle as t
t.forward(100)
t.right(90)
t.forward(100)
t.left(-90)
t.forward(100)
t.goto(0,0)
t.setx(-200)
t.sety(-200)

t.setheading(120)
t.forward(100)
turtle.home()
作用:移动画笔到坐标系原点,画笔方向为初始方向
参数:无
import turtle as t
t.forward(100)
t.right(90)
t.forward(100)
t.left(-90)
t.forward(100)
t.goto(0,0)
t.setx(-200)
t.sety(-200)

t.setheading(120)
t.forward(100)

t.home()
turtle.circle(radius,extent=None)
作用:根据半径 radius 绘制 extent 角度的弧形
参数:radius:弧形半径。当值为正数时,半径在小海龟左侧,当值为负数时,半径在小海龟右侧
     extent:绘制弧形的角度。当不给该参数或参数为 None 时,绘制整个圆形
turtle.dot(size,color)
作用:绘制一个带有背景色 color、直径为 size 的圆点
参数:size:原点的直径,像素值
     color: 颜色字符串或 RGB 的0~1值,表示背景颜色
turtle.undo()
作用:撤销绘图的最后一次动作
参数:无
turtle.speed(s)
作用:设置画笔的绘制速度,参数为 0~10 整数,0 表示没有绘制动作,1~10 逐步增加绘制速度,超过 10 则等同于参数为零
参数:s:速度的设定值,0~10 之间的整数

案例:

import turtle as t
t.penup()
t.goto(-200,-50)
t.pendown()
t.begin_fill()
t.color('red')
t.circle(40.steps=3)
t.end_fill()

在这里插入图片描述

3. random 库概述

随机数在计算机应用中十分常见,Python 语言提供了 random 库用于产生各种分布的伪随机序列。random 库采用梅森旋转算法生成伪随机数序列。可用于除随机性要求更高的加密算法外的大多数工程应用。

使用 random 库的主要目的是生成随机数。这个库提供了不同类型的随机数,其中最基本的函数是 random.random(),它生成一个 [0.0,1.0) 之间的随机小数。所有其他随机数都是基于这个函数而来的。

4. random 库与随机数运用

常用的几个随机数函数及描述如下:

序号函数描述
1seed(a=None)初始化随机数种子,默认值为当前系统时间
2random()生成一个 [0.0,1.0] 之间的随机小数
3randint(a,b)生成一个 [a,b] 之间的整数
4getranddbis(k)生成一个 k 比特长度的随机整数
5randrange(start,stop,step)生成一个 [start,stop] 之间以 step 为步长的随机整数
6uniform(a,b)生成一个 [a,b] 之间的随机小数
7choice(seq)从序列类型中随机返回一个元素
8shuffle(seq)将序列类型中元素随机排序,返回打乱后的序列
9sample(pop,k)从 pop 类型中随机选取 k 个元素,以列表类型返回

与其他编程语言相似,Python 语言中随机数的生成基于随机数“种子”,每个种子作为输入,利用算法生成一系列随机数,构成伪随机序列。random库使用 random.seed(a) 对后续产生的随机数设置种子。

所有的随机数都是基于 random() 函数实现的几种具体功能。(再设置相同的种子,其后续产生的随机数相同)
示例:

random.seed(s)
作用:为随机数序列确定种子,其中参数为种子
参数:s 为随机数种子,一个整数或浮点数

设置随机数种子的好处是可以准确复现随机数序列,用于重复程序的运行轨迹。对于仅使用随机数但不需要复现的情形,可以不用设置随机数种子。
如果程序没有显式设置随机数种子,则使用随机数生成函数前,将默认以当前系统的运行时间为种子产生随机序列。

5. time 库概述

处理时间是程序最常用的功能之一,time 库是 Python 提供的处理时间标准库。time 库提供系统级精确计时器的计时功能,可以用来分析程序性能,也可让程序暂停运行时间。
使用 time 库之前需要使用 import 进行导入。

import time
print(time.localtime())

time库的功能主要分为 3 个方面:时间处理、时间格式化和计时。
时间处理主要包括 4 个函数:time.time()、time.gmtime()、time.localtime()、time.ctime().
时间格式化主要包括 3 个函数:time.mktime()、time.strftime()、time.strptime().
计时主要包括 3 个函数:time.sleep()、time.monntonic()、time.perf_counter().
使用 time.time() 获取当前时间戳。

import time
print(time.time())

使用 time.gmtime(sec) 获取当前时间戳对应的 struct_time 对象。
在这里插入图片描述
使用 time.localtime(sec) 获取当前时间戳对应的本地时间的 struct_time 对象。与 time.gmtime() 的区别是 UTC 时间已自动转为北京时间。
在这里插入图片描述
time.ctime(secs) 获取当前时间戳对应的是字符串表示,内部会调用time.localtime() 函数以输出当地时间。
在这里插入图片描述
time 库使用 time.mktime()、time.strftime()、time.strptime() 进行时间格式化。
使用 time.mktime() 将 struct_time 对象t转换为时间戳,注意t代表当地时间。
struct_time 对象的元素构成如下表所示:

索引属性
0tm_year年份、整数
1tm_mon月份 [1,12]
2tm_mday日期 [1,31]
3tm_hour小时 [0,23]
4tm_min分钟 [0.59]
5tm_sec秒 [0,59]
6tm_wday星期 [0,6]
7tm_yday该年第几天 [1,366]
8tm_isdst是否夏令时, 0 否,1 是,-1 未知

调用 time.mktime() 函数。
在这里插入图片描述
time.strftime() 函数是时间格式化最有效的方法,几乎可以以任何通用格式输出时间。该方法利用一个格式字符串,对时间格式进行表达。
在这里插入图片描述
strftime() 方法的格式化控制符。
strptime() 方法与 strftime() 方法完全相反,用于提取字符串中时间来生成 struct_time 对象,可以很灵活的作为 time 模块的输入接口。
在这里插入图片描述

6. 选择题

(1)以下对 turtle 库最合适的描述是(A)

  • A. 绘图库
  • B. 数值计算库
  • C. 爬虫库
  • D. 时间库

(2)turtle 库中将画笔移动 x 像素的语句是(A)

  • A. turtle.forward(x)
  • B. turtle.circle(x)
  • C. turtle.right(x)
  • D. turtle.left(x)

(3)turtle.circle(50, 180) 的执行效果是(B)

  • A. 绘制一个半径为 50 的圆
  • B. 绘制一个半径为 50 的半圆
  • C. 绘制一个半径为 50 的圆,分三次画完
  • D. 绘制一个半径为 50 的圆形

(4)turtle.reset() 方法的作用是(C)

  • A. 撤销上一个 turtle 动作
  • B. 清空画笔的状态
  • C. 清空 turtle 窗口,重置 turtle 状态为起始状态
  • D. 设置 turtle 图形可见

(5)random 库用来生成随机数的算法是(C)

  • A. 平方取中法
  • B. 线性同余法
  • C. 梅森旋转算法
  • D. 蒙特卡洛方法

(6)random.uniform(a,b) 的作用是(B)

  • A. 生成一个 [a,b] 之间的随机整数
  • B. 生成一个 [a,b] 之间的随机小数
  • C. 生成一个均值为 a, 方差为 b 的正态分布
  • D. 生成一个 (a,b) 之间的随机数

(7) 设置 turtle 窗口大小的函数是(A)

  • A. turtle.setup()
  • B. turtle.window()
  • C. turtle.shape()
  • D. turtle.pensize()

(8)在 turtle 坐标系中,(0,0) 坐标位于窗口的(B)

  • A. 左下角
  • B. 正中央
  • C. 左上角
  • D. 右上角

(9)random 库中,random() 函数的作用是(D)

  • A. 生成随机数 x 且 0 <= x <= 100, x 为整数
  • B. 生成随机数 x 且 0.0 <= x < 10.0
  • C. 将列表中的元素打乱顺序重新排列
  • D. 生成随机数 x 且 0.0 <= x < 1.0

PDF 讲义下载链接如下:
链接:https://pan.baidu.com/s/1rc8d2_mmtci0o5vtCSl6rg

;