第一部分 数字类型
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
注意:上述转换后结果为字符串类型
print(a == b == c)
False
print(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 浮点数——不确定性
- 不确定小数问题
print((0.1+0.2) == 0.3)
False
print(0.1+0.2)
0.30000000000000004
为什么会出现上面这样的问题呢?
计算机采用二进制小数来表示浮点数的小数部分
-
部分小数不能用二进制小数完全表示
二进制 十进制 0.00011001100110011001 0.09999942779541016 0.0011001100110011 0.1999969482421875 0.01001100110011001 0.29999542236328125 0.01100110011001101 0.40000152587890625 0.1 0.5 -
通常情况下不会影响计算精度
print(0.1 + 0.7)
0.7999999999999999
- 可以使用round或者%.xf来获得解
a = 3*0.1
print(a)
0.30000000000000004
b = round(a, 1)
print(b)
print(b == 0.3)
0.3
True
1.1.3 复数——a+bj
- 大写J或小写j均可
3+4j
2+5J
(2+5j)
- 虚部系数为1时,需要显式写出
2+1j
1.2 数字运算操作符(a 操作符 b)
- 加减乘除运算 + - / *
print((1+3-4*2)/5)
-0.8
- 取反 -
x = 1
print(-x)
-1
- 乘方运算 **
print(2**3)
8
- 整数商// 和 模运算%
print(13//5) # 整数商
2
13 % 5 # 模运算 余数 13=2*5+3
3
几点说明
- 整数与浮点数运算结果是浮点数
- 除法运算的结果是浮点数
print(1+1.5)
2.5
print(2/5)
0.4
print(8/4)
2.0
1.3 数字运算操作函数 function(x, …)
- 求绝对值 abs()
abs(-5)
5
abs(3+4j) # 对复数a+bj 执行的是求模运算(a^2+b^2)^0.5
5.0
- 幂次方 pow(x,n)
pow(2, 5) # pow(x,n) x的n次方 等价于x**n
32