八、数字类型
1、整数(integers)
Python的除法就算能被整除,也会产生带小数的结果。小数在Python中是以浮点数的形式存在的。
比如:
>>>6/2
3.0
2、浮点数(floating point numbers)
Python的浮点数是具有误差的,因为Python和C语言一样,都是采用IEEE754的标准来存储浮点数的,所以会产生一定精度上的误差。
>>>0.1 + 0.2
0.30000000000000004
>>>i=0
>>>while i<1:
i = i+0.1
print(i)
0.1
0.2
0.30000000000000004
0.4
0.5
0.6
0.7
0.7999999999999999
0.8999999999999999
0.9999999999999999
1.0999999999999999
3、decimal模块 - 十进制
>>>import decimal
>>>a = decimal.Decimal('0.1')
>>>b = decimal.Decimal('0.2')
>>>print(a + b)
0.3
>>>c = decimal.Decimal('0.3')
>>>a + b ==c
Ture
4、复数(complex numbers)
复数包含了一个实部和一个虚部。实部和虚部都是以浮点数的形式存放的。
用real来获取实部的数值。
用imag来获取虚部的数值
>>>1 + 2j
(1+2j)
>>>x = 1 + 2j
>>>x.real
1.0
>>>x.imag
2.0
5、数字运算
操作 | 含义 |
---|---|
x+y | x加y的结果 |
x-y | x减y的结果 |
x*y | x乘以y的结果 |
x/y | x除以y的结果 |
x//y | x除以y的结果(地板除),地板除确保两个数相除的结果是个整数,如果不是整数就向下取整,即取比目标结果小的最大整数。 |
x%y | x除以y的余数 x == ( x // y ) * y + ( x % y ) |
-x | x的相反数 |
+x | x本身 |
abs(x) | x的绝对值 |
int(x) | 将x转换成整数 |
float(x) | 将x转换成浮点数 |
complex(re,im) | 返回一个复数,re是实部,im是虚部 |
c.conjugate() | 返回c的共轭复数 |
divmod(x,y) | 返回(x//y,x%y) |
pow(x,y) | 计算x的y次方 |
x ** y | 计算x的y次方 |
地板除举例:
>>> 3/2
1.5
>>>3//2
1
>>>-3//2
-2
余数举例:
>>>3%2
1
divmod(x,y)举例
>>>divmod(3 , 2)
(1 , 1)
九、布尔类型
1、bool函数
使用bool内置函数可以直接给出True或者False的结果。
(1)字符串:只有空字符串的结果是False,其他都是True。
(2)数值:只有等值于0的结果才是False,其他都是True。
(3)结果为False的情况:
1)定义为False的对象:None和False
2)值为0的数字类型:0,0.0,0j,Decimal(0),Fraction(0,1)
3)空的序列和集合:‘’,(),[],{},set(),range(0)
2、条件:
条件就是真假的布尔类型结果,且条件是比较运算符计算之后的结果。
3、1是真True,0是假False。
4、逻辑运算符
运算符 | 含义 |
---|---|
and | 左边和右边同时为True,结果为Ture |
or | 左边或右边其中一个为True,结果为Ture |
not | 如果操作数为True,结果为False;如果操作数为False,结果为True |
5、真值测试
Python中任何对象都能直接进行(测试该对象的布尔类型值为True或False),用于if或者while语句的条件判断,也可以做为布尔逻辑运算符的操作数。
6、短路逻辑
短路逻辑的核心思想:从左往右,只有当第一个操作数的值无法确定逻辑运算的结果时,才对第二个操作数进行求值。
例题:
((not 1) or (0 and 1) or (3 and 4) or (5 and 6) or (7 and 8 and 9)) == 4
False or 0 or 4 or 6 or 9
7、运算符优先级
Python的运算符优先级,运算表达式时,执行的先后顺序,先执行具有较高优先级的运算符,然后再执行较低优先级的运算符。
以下优先级,从低到高,最下面的是最高优先级。
优先级 | 运算符 | 描述 |
1 | lambda | Lambda表达式 |
2 | if - else | 条件表达式 |
3 | or | 布尔“或” |
4 | and | 布尔“与” |
5 | not x | 布尔“非” |
6 | in , not in , is , is not ,< ,<= , > , >=, !=, == | 成员测试,同一性测试,比较 |
7 | | | 按位或 |
8 | ^ | 按位异或 |
9 | & | 按位与 |
10 | << , >> | 移位 |
11 | + , - | 加法,减法 |
12 | *,@,/,//,% | 乘法,矩阵乘法,除法,地板除,取余数 |
13 | +x,-x,~x | 正号,负号,按位翻转 |
14 | ** | 指数 |
15 | await x | Await表达式 |
16 | x[index],x[index,index],x(arguments…), x.attribute | 下标,切片,函数调用,属性引用 |
17 | (expressions…),[expressions…],{key: value…},{expressions…} | 绑定或元祖显示,列表显示,字典显示,集合显示 |