python 数值类型,数值之间的运算,布尔类型,逻辑运算符,短路逻辑,优先级
1.浮点数
1.1python中的浮点数和C语言一样有误差
0.1+0.2
0.30000000000000004
0.3 == 0.1 + 0.2
False
那如何精确的计算浮点数?
需要借助 decimal(十进制的)模块
import decimal
a = decimal.Decimal('0.1') # 要用字符串表示数值,为了精准!!!
b = decimal.Decimal('0.2')
print(a + b)
0.3
2.复数
复数包括实部和虚部
1 + 2j
(1+2j)
x = 1 + 2j
x.real #输出实数部分
1.0
x.imag #输出虚数部分
2.0
3.数值间的运算

- x / y 不是C中的取整,而是 3 / 2 = 1.5
而 // 为 取比目标结果小的最大整数 (向下取整) eg : -3 // 2 = -2 - abs(复数) 结果为一个复数的模
![]()
![]()
4.布尔
1 == True
True
0 == False
True
True - False
1
布尔类型就是特殊的整形
4.1 定义变量存储布尔类型的值
bool_1 = True # True 和 False 都要首字母大写
bool_2 = False
print(f"bool_1变量的内容:{bool_1}, 类型是:{type(bool_1)}")
"""
运行结果:bool_1变量的内容:True, 类型是:<class 'bool'>
"""
4.逻辑运算符
和其他编程语言不同
python为 and or not
- python 中任何对象都能直接进行真值测试(测试该对象的布尔类型为True或者False),用于if或者whle语句的条件判断,也可以作为布尔逻辑运算符的操作数。
3 and 4
4
4 or 5
4
"MONEY" and "LOVE"
'LOVE'
"MONEY" or "2500"
'MONEY'
(not 1) or (0 or 1) or (3 and 4) or (5 and 6) or (7 and 8 and 9)
1
上述情况是为什么呢?
这是因为逻辑运算符遵循短路原则。短路逻辑的核心:从左往右,只有当第一个操作数的值无法确定逻辑运算结果的时候,才对第二个操作数进行求值。
3 and 4 #从左往右,3是True,还要继续判断右边的布尔类型才能出结果,所以右边的结果直接影响了最后的结果,所以python直接把右边的值直接扔出来了
4 or 5 #由于or运算符只需有一个是True,从左往右,4是True,所以不用判断右边的布尔类型,就把4扔出来了。
(not 1) or (0 or 1) or (3 and 4) or (5 and 6) or (7 and 8 and 9)
--> False or 1 or 4 or 6 or 9
--> 1
总结:从python的角度来看,她根本没有必要将最终的结果判断完再汇报,更高效率的方法是,直接把影响结果的关键值给扔出来就可以了
5.优先级
not 1 or 0 and 1 or 3 and 4 or 5 and 6 or 7 and 8 and 9
如果按着上面方式来说应该是 3,而结果是4 为什么呢? 就是逻辑符号有优先级

not > and > or


浙公网安备 33010602011771号