3.2 关系运算符
关系运算符用于两个值之间的比较,常用的有:<,>,==,!=,<=,>=。
3.2.1 关系运算符运算规则
所有的关系运算符返回的结果均为 True 或 False 。
数值类型的比较是根据数值大小。
字符串的比较是按照顺序依次比较每一个字符在ASCII/Unicode字符集中的编码值。如果第一个字符相等,则比较第二个字符,直到第一个不相等字符的结果作为整体比较结果。如果所有的字符都相同,则两个字符串相等。
数值类型和字符串类型不能比较。
同为数值类型的整型,浮点型虽然可以与布尔型比较,但是不建议这种做法,容易引起歧义,不好理解。
关系运算符可以组成串连式比较,每一段的比较结果都为真,结果才为真,例如:3 < 5 < 7 返回 True 。
< (小于)
返回 x 是否小于 y。
5 < 3 输出 False , 3 < 6 输出 True 。
> (大于)
返回 x 是否大于 y。
5 > 3 返回 True 。
<= (小于等于)
返回 x 是否小于或等于 y。
x = 3; y = 6; x <= y 返回 True 。
>= (大于等于)
返回 x 是否大于或等于 y。
x = 4; y = 3; x >= 3 返回 True 。
== (等于)
比较两个对象是否相等。
x = 2; y = 2; x == y 返回 True 。
x = 'str'; y = 'stR'; x == y 返回 False 。
x = 'str'; y = 'str'; x == y 返回 True 。
Python浮点数相等的比较,由于存在精度的关系,不能直接使用==判断,可以使用通用的判断方法:两个数值的差值是否小于给定的精度;或者使用math模块的isclose方法。扩展的使用:两数相差小于一定精度的话,则认为这两个数相等,即使这两个数是整数,并且在数学上并不相等。
函数使用方法为:math.isclose(a, b, rel_tol=1e-09, abs_tol=0.0),精度默认为1*10e-9,可以根据需要修改:参数rel_tol为相对精度,abs_tol为绝对精度。
>>> import math
>>> 0.1 * 3
0.30000000000000004
>>> 0.1 * 3 == 0.3
False
>>> math.isclose(0.1 * 3, 0.3)
True
>>> math.isclose(1000, 1040, rel_tol=0.01)
False
>>> math.isclose(1000, 1040, rel_tol=0.1)
True
>>> math.isclose(0.54, 0.5, rel_tol=0.05)
False
>>> math.isclose(0.54, 0.5, abs_tol=0.05)
True
!= (不等于)
比较两个对象是否不相等。
x = 2; y = 3; x != y 返回 True 。
以上举例代码为:3.2-关系运算符.py
# 关系运算符
print('5 < 10: {}'.format(5 < 10))
print('8 == 8: {}'.format(8 == 8))
print("'0' < 'A': {}".format('0' < 'A'))
print("'A' < 'a': {}".format('A' < 'a'))
print("'abc' < 'aaa': {}".format('abc' < 'aaa'))
结果为:
5 < 10: True
8 == 8: True
'0' < 'A': True
'A' < 'a': True
'abc' < 'aaa': False