python3笔记三:运算符与表达式
一:学习内容
- 算术运算符:+(加)、-(减)、*(乘)、/(除)、%(取模)、**(求幂)、//(取整)
- 赋值运算符:=
- 复合运算符:+=、-=、*=、/=、%=、**=、//=
- 位运算符:&、\、^、~、<<、>>
- 关系运算符:==、!=、>、<、>=、<=
- 逻辑运算符:and、or、not
- 成员运算符:in、not in
- 身份运算符:is、is not
- 运算符优先级
二:算术运算符
表达式说明:由变量、常量和运算符组成的式子
1.算术运算符:+(加)、-(减)、*(乘)、/(除)、%(取模)、**(求幂)、//(取整)
2.算术运算表达式:功能:进行相关符号数学运算,不会改变变量的值;值:相关的数学运算结果
3.举例
num1 = 5
num2 = 3
print(num1 + num2)
print(num1 - num2)
print(num1 * num2)
print(num1 / num2)
print(num1 % num2)
print(num1 ** num2) #pow(5,3)
print(num1 // num2)
三:赋值运算符
1.赋值运算符:=
2.赋值运算表达式:格式:变量 = 表达式;功能:计算等号右侧"表达式"的值,并赋值给等号左侧的变量;值:赋值结束后变量的值
3.举例
num3 = 10
num4 = num3 + 20
四:复合运算符
1.复合运算符:+=、-=、*=、/=、%=、**=、//=
2.举例
a = 1
b = 2
a += b #a = a + b
print("a1 =", a)
a -= b #a = a - b
print("a2 =", a)
a *= b #a = a * b
print("a3 =", a)
a /= b #a = a / b
print("a4 =", a)
a %= b #a = a % b
print("a5 =", a)
a **= b #a = a ** b
print("a6 =", a)
a //= b #a = a // b
print("a7 =", a)
五:位运算符
1.按位运算符是把数字看做二进制来进行计算
2.&按位与运算符,相应的位数都为1,则该位结果为1,否则为0
#5的二进制为101,7的二进制为111, 101&111=101即5
print(5 & 7)
3.\按位或运算符,相应的位数都为0,则该位结果为0,否则为1
#5的二进制为101,7的二进制为111, 101 | 111=111即7
print(5 | 7)
4.^按位异或运算符,相应的位数不同时,则该位结果为1,否则为0
#5的二进制为101,7的二进制为111, 101 ^ 111=010即2
print(5 ^ 7)
5.~按位取反运算符
#5的原码和补码:00000000 00000000 00000000 00000101
#取反后补码: 11111111 11111111 11111111 11111010
#补码的反码为: 10000000 00000000 00000000 00000101
#反码的原码为: 10000000 00000000 00000000 00000110
#即-6
print(~5)
6.<< 左移动运算符:各二进制位全部左移动若干位,由<<右侧的数字决定,高位丢弃,低位补0
#00000010
#00001000
print(2 << 2)
7.>> 右移动运算符:各二进制位全部右移动若干位,由>>右侧的数字决定,低位丢弃,高位正数补0负数补1
#00001101
#00000011 正数的补码即原码,故为3
print(13 >> 2)
#10000000 00000000 00000000 00001101 -13原码
#11111111 11111111 11111111 11110010 -13反码
#11111111 11111111 11111111 11110011 -13补码
#11111111 11111111 11111111 11111100 -13右移2位补码
#10000000 00000000 00000000 00000011 -13右移2位反码
#10000000 00000000 00000000 00000100 -13右移2位原码,即为-4
print(-13 >> 2)
六:关系运算符
1.关系运算符:==、!=、>、<、>=、<=
2.关系运算表达式:表达式1 关系运算符 表达式2
3.功能:计算表达式1和表达式2的值
4.值:如果关系成立,整个关系运算表达式的值为真,否则为假
七:逻辑运算符
1.逻辑与运算表达式:表达式1 and 表达式2
值:如果表达式1和表达式2的值都为真,则值为真;如果表达式1或表达式2有一个是假,则值为假
举例:
num1 = 0
num2 = 20
if num1 and num2:
print("真")
if num1 + 1 and num2 + 1:
print("真")
#短路原则,只要遇到一个假就不会在计算后面的表达式了
#表达式1 and 表达式2 and 表达式3 and ...
2.逻辑或运算表达式:表达式1 or 表达式2
值:如果表达式1和表达式2的值都为假,则值为假;如果表达式1或表达式2有一个是真,则值为真
举例:
num3 = 0
num4 = 1
if num3 or num4:
print("真")
#短路原则,只要遇到一个真就不会在计算后面的表达式了
#表达式1 or 表达式2 or 表达式3 or ...
3.逻辑非运算表达式:not 表达式1
值:如果表达式1为假,则值为真;如果表达式1为真,则值为假
举例:
if not 0:
print("真")
八:成员运算符
1.in 如果在指定的序列中找到值返回True,否则返回False
2.not in 如果在指定的序列中没有找到值返回True,否则返回False
九:身份运算符
1.is 判断两个标识符是不是引用同一个对象
2.is not 判断两个标识符是不是引用不同的对象
十:运算符优先级
从上到下,优先级越来越小
**
~、+(正号)、-(负号)
*、/、%、//
+、-
>>、<<
&
^、|
<=、<、>、>=
==、!=
=、%=、+=、-=、//=
is、is not
in、not in
not、or、and