版权声明:@Abby-YTJ https://blog.csdn.net/weixin_43564773/article/details/85563118
1. 数值类型
1.1 数值类型包括:整数、浮点数和复数
- 整数类型:无取值范围、二进制/八进制/十进制/十六进制
- 浮点数类型:有取值范围、不确定尾数问题、科学计数法、大精确浮点运算
- 复数类型:与数学中复数概念一致、获取实部和虚部
1.2 整数类型
4种进制表示形式
- 十进制:123
- 二进制:以0b或0B开头:-0B110
- 八进制:以0o或0O开头:0o456、-0O789
- 十六进制:以0x或0X开头:0x1A、-0X2B
print(pow(2,pow(2,10)))
输出结果
179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137216
1.3 浮点数类型
- 有取值范围和精度约定
- 不确定尾数问题(浮点数在计算机中无法精确表达)
- 使用
round()
辅助浮点数运算,消除不确定尾数 - 不确定尾数一般发生在10-16左右,
round()
十分有效
- 使用
import sys
print(sys.float_info)
输出结果
sys.float_info(max=1.7976931348623157e+308, max_exp=1024, max_10_exp=308, min=2.2250738585072014e-308, min_exp=-1021, min_10_exp=-307, dig=15, mant_dig=53, epsilon=2.220446049250313e-16, radix=2, rounds=1)
print(0.1 + 0.2)
输出结果
0.30000000000000004
round(0.1 + 0.2, 1) # 第二个参数表示小数点后保留位数
输出结果
0.3
2. 数值运算函数与方法
2.1 数值运算
- 操作符:+ - * / //等
- 函数:Python解释器提供的内置函数
- 方法:数值类型在Python解释器内部都是类,类的方法
赋值增强操作符
x op y
,其中op为二元操作符,如 x += y, x -= y, x *= y, x /= y,等- Python没有x++操作
2.2 数值类型的运算关系
类型间可进行混合运算,生成结果为"最宽"类型
- 三种类型存在一种逐渐”扩展“或”变宽“的关系
- 整数->浮点数->复数
- 例如:123 + 4.0 = 127.0
2.3 数值运算函数
函数及使用 | 描述 |
---|---|
abs(x) |
绝对值,x的绝对值 |
divmod(x,y) |
商余,(x//y, x%y),同时输出商和余数 |
pow(x,y[,z] |
幂余,(x**y)%z,[]表示参数z可忽略 |
round(x[,d]) |
四舍五入,d是保留小数位数,默认值为0 |
max(x1,x2,...,xn) |
最大值,返回x1,x2,…,xn中的最大值,n不限 |
min(x1,x2,...,xn) |
最小值,返回x1,x2,…,xn中的最小值,n不限 |
类型转换函数
函数及使用 | 描述 |
---|---|
int(x) |
将x变成整数,舍弃小数部分 |
float(x) |
将x变成浮点数,增加小数部分 |
complex(x) |
将x变成复数,增加虚数部分 |
3. 整数的位运算
整数之间可以进行位运算
- 位运算按照二进制方式逐位进行
- 位运算只针对整数有作用
位运算符 | 描述 |
---|---|
x&y |
与,x与y的与操作 |
x\|y |
或,x与y的或操作 |
~x |
非,x按位取反 |
x^y |
异或,x与y的异或操作 |
x<<n |
左移,将x按位左移n位 |
x>>n |
右移,将x按位右移n位 |
101&99
输出结果
97
bin(101)
输出结果
‘0b1100101’
bin(99)
输出结果
‘0b1100011’
0b1100001
输出结果
97
~101
# 101取反,111...1110011010,首位是1,负数的补码->源码:取反+1
# 101取反二进制 '-0b1100110'
输出结果
-102
bin(-102)
输出结果
‘-0b1100110’
bin(101>>4)
输出结果
‘0b110’
bin(101<<4)
输出结果
‘0b11001010000’
4. 字符串类型
4.1 字符串:由0个或多个字符组成的有序字符序列
- 单行字符串由一对单引号或双引号表示
- 多行字符串由三个单引号或三个双引号表示
4.2 字符串的序号
- 正向递增序号
- 反向递减序号
4.3 字符串的索引和切片
使用[]获取字符串中一个或多个字符
- 索引:返回字符串中单个字符 <字符串>[M]
- 切片:返回字符串中一段字符子串 <字符串>[M:N],不含N
使用[M:N:K]根据步长对字符串切片
- <字符串>[M:N],M缺失表示至开头,N缺失表示至结尾
- <字符串>[M:N:K],根据步长K对字符串切片
"〇一二三四五六七八九十"[::-1]
输出结果
‘十九八七六五四三二一〇’
4.4 字符串的特殊字符:转义符\
转义符是表达特殊字符串或功能的方式
- 转义符表达特定字符的本意
- 转义符形成一些组合,表达一些不可打印的含义
4.5 字符串操作符
操作符及使用 | 描述 |
---|---|
x + y | 连接两个字符串 |
n * x 或 x * n | 复制n次字符串 |
x in s | 如果x是s的子串,返回True,否则返回False |
weekStr = "星期一星期二星期三星期四星期五星期六星期日"
weekId = eval(input("请输入星期数字(1-7): "))
pos = (weekId - 1) * 3
print(weekStr[pos:pos+3])
请输入星期数字(1-7): 4
星期四
weekStr = "一二三四五六日"
weekId = eval(input("请输入星期数字(1-7): "))
print("星期" + weekStr[weekId - 1])
请输入星期数字(1-7): 2
星期二
4.6 字符串操作函数与方法
字符串操作函数
函数及使用 | 描述 |
---|---|
len(x) |
长度,返回字符串x的长度 |
str(x) |
任意类型x所对应的字符串形式 |
hex(x) 或oct(x) |
整数x的十六进制或八进制小写形式字符串 |
chr(u) |
x为Unicode编码,返回其对应的字符 |
ord(x) |
x为字符,返回其对应的Unicode编码 |
Unicode编码
- 统一字符编码,即覆盖几乎所有字符的编码方式
- 从0到1114111(0x10FFFF),每个编码对应一个字符
- Python中每个字符都是Unicode编码字符
字符串处理方法
- “方法”是一个面向对象中的专有名词
- 方法特指类中的函数,调用时表现为
<a>.<b>()
方式 - 方法本身也是函数,即
<b>()
,但与<a>
有关 - Python所有类型本质上都是类,即
<a>
,存在处理方法
- 方法特指类中的函数,调用时表现为
方法及使用 | 描述 |
---|---|
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,d".split(",")
输出结果
[‘a’, ‘b’, ‘c’, ‘d’]
"a apple a day".count("a")
输出结果
4
"python".replace("n","n.org")
输出结果
‘python.org’
"python".center(20,"=")
输出结果
‘=python=’
"= python=".strip(" =np")
输出结果
‘ytho’
",".join("12345") # 主要用于字符串分隔等
输出结果
‘1,2,3,4,5’
字符串格式化方法
- 格式化是字符串处理方法中的一种,进行字符串格式表达
<模板字符串>.format(<逗号分隔的参数>)
- format()槽格式控制
: | <填充> | <对齐> | <宽度> | <,> | <.精度> | <类型> |
---|---|---|---|---|---|---|
引号符号 | 用于填充的 单个字符 |
< 左对齐 > 右对齐 ^居中对齐 |
槽设定的 输出宽度 |
数字的千位 分隔符 |
浮点数小数 精度 或字符串最大 输出长度 |
整数类型 b,c,d,o,x,X 浮点数类型 e,E,f,% |
"{}:计算机{}的CPU占用率为{}%".format("2018-10-10","C",10)
输出结果
‘2018-10-10:计算机C的CPU占用率为10%’
"{1}:计算机{0}的CPU占用率为{2}%".format("2018-10-10","C",10)
输出结果
‘C:计算机2018-10-10的CPU占用率为10%’
"{0:20}".format("PYTHON")
输出结果
'PYTHON ’
"{0:=^20}".format("PYTHON")
输出结果
‘=PYTHON=’
"{0:*>20}".format("PYTHON")
输出结果
‘**************PYTHON’
"{0:,.2f}".format(12345.6789)
输出结果
‘12,345.68’
"{0:b},{0:c},{0:d},{0:o},{0:x},{0:X}".format(425)
输出结果
‘110101001,Ʃ,425,651,1a9,1A9’
"{0:e},{0:E},{0:f},{0:%}".format(3.14)
输出结果
‘3.140000e+00,3.140000E+00,3.140000,314.000000%’
5. 字节串类型
5.1 字节串:由0个或多个字节组成的有序字节序列
- 单行字节串由一对单引号或双引号表示
b'abcdef123455
- 多行字节串由三个单引号或三个双引号表示
- 字节串中只允许存在ASCII字符
5.2 字节串的序号
- 正向递增序号
- 反向递减序号
5.3 字节串的索引和切片
使用[]获取字节串中一个或多个字符
- 索引:返回字节串中单个字符 <字节串>[M]
- 切片:返回字节串中一段字节子串 <字节串>[M:N],不含N
使用[M:N:K]根据步长对字节串切片
- <字节串>[M:N],M缺失表示至开头,N缺失表示至结尾
- <字节串>[M:N:K],根据步长K对字节串切片
b'abcde1234'[1]
b'abcde1234'[1:5]
输出结果
b’bcde’
5.4 字节串操作函数与方法
字节串操作函数
函数及使用 | 描述 |
---|---|
len(x) |
长度,返回字节串x的长度 |
字节串处理方法
方法及使用 | 描述 |
---|---|
bytes.lower() 或bytes.upper() |
返回字节串的副本,全部字节小写/大写 |
bytes.split(sep=None) |
返回一个列表,由str根据sep被分隔的部分组成 |
bytes.count(sub) |
返回子串sub在str中出现的次数 |
bytes.center(width[,fillbyte]) |
字节串bytes根据宽度width居中,fillbyte可选 |
bytes.strip(bytes) |
去掉在其左侧和右侧bytes中列出的字符 |
bytes.replace(old,new) |
返回字节串str副本,所有old子串被替换为new |
b"A,B,C".split(b",")
输出结果
[b’A’, b’B’, b’C’]
b"an apple a day".count(b"a")
输出结果
4