【第3周笔记】基本数据类型
课程笔记和选择题
Notes
整数类型
与数学中整数的概念一致,可正可负,没有取值范围限制
pow(x,y) 函数:计算 $ x^y $ ,想算多大算多大
四种进制 | 表现形式 | 举例 |
---|---|---|
十进制 | 直接表示 | 1010,99,-217 |
二进制 | 以 0b 或 0B 开头 | 0b010,-0B101 |
八进制 | 以 0o 或 0O 开头 | 0o123,-0O456 |
十六进制 | 以 0x 或 0X 开头 | 0x9a,-0X89 |
浮点数类型
取值范围数量级约 $ -10^{307} $ 到 $ 10^{308} $ ,精度数量级 $ 10^{-16} $
注意:浮点数间运算存在不确定尾数,不是 bug
round(x, d):对 x 四舍五入,d 是小数截取位数
浮点数间运算与比较用 round() 函数辅助
不确定尾数一般发生在 $ 10^{-16} $ 左右,round() 十分有效
浮点数可以采用科学计数法表示,如 aeb:表示 $ a×10^b $
例如:4.3e-3 值为 0.0043,9.6E5 值为 960000.0
复数类型
复数实例:z = 1.23e-4+5.6e+89j,z.real 获得实部,z.imag 获得虚部
数字类型的关系
类型间可进行混合运算,生成结果为“最宽”类型,三种类型存在一种逐渐“扩展”或“变宽”的关系:整数 → 浮点数 → 复数,例如:123+4.0=127.0(整数+浮点数=浮点数)
数值运算函数 | 描述 | 举例 | 结果 |
---|---|---|---|
abs(x) | 绝对值,x 的绝对值 | abs(-10.01) | 10.01 |
divmod(x,y) | 商余(x//y,x%y)同时输出商和余数 | divmod(10, 3) | (3, 1) |
pow(x, y[, z]) | 幂余,(x**y)%z,参数 z 可省略 | pow(3, pow(3, 99), 10000) | 4587 |
round(x[, d]) | 四舍五入,d 是保留小数位数,默认值为 0 | round(-10.123, 2) | -10.12 |
max( $ x_1,x_2, … ,x_n $ ) | 最大值,返回 $ x_1,x_2, … ,x_n $ 中的最大值,n 不限 | max(1, 9, 5, 4, 3) | 9 |
min( $ x_1,x_2, … ,x_n $ ) | 最小值,返回 $ x_1,x_2, … ,x_n $ 中的最小值,n 不限 | min(1, 9, 5, 4, 3) | 1 |
int(x) | 将 x 变成整数,舍弃小数部分 | int(123.45) 或 int(“123”) | 123 |
float(x) | 将 x 变成浮点数,增加小数部分 | float(12) | 12.0 |
complex(x) | 将 x 变成复数,增加虚数部分 | complex(4) | 4 + 0j |
字符串
字符串有两类共四种表示方法:一对单引号、一对双引号、一对单双引号、一对三单或三双引号(表示多行字符串)
x in s:如果 x 是 s 的子串,返回 True,否则返回 False
字符串处理函数 | 描述 | 举例 |
---|---|---|
len(x) | 长度,返回字符串 x 的长度 | len(“一二三456”) 结果为 6 |
str(x) | 任意类型 x 所对应的字符串形式 | str(1.23) 结果为 “1.23”,str([1,2]) 结果为 “[1,2]” |
hex(x) 或 oct(x) | 整数x的十六进制或八进制小写形式字符串 | hex(425) 结果为 “0x1a9”,oct(425) 结果为 “0o651” |
chr(u) | x 为 Unicode 编码,返回其对应的字符 | |
ord(x) | x 为字符,返回其对应的 Unicode 编码 |
字符串处理方法 | 描述 |
---|---|
str.lower() 或 str.upper() | 返回字符串的副本,全部字符小写/大写 |
str.split(sep=None) | 返回一个列表,由 str 根据 sep 被分隔的部分组成 |
str.count(sub) | 返回子串 sub 在 str 中出现的次数 |
str.replace(old, new) | 返回字符串 str 副本,所有 old 子串被替换为 new |
str.center(width[,fillchar]) | 字符串 str 根据宽度 width 居中,fillchar 可选 |
str.strip(chars) | 从 str 中去掉在其左侧和右侧 chars 中列出的字符 |
str.join(iter) | 在 iter 变量除最后元素外每个元素后增加一个 str |
举例 | 结果 |
---|---|
“AbCdEfGh”.lower() | “abcdefgh” |
“A,B,C”.split(",") | [‘A’,‘B’,‘C’] |
“an apple a day”.count(“a”) | 4 |
“python”.replace(“n”,“n123.io”) | “python123.io” |
“python”.center(20,"=") | ‘=======python=======’ |
“= python= “.strip(” =np”) | “ytho” |
“,".join(“12345”) | “1,2,3,4,5” #主要用于字符串分隔等 |
Unicode 编码
统一字符编码,即覆盖几乎所有字符的编码方式
从 0 到 1114111(0x10FFFF)空间,每个编码对应一个字符
Python 字符串中每个字符都是 Unicode 编码字符
for i in range(1000):
print(chr(9800+i),end="") # 输出从星座(9800 是白羊)开始的特殊符号



time 库
time 库是 Python 中处理时间的标准库
时间获取
时间获取函数 | 描述 | 用法 | 结果 |
---|---|---|---|
time() | 获取当前时间戳,即计算机内部时间值,浮点数 | time.time() | 1516939876.6022282 |
ctime() | 获取当前时间并以易读方式表示,返回字符串 | time.ctime() | ‘Fri Jan 26 12:11:16 2018’ |
gmtime() | 获取当前时间,表示为计算机可处理的时间格式 | time.gmtime() | time.struct_time(tm_year=2018, tm_mon=1,……, tm_yday=26, tm_isdst=0) |
时间格式化函数
- strftime(tpl, ts)
- tpl 是格式化模板字符串,用来定义输出效果
- ts 是计算机内部时间类型变量
>>>t = time.gmtime() >>>time.strftime("%Y-%m-%d %H:%M:%S",t) '2018-01-26 12:55:20'
- strptime(str, tpl)
- str 是字符串形式的时间值
- tpl 是格式化模板字符串,用来定义输入效果
>>>timeStr = '2018-01-26 12:55:20' >>>time.strptime(timeStr, "%Y-%m-%d %H:%M:%S") time.struct_time(tm_year=2018, tm_mon=1, tm_mday=26, tm_hour=4, tm_min=11, tm_sec=16, tm_wday=4, tm_yday=26, tm_isdst=0)

格式化控制符 | 日期/时间说明 | 值范围 | 实例 |
---|---|---|---|
%Y | 年份 | 0000~9999 | 1900 |
%m | 月份 | 01~12 | 10 |
%B | 月份名称 | January~December | April |
%b | 月份名称缩写 | Jan~Dec | Apr |
%d | 日期 | 01~31 | 25 |
%A | 星期 | Monday~Sunday | Wednesday |
%a | 星期缩写 | Mon~Sun | Wed |
%H | 小时(24h 制) | 00~23 | 12 |
%I | 小时(12h 制) | 01~12 | 7 |
%p | 上/下午 | AM, PM | PM |
%M | 分钟 | 00~59 | 26 |
%S | 秒 | 00~59 | 26 |
程序计时
- perf_counter()
- 返回一个 CPU 级别的精确时间计数值,单位为秒
- 由于这个计数值起点不确定,连续调用差值才有意义
>>>start = time.perf_counter()
318.66599499718114
>>>end = time.perf_counter()
341.3905185375658
>>>end - start
22.724523540384666
- sleep(s):s 拟休眠的时间,单位是秒,可以是浮点数
>>>def wait():
time.sleep(3.3)
>>>wait() # 程序将等待 3.3 秒后再退出
测验 3
pow(x, 0.5) 能够计算 x 的平方根,计算负数的平方根将产生:D
A. 无输出
B. ValueError错误
C. 程序崩溃
D. 复数
>>> pow(-1, 0.5)
(6.123233995736766e-17+1j)
以下关于字符串 .strip() 方法功能说明正确的是:D
A. 替换字符串中特定字符
B. 连接两个字符串序列
C. 按照指定字符分割字符串为数组
D. 去掉字符串两侧指定字符
“去掉字符串两侧指定字符"对应功能是 .strip()
“按照指定字符分割字符串为数组"对应功能是 .split()
“替换字符串中特定字符"对应功能是 .replace()
“连接两个字符串序列"对应功能是 + 操作符
字符串是一个连续的字符序列,哪个选项可以实现打印字符信息的换行?C
A. 使用“\换行”
B. 使用空格
C. 使用\n
D. 使用转义符\
- 换行符 \n,与 C 语言中一致。
val=pow(2,1000),请用一行代码返回val结果的长度值。D
A. len(val)
B. 其他答案均不正确
C. len(pow(2,1000))
D. len(str(val))
- len(str(val)) 首先通过 str(val) 将数字类型 val 变成字符串,再通过 len() 获得字符串长度,即 val 的数字个数。
下面关于 time 库引用不正确的是?C
A. from time import *
B. from time import strftime
C. from * import time
D. import time
- from * import time 应该是: from time import *
哪个选项不是 Python 语言的整数类型?D
A. 88
B. 0x9a
C. 0B1010
D. 0E99
十进制:一般表示
二进制:0b 或 0B 开头
八进制:0o 或 0O 开头
十六进制:0x 或 0X 开头
没有0E开头
关于整数类型的 4 种进制表示,哪个选项的描述是正确的?C
A. 二进制、四进制、十进制、十六进制
B. 二进制、四进制、八进制、十六进制
C. 二进制、八进制、十进制、十六进制
D. 二进制、四进制、八进制、十进制
- Python 不支持四进制整数
哪个选项是 Python 语言 % 运算符的含义?D
A. x 与 y 之商
B. x 的 y 次幂
C. x 与 y 的整数商
D. x 与 y 之商的余数
- % 是取余数,与 C 语言相同。
- 哪个选项是下面代码的执行结果?A
name="Python语言程序设计课程"
print(name[0],name[2:-2],name[-1])
A. P thon语言程序设计 程
B. P thon语言程序设计课 课
C. P thon语言程序设计课 程
D. P thon语言程序设计 课
- s[N:M] 表示对字符串 s 的切片操作,从 N 到 M,但不包含 M
- 哪个选项是下面代码的执行结果?D
s='PYTHON'
print("{0:3}".format(s))
A. PYTHON
B. PYT
C. PYTH
D. PYTHON
- {0:3} 表示输出的宽度是 3,但如果字符串超过长度 3,则以字符串长度显示。