Python 数字类型及操作
- 整数类型
- 浮点数类型
- 复数类型
- 数值运算操作符
- 数值运算函数
整数类型
与数学中整数的概念一致
可正可负,没有取值范围限制
pow(x,y) 函数:计算 x 的 y 次方,想算多大算多大
4 种进制表示形式
- 十进制:1010, 99, -217
- 二进制,以0b或0B开头:0b010, -0B101
- 八进制,以0o或0O开头:0o123, -0O456
- 十六进制,以0x或0X开头:0x9a, -0X89
浮点数类型
与数学中实数的概念一致
- 带有小数点及小数的数字
- 取值范围数量级约 -10 的 307 次方 至 10 的 308 次方,精度数量级 10 的 -16 次方
浮点数间运算存在不确定尾数,不是bug。原因:机器用 53 位二进制表示小数部分,约 10 的 -16 次方,可以无限接近,但不完全相同,当转换为十进制表示时,就可能存在不确定尾数。
round(x, d):对 x 四舍五入,d 是小数截取位数
不确定尾数一般发生在 10 的 -16 次方左右,round() 十分有效
浮点数可以采用科学计数法表示
- 使用字母e或E作为幂的符号,以10为基数
- 例如:4.3e-3 值为0.0043,9.6E5 值为960000.0
复数类型
与数学中复数的概念一致
如果 x 的 2 次方 = -1,那么 x 的值什么?
- 定义 j = −𝟏 开根号 ,以此为基础,构建数学体系
- a+bj 被称为复数,其中,a 是实部,b 是虚部
数值运算操作符
操作符及使用 | 描述 |
---|---|
x + y | 加,x与y之和 |
x – y | 减,x与y之差 |
x * y | 乘,x与y之积 |
x / y | 除,x与y之商 10/3结果是3.3333333333333335 |
x // y | 整数除,x与y之整数商 10//3结果是3 |
+ x | x本身 |
- y | x的负值 |
x % y | 余数,模运算 10%3结果是1 |
x ** y | 幂运算,x的y次幂,当y是小数时,开方运算10**0.5结果是根号10 |
整数与浮点数进行运算时,结果为浮点数
数值运算函数
- abs(x) 绝对值,x的绝对值
- 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
- max(x1,x2, … ,xn) 最大值,返回 x1,x2, … ,xn 中的最大值,n不限
- min(x1,x2, … ,xn) 最小值,返回 x1,x2, … ,xn 中的最小值,n不限
- int(x) 将 x 变成整数,舍弃小数部分, int(123.45) 结果为 123; int(“123”) 结果为 123
- float(x) 将 x 变成浮点数,增加小数部分 float(12) 结果为 12.0; float(“1.23”) 结果为 1.23
- complex(x) 将 x 变成复数,增加虚数部分 complex(4) 结果为 4 + 0j
工作日的力量示例
1 | dayup = 1.0 |
字符串类型及操作
- 字符串类型的表示
- 字符串操作符
- 字符串处理函数
- 字符串处理方法
- 字符串类型的格式化
字符串类型
字符串由一对单引号或一对双引号表示
由一对单引号或双引号表示,仅表示单行字符串
由一对三单引号或三双引号表示,可表示多行字符串
使用[ ]获取字符串中一个或多个字符
- 索引:返回字符串中单个字符 <字符串>[M]
- 切片:返回字符串中一段字符子串 <字符串>[M: N]
字符串切片高级用法
- <字符串>[M: N],M 缺失表示至开头,N 缺失表示至结尾
- <字符串>[M: N: K],根据步长K对字符串切片
1 | "〇一二三四五六七八九十"[1:8:2] # "一三五七" |
字符串的特殊字符
转义符 \
1 | print("这里有个双引号(\")") # 这里有个双引号(") |
转义符形成一些组合,表达一些不可打印的含义
- “\b” 回退
- “\n” 换行(光标移动到下行首)
- “\r” 回车(光标移动到本行首)
字符串操作符
操作符及使用 | 描述 |
---|---|
x + y | 连接两个字符串 x 和 y |
n x 或 x n | 复制 n 次字符串 x |
x in s | 如果 x 是 s 的子串,返回 True,否则返回 False |
处理字符串函数
函数及使用 | 描述 |
---|---|
len(x) | 长度,返回字符串x的长度 len(“一二三456”) 结果为 6 |
str(x) | 任意类型 x 所对应的字符串形式 |
hex(x) 或 oct(x) | 整数 x 的十六进制或八进制小写形式字符串 |
chr(u) | x 为 Unicode 编码,返回其对应的字符 |
ord(x) | x 为字符,返回其对应的 Unicode 编码 |
字符串处理方法
方法及使用 | 描述 |
---|---|
str.lower() 或 str.upper() | 返回字符串的副本,全部字符小写/大写 |
str.split(sep=None) | 返回一个列表,由 str 根据 sep 被分隔的部分组成 |
str.count(sub) | 返回子串 sub 在 str 中出现的次数,”an apple a day”.count(“a”) 结果为 4 |
str.replace(old, new) | 返回字符串 str 副本,所有 old 子串被替换为 new |
str.center(width[,fillchar]) | 字符串 str 根据宽度 width 居中,fillchar 可选 “python”.center(20,”=”) 结果为 ‘=======python=======’ |
str.strip(chars) | 从 str 中去掉在其左侧和右侧 chars 中列出的字符 “= python= “.strip(“ =np”) 结果为 “ytho” |
str.join(iter) | 在 iter 变量除最后元素外每个元素后增加一个 str “,”.join(“12345”) 结果为 “1,2,3,4,5” #主要用于字符串分隔等 |
字符串格式化
字符串格式化使用 format() 方法,用法如下:
<模板字符串>.format(<逗号分隔的参数>)
1 | "{}:计算机{}的CPU占用率为{}%".format("2018-10-10","C",10) |
{} 表示槽
槽内部对格式化的配置方式:{ <参数序号> : <格式控制标记>}
:
引导符号- <填充> 用于填充的单个字符
1 | "{0:=^6}".format("PYTHON") # ===PYTHON=== |
- <对齐> < 左对齐 > 右对齐 ^ 居中对齐
1 | "{0:=>5}".format("BIT") # =====BIT |
- <宽度> 槽设定的输出宽度,只有在格式的字符串宽度小于设定宽度时有效
1 | "{:=^5}".format("BIT") # =BIT= |
- <,> 数字的千位分隔符
1 | "{0:,}".format(12345) # 12,345 |
- <.精度> 浮点数小数精度或字符串最大输出长度
1 | "{0:,.2f}".format(12345.678) # 12,345.68 |
- <类型> 整数类型 b, c, d, o, x, X 浮点数类型 e, E, f, %
1 | "{0:b},{0:c},{0:d},{0:o},{0:x},{0:X}".format(425) # 110101001,Ʃ,425,651,1a9,1A9 |
time 库的使用
时间获取
time() 获取当前时间戳,即计算机内部时间值,浮点数
1
time.time() # 1539334105.576661
ctime() 获取当前时间并以易读方式表示,返回字符串
1
time.ctime() # Fri Oct 12 16:49:35 2018
gmtime() 获取当前时间,表示为计算机可处理的时间格式
1
2time.gmtime()
# time.struct_time(tm_year=2018, tm_mon=10, tm_mday=12, tm_hour=8, tm_min=50, tm_sec=26, tm_wday=4, tm_yday=285, tm_isdst=0)
时间格式化
strftime(tpl, ts) tpl是格式化模板字符串,用来定义输出效果;ts是计算机内部时间类型变量
1
2t = time.gmtime()
time.strftime("%Y-%m-%d %H:%M:%S", t) # 2018-10-12 08:51:59strptime(str, tpl) str是字符串形式的时间值;tpl是格式化模板字符串,用来定义输入效果
1
2
3timeStr = '2018-11-11 11:11:11'
time.strptime(timeStr, "%Y-%m-%d %H:%M:%S")
# time.struct_time(tm_year=2018, tm_mon=11, tm_mday=11, tm_hour=11, tm_min=11, tm_sec=11, tm_wday=6, tm_yday=315, tm_isdst=-1)
格式化控制符
格式化字符串 | 日期/时间说明 | 值范围和实例 |
---|---|---|
%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 |
%h | 小时(12h制) | 01~12,例如:7 |
%p | 上/下午 | AM, PM,例如:PM |
%M | 分钟 | 00~59,例如:26 |
%S | 秒 | 00~59,例如:26 |
程序计时
perf_counter() 返回一个 CPU 级别的精确时间计数值,单位为秒,由于这个计数值起点不确定,连续调用差值才有意义
1
2
3start = time.perf_counter() # 28911.429803793
end = time.perf_counter() # 28921.430324547
end - start # 10.000520754001627sleep(s) s 拟休眠的时间,单位是秒,可以是浮点数
1
2
3def wait():
time.sleep(3.3)
wait() # 程序将等待3.3秒后再退出
文本进度条示例
1 | import time |