Python基本数字类型
第一部分 数字类型
1.1 数字类型的组成
1.1.1 整数——不同进制的转换
- 默认输入十进制
- 二进制0b、八进制0o、十六进制0x
16 == 0b10000 == 0o20 == 0x10
True
- 十进制与其他进制的转换
a = bin(16) # 转二进制
b = oct(16) # 转八进制
c = hex(16) # 转十六进制
print(a,b,c)
0b10000 0o20 0x10
注意:转换后的结果为字符串类型。
a == b == c
False
type(a)
str
- 其他进制转换为十进制
d = int(a,2)
e = int(b,8)
f = int(c,16)
print(d,e,f)
16 16 16
1.1.2 浮点数——不确定性
- 不确定小数问题
(0.1+0.2) == 0.3
False
0.1+0.2
0.30000000000000004
计算机采用二进制来表示浮点小数部分
-
部分小数不能用二进制完全表示
-
通常情况下不会影响计算速度
0.1+0.7
0.7999999999999999
- 四舍五入
a = 0.3
print(a)
0.3
b = round(a, 1)
print(b)
b == 0.3
0.3
True
1.1.3 复数——a+bj
-
j/J无关大小写
-
虚部系数为1,需要显式写出
2+1j
(2+1j)
1.2 数字运算操作符(a操作符b)
- 加减乘除
(1+2-3*4)/5
-1.8
- 取反
x = 1
-x
-1
- 乘方运算
2**3
8
- 整数商 和 模运算
13//5
2
13%5
3
- 整数与浮点数运算结果为浮点数
- 除法运算的结果是浮点数
8/4
2.0
1.3 数字运算操作函数 function(x,…)
- 求绝对值 abs()
abs(-5)
5
abs(3+4j) #平方和取根号
5.0
- 幂次方 pow(x,n)
pow(2,5) # 2的5次幂
32
pow(2,5,3) # 2的5次幂对3求余数
2
- 四舍五入 round(x,n)
a = 3.1415926
print(round(a))
print(round(a,2))
3
3.14
- 整数商和模运算 divmod(x,y) 等价于(x/y,x%y)
divmod(14,3)
(4, 2)
- 序列最值 max() min()
a = (1,2,3,4,5)
print("max:",max(a))
print("min:",min(a))
max: 5
min: 1
- 求和sum()
sum((1,2,3))
6
- 借助科学计算库
import math # 导入库
math.exp(1) # 指数运算 e^x
2.718281828459045
math.log2(2) # 对数运算
1.0
math.sqrt(4) # 开平方
2.0
import numpy as np
a = [1,2,3,4,5]
np.mean(a) #求均值
3.0
np.median(a) #求中位数
3.0
np.std(a) #求标准差
1.4142135623730951
第二部分 字符串类型
2.1 字符串的表达
- 用"" 或 ''括起来的任意字符
- 若字符串中存在的单双引号
- 双中有单/单中有双
print("I'm uzi")
print('"uzi" is good')
I'm uzi
"uzi" is good
- 转义符——\
print("\"uzi\" is good")
"uzi" is good
print("u\
zi")
uzi
2.2 字符串的性质
2.2.1 字符串的索引
a = "My name is uzi"
变量名[位置编号]
- 正向索引——从零开始递增
print(a[0])
M
- 反向索引——从 -1 开始递减
print(a[-1])
i
2.2.2 字符串的切片
变量名[开始位置:结束位置:切片间隔]
- 间隔不设置默认为1
- 切片范围不包含结束位置 [前闭后开)
a ="Python"
print(a[0:3])
Pyt
print(a[0:3:2])
Pt
- 起始位置是0 可以省略
- 结束位置省略,代表可以取到最后一个字符
- 可以使用反向索引
a = "Python"
print(a[:3])
print(a[:])
print(a[-1:])
Pyt
Python
n
反向位置切片
- 起始位置是 -1 可以省略
- 结束位置省略,代表可以取到第一个字符
a = "1234567"
print(a[-1:3:-1])
765
2.3 字符串操作符
2.3.1 字符串的拼接
- 字符串1+字符串2
a = "My name"
b = " is uzi"
a+b
'My name is uzi'
2.3.2 字符串的成倍复制
- 字符串n n字符串
print(a*3)
uzi is the best ADCuzi is the best ADCuzi is the best ADC
2.3.2 成员运算
- 子集in全集 任何一个连续的切片都是原字符的子集
a = "uzi is the best ADC"
"uzi" in a
True
- 遍历字符串字符 for 字符 in 字符串
for a in "Python":
print(a)
P
y
t
h
o
n
2.4 字符串处理函数
2.4.1 字符串的长度
- 所含字符的个数
a = "Python"
len(a)
6
2.4.2 字符编码
将中文字符、英文字符、数字、特殊字符等都转化为计算机可识别的二进制数
- 每个单一字符对应一个唯一的互不重复的二进制编码
- Python 使用的是 UNICODE 编码
将字符转化为 Unicode码——ord(字符)
print(ord("1"))
49
将 Unicode码转化为字符——chr(Unicode码)
print(chr(49))
1
2.5 字符串的处理方法
2.5.1 字符串的分割——字符串.split(分割字符)
- 返回一个列表
- 原字符串不变
RNG = "ming uzi mlxg"
RNG_list = RNG.split(" ")
print(RNG_list)
print(RNG)
['ming', 'uzi', 'mlxg']
ming uzi mlxg
2.5.2 字符串的聚合——“聚和字符”.join(可迭代数据类型)
- 可迭代数据类型:字符串、列表
r = "rng"
r_list = ",".join(r)
print(r_list)
r,n,g
- 序列类型的元素必须是字符类型
r = ["r","n","g"]
"-".join(r)
'r-n-g'
2.5.3 删除两端特定字符——字符串.strip(删除字符)
- strip 从两侧搜索遇到指定字符删除
- lstrip 左删除
- rstrip 右删除
r = " rng "
print(r.strip(" "))
rng
2.5.4 字符串的替换——字符串.replace
r = "rng is good"
r.replace("rng","r")
'r is good'
2.5.5 字符串统计——字符串.count
r = "rng is good"
print(r.count("g"))
2
2.5.6 字符串字母大小写
- .upper()
- .lower()
r = "rng"
r.upper()
'RNG'
R = "RNG"
R.lower()
'rng'
第三部分 布尔类型 TRUE or False
3.1 逻辑运算的结果
a = 10
print(a ==7)
False
- any all
print(any([1,0]))
print(all([1,0]))
True
False
3.2 指示条件
n = 100
while True:
m = eval(input("请输入一个数: "))
if m == n:
print("你猜对啦!")
break
elif m > n:
print("再小点儿?")
else:
print("再大点儿?")
请输入一个数: 1
再大点儿?
请输入一个数: 101
再小点儿?
请输入一个数: 100
你猜对啦!
3.3 作为掩码
import numpy as np
x = np.array([[1,3,2,5,7]])
print(x>3)
x[x>3]
[[False False False True True]]
array([5, 7])
第四部分 类型判别和类型转换
4.1 类型判别
- type(变量)
age = 16
name = "uzi"
print(type(age))
print(type(name))
<class 'int'>
<class 'str'>
- isinstance(变量,预判类型) 承认继承
- 变量类型是预判类型的子类型,则为真,否则为假
print(isinstance(age,int))
True
print(isinstance(age,object))
True
- .isdigit() 是否只有数字
age = "16"
age.isdigit()
True
- .isalpha() 是否只有字母组成
name = "uzi"
name.isalpha()
True
- .isalnum() 是否只有数字和字母组成
r = "uziis16"
r.isalnum()
True
4.2 类型转换
- 数字类型转字符串 str(数字类型)
age =16
print("uzi is "+str(age))
uzi is 16
- 仅有数字组成的字符串可以转数字 int() float() eval()