MOOC —— Python语言基础与应用 by 北京大学 第七章 基本扩展模块

33、datetime模块

datetime.date():处理日期(年月日)
datetime.time():处理时间(时分秒、毫秒)
datetime.datetime():处理日期+时间
datetime.timedelta(days=1,hours=1):时间偏移量,处理时段(时间间隔),做时间运算用
datetime.date.today():获取今天的日期
datetime.datetime.now():当前时间
用strftime格式化

datetime.date.today().strftime('%Y-%m-%d %H:%M:%S)

datetime.datetime.isoformat():用国际标准格式来显示时间
timetuple:将时期转换成时间戳,struct_time格式
time.mktime:返回用秒数来表示时间的浮点数
datetime.date.fromtimestamp():将时间戳转换成日期
timedelta():表示两个时间点的间隔


34、canlendar模块

常用函数
calendar.calendar(<年>):以多行字符串的形式输出年历
calendar.month(<年>,<月>):以多行字符串的形式输出月历
calendar.prmonth(<年>,<月>):= print(calendar.month(<年>,<月>))
calendar.prcal(<年>) := print(calendar.calendar(<年>))
calendar.monthcalendar():返回一个嵌套列表,里面列表元素含有7个元素,代表一周
calendar.isleap(<年>):判断是否闰年(以前的练习用了这个就好方便了= =)
calendar.monthrange(<年>,<月>):计算某年某月第一天是周几,共多少天,周一返回0,周二返回1,依次类推
calendar.weekday(<年>,<月>,<日>):计算指定一天是星期几


35、time模块

更多用在程序里的计时
time.time():主要用来计算时间差
time.asctime():获取当前时间,还可以将元组数据转化为日期
time.ctime():获取当前时间,同上
time.localtime():获取本地时间
time.sleep():让程序暂停几秒


36、几个算术模块

这些高大上的模块。。。对数学都还给老师的我来说,帮大忙了= =
math
math.sin() / cos() /tan() / pi / log(x,a) / pow(x,y)

cmath
主要用于复数运算
cmath.polar():极坐标
cmath.rect():笛卡尔坐标
cmath.exp(x):e的x 次幂
cmath.log(x,a):a为底,x的对数
cmath.sqrt(x):平方根


decimal
主要用于解决浮点数运算的误差
from decimal import Decimal
Decimal(‘0.1’)


fractions 分数
from fractions import Fraction
Fraction(‘0.25’) ==> Fraction(1, 4)
Fractioni.from_float(1.75):浮点数转换为分数


random
伪随机数,按照一定算法模拟产生,结果是确定的
random.seed(a=None),随机数种子
random():生成范围[0,1)的随机实数,不含1
uniform():生成指定范围内的随机浮点数
randint(m,n):生成[m,n]内的整数,包括n
randrange(a,b,n):在[a,b)范围内,按n递增的集合中随机选择一个数
getrandbits(k):生成k位二进制的随机整数
choice():从指定序列中随机选择一个元素
sample(list,n):指定每次随机抽取list列表里元素的个数n
shuffle():可变序列里的元素随机排序


37、持久化模块

让一些数据在程序退出来后,依然保存
pickle
任意python对象格式化和解格式化
dbm
实现一个可通过键访问的文件系统,以存储字节串
shelve
按照键把pickle处理后的对象存储到一个文件中
键(key)必须是字符串,且是唯一的
必须打开shelve,修改后需要关闭
不支持类似sql的查询工具

d = shelve.open(filename)        # 打开
d[key] = data                    # 像字典一样操作
value = d[key]
del d[key]
d.close()                        #关闭

38、文件文本读写模块

open(filename[,mode=‘rwxa+tb’[,buffering=-1]]):打开文件

write(): 文件写操作
writelines():同样是写,但括号里输入的是列表

read():读,默认全部
readline():读,默认一行
readlines():读,默认全部,返回列表,一个列表是一行

close():关闭文件
确保在退出后自动关闭文件
with open(‘textfile’,‘rt’) as myfile:
myfile.read()


结构化文本文件:CSV
re = csv.reader():返回一个生成器
re = csv.Dictreader():带有表头的读取,返回的每一个单元格都放在一个元组的值内

文件写操作
w = csv.writer()
w.writerow(rows)

字典数据写入
w = csv.DictWriter()
w.writeheader()
w.writerow(rows)


结构化文本文件:Excel
openpyxl模块
用来读写xlsx.xlsm.xltx.xltm的文件

创建excel文件

from openpyxl import Workbook
wb = Workbook()
ws =wb.active

读取excel文件

from openpyxl import load_workbook
wb = load_workbook(filename)
ws = wb.file.active

获取单元格信息
c = wb[‘sheet’]['A1‘]
c = wb[‘sheet’].cell(row=1,column=1)
c.coordinate:返回单元格坐标
c.value:返回单元格的值
c.row:返回单元格所在的行坐标
c.column:返回单元格所在列坐标

结构化文本文件:PDF
处理pdf的库:PyPDF2,只能提取文本,无法提取图像,图表等
主要类:

  • PdfFileReader:读取

    • .getNumPages():计算PDF文件总页数
    • .getPage(index):检索指定编号的页面
  • PdfFileWriter:写

    • .addPage(pageObj):根据每页返回的PageObject,写入到文件
    • .addBlankPage():在文件的最后一页后面写入一个 空白页,保存到新文件
  • PdfFileMerger:合并文档

    • .append
    • .merge
    • .write
  • PageObject:

    • .extractText():按照顺序提取文本
    • .getContents():访问页面内容
    • .rotateClockwise(angle):顺时针旋转
    • .scale(sx,sy):改变页面大小

39、上机练习:计时和文件处理

一、看看阶乘累加(n=1~100)各需要多 长时间?


二、将一篇文章写入一个文本文件

三、读出文本文件,统计单词数输出

四、读出文本文件,随机输出其中的10个 单词


40、简单的图形界面模块

easygui模块
可以显示各种对话框、文本框、选择框
功能演示:easygui.egdemo()

easygui.msgbox(msg=’’,title=’’, ok_button=’ ok’,image=None,root=None): 跳出消息框
easygui.choicebox(msg=’’,titel=’’,choices=[‘choice_1’,‘choice_2’,‘choice_3’,’…’]):按钮选项,提供一个可选择的列表,使用序列(元祖或列表)作为选项
easygui.textbox(text=’’’…’’’):文本框
easygui.passwordbox():类似于enterbox(),但输入的内容以“ * ”显示
easygui.fileopenbox():打开文件


41、海龟作图

turtle模块,感兴趣的可以通过dir(turtle)查看他的方法,下面简单介绍几种
turtle.setup(800,600,200,200):在屏幕坐标(200,200)处创建800x600大小的画布
turtle.fd/bk(100):前进/后退100像素
turtle.penup/pendown():提笔/下笔
turtle.lt/rt(90):左转/右转90度
turtle.seth(90):注意,括号里的绝对度数,无论你本来朝向哪里,输入90后,朝向正上方
turtle.pencolor(‘purple’):画笔颜色
turtle.pensize():画笔粗细
turtle.circle():画圆

42、上机练习:简单绘图

一、利用turtle模块,进行图形绘制
选择“正方形”,绘制一个边长100的绿色正方形
选择“五角星”,绘制一个边长100的红色五角星

二、调用turtle模块画一棵树,包括枝干和 树叶,并涂上颜色

测验题

1、Python可以使用()函数打开文件,这个函数默认的打开模式为()。

A. openfile ‘r’

B. open ‘w’

C. open ‘r’

D. openfile ‘w’

2、下列关于文件相关模块说法错误的是(____)。

A. 打开二进制文件应该采用模式’rt’。

B. 文件操作可以使用close方法关闭流。

C. 通常采用with语句以保证系统自动关闭打开的流。

D. 可以使用shelve模块进行对象持久化。

3、下列关于时间相关模块说法错误的是()。

A. datetime模块中strptime方法将struct_time对象格式化成字符串。

B. datetime模块中timedelta模块用来表示日期或时间之间的差值。

C. time.sleep()方法可以让程序在某处暂停几秒。

D. calendar.isleap(2000)
上述Python代码的结果是True。

4、
from datetime import *
td1=timedelta(minutes=10)
td2=timedelta(minutes=15)
以下关于这段代码说法错误的是

A. print(td1*10)的结果是100。

B. print(td1<td2)的结果是True。

C. print(td1+td2)的结果是0:25:00。

D. print((td2-td1).seconds)的结果是300。

5
以下选项不是Python文件读操作的是(____)。

A. open()

B. read()

C. readlines()

D. readline()

6、Python文件相关模块中的readline(size)函数,其中参数size用于指明读取的()。

A.行数

B.二进制数

C.字符串数

D.字节数或字符数

7、下列关于Python中数学相关模块说法正确的是(___)。

A.

t=Fraction(7,4)
m=1.75
print(t==m)

这段代码的输出结果是False。

B.math.log(a,x)可以用来求以a为底的x的对数。

C.cmath模块可以实现对复数进行极坐标表示和笛卡尔表示方法的转换。

D.random.random()方法可以生成范围在[0,1]之间的随机数。

8、下列关于shelve模块说法错误的是(___)。

A.shelve中保存的列表对象可以直接进行添加数据元素的操作。

B.shelve模块打开文件后,文件的键必须是字符串且唯一。

C.操作开始必须打开shelve,并且在修改后需要关闭它。

D.shelve模块通过构造一个简单的数据库,像操作字典一样按照键存储和获取本地的Python对象。

9、

import easygui
easygui.textbox(msg='1',title='2',text='3',codebox=0)

上述代码执行后,点击‘OK’,返回值是(____)。

A.3
B.1
C.2
D.0

10、在这里插入图片描述
补充代码实现绘制上图,横线上应该填写(_____)(可行的最小正整数)。

import turtle
t=turtle.Turtle()
for i in range(9):
    t.forward(200)
    t.right(______)
turtle.done()

答案
1、C
2、A
3、A
4、A
5、A
6、D
7、C
8、A
9、A
10、160

猜你喜欢

转载自blog.csdn.net/byakki/article/details/86226539