python中的各类比较与计算
运算符
- 1.算数运算符
- 2.关系运算符
- 3.逻辑运算符
- 4.关于短路求值
- 5.赋值运算符
- 1)`=`的使用
- 链式赋值
- 多元赋值
- 2)复合赋值运算符
- 6.位运算符
- 7.成员运算符
- 8.身份运算符
1.算数运算符
# 加
print(1 + 2)
# 减
print(2 - 1)
# 乘
print(1 * 2)
# 余数 4%3=1余数为1
print(4 % 3)
# 除
print(4 // 2)
# 平方
print(4 ** 2)
2.关系运算符
a = 10
b = 20
# 小于
print(a < b)
# 大于
print(a > b)
# 大于等于
print(a >= b)
#小于等于
print(a <= b)
# 等于
print(a == b)
# 不等于
print(a != b)
不仅如此,这些算数运算符还可以对字符串进行比较。
这种比较的方法是在字典中排序而比较的,在字典中,排序越靠后的字符串越大,而在这里hi
明显要比hello
后出现,所以这里b是大于a的。
浮点数比较
注意,一般不会使用==
对浮点数进行比较,因为浮点数在计算机中不是精准的,在计算过程中,很容易出现小误差。
print(0.1)
print(0.2)
print(0.3)
print(0.1+0.2)
print(0.1 + 0.2 == 0.3)
3.逻辑运算符
多数用于判断或循环中。
a = True
b = False
c = True
# and 与
if a and c:
print("a和c都为true")
# or 或
if a or b:
print("a和b有一个为true")
# not 非
if not b:
print("b不为true")
一种特殊写法
在python中可以使用a<b<c
,相当于a<b and b<c
。这个设定与大部分的编程语言不相同。
4.关于短路求值
和其他编程语言类似,也存在短路求职的规则。
对于
and
,如果左侧表达式为False
,则不再继续向下求职,所以即使第二条件非法也对结果无影响。
if 10>20 and 10//0>1:
print("两个表达式都正确")
else:
print("计算首表达式错误")
对于
or
如果左侧表达式为True
,则不再计算右侧表达式的正确性。
if 10>0 or 10//0>0:
print("有一个表达式正确")
else:
print("两个表达式都错误")
5.赋值运算符
1)=
的使用
表示赋值,与
==
不同,不仅有基础语法,还可以对多个变量进行赋值。
链式赋值
a = b = 10
多元赋值
a,b,c=10,20,30
使用多元赋值可以对交换变量进行改写:
# 普通交换两个变量
temp = a
a = b
b = temp
# 改写好的交换变量
a,b = b,a
2)复合赋值运算符
+= -= *= /= %= **= //=
以+=
举个例子:a += 1
相当于a = a + 1
,将计算的值重新赋值给a
,其他复合运算符也是同理。
a = 10
a = a + 1
print(f"a={a}")
b = 10
b += 1
print(f"b={b}")
注意:在python中没有++ --
操作,如果需要使用+=1 -=1
代替即可。
6.位运算符
|
:按位或
&
:按位与
^
:按位异或
~
:按位取反
<<
:按位左移
>>
:按位右移
以上位操作符与其他计算机语言一致都是将数字转化为二进制数字计算。
a = 60 # 0011 1100
b = 5 # 0000 0101
print(a & b) # 0000 0100 => 4
print(a | b) # 0011 1101 => 61
print(a ^ b) # 0011 1001 =>57
print(~b) # 1111 1010 =>
print(b << 1) # 0000 1010 =>10
print(b >> 1) # 0000 0010 =>2
7.成员运算符
in
:在指定的序列中找到值返回 True,否则返回 False
not in
:在指定序列中找不到返回True,否则返回False
a = [1,2,3,4,5]
b = "hello"
c = 5
print(c in a)
print(b not in a)
8.身份运算符
is
: 判断两个标识符是不是引用自一个对象
is not
:判断两个标识符是不是引用自不同对象
a = 20
b = 20
c = 30
print(a is b)
print(a is not c)
注意:这里的is
和==
是不同的,is是用于比较两个对象是否指向同一个,而==只是单纯判断值是否相同。