算术运算符
假设变量 a = 10, b = 20
+ :加 两个对象相加 例如 a + b = 30
- :减 标识负数/一个数减去另一个数 a - b = -10
* :乘 两个数相乘/返回一个被重复若干次的字符串 a*b=200
/ : 除 b除以a b/a = 2
% : 取模 返回除法的余数 b%a = 0
** :幂,返回x的y次幂 a**b=10^20
// : 取整 返回商的整数部分 9//2=4, 9.0//2.0=4.0
被除数 除以 除数 = 商 ... 余数
算术运算表达式
3+2 3-1 8**9 5%3
功能:进行相关符号的数学运算,不会改变变量的值
值:相关的数学运算的结果
== 等于,比较对象是否相等,返回布尔类型的值
>>> a = 10
>>> b = 20
>>> print(a == b)
False
!= 不等于,比较对象是否不相等
>>> a = 10
>>> b = 20
>>> print(a != b)
True
大于,x > y,返回x是否大于y
>>> a = 10
>>> b = 20
>>> print(a > b)
False
< 小于,x < y,返回x是否小于y
>>> a = 10
>>> b = 20
>>> print(a < b)
True
‘>=’ 大于等于,x >= y,返回x是否大于等于y
>>> a = 10
>>> b = 20
>>> print(a >= b)
False
<= 小于等于,x <= y,返回x是否小于等于y
>>> a = 10
>>> b = 20
>>> print(a <= b)
True
注意:当变量为字符串的时候,比较的是字符串的ASCII码值
0 ASCII值 48
A ASCII值 65
a ASCII值 97
赋值运算符 =
赋值运算表达式
格式:变量 = 表达式功能:计算了等号右侧的“表达式”的值,并赋值给等号左侧的变量,右侧变量不发生变化。
值:赋值结束之后的变量
num1 = 10
num2 = num1 + 2
复合运算符
+= 加法赋值运算符 a += b a = a + b
-= 减法赋值运算符 a -= b a = a - b
*= 乘法赋值运算符 a *= b a = a * b
/= 除法赋值运算符(取余数) a /= b a = a / b
%= 取模赋值运算符 a %= b a = a % b
**= 幂赋值运算符 a **= b a = a ** b
//= 取整除赋值运算符 a //= b a = a // b
and运算是与运算,只有所有都为True,and运算的结果才是True:
>>> True and True
True
>>> True and False
False
>>> 5>3 and 3>1
True
or运算是或运算,只要其中一个为True,or运算结果就是True
>>>True or True
True
>>>True or False
True
>>>False or False
False
not 运算是非运算,它是一个单目运算符,把True变成False,False变成True
>>> not True
False
>>> not False
True
>>> not 1>2
True
短路原则
表达式1 and 表达式2 and 表达式3 … 如果表达式1为假,则整个表达式的值为假,后面的表达式则没有计算的必要
表达式1 or 表达式2 or 表达式3 … 如果表达式1为真,则整个表达式的值为真,后面的表达式的值就没有计算的必要
注意:1)bool值可以与number值参与运算参与运算的时候True代表1,False代表0
2)逻辑运算符的优先级:()优先级最高 > not优先级 > and优先级 > or优先级
>>>print((0 or 1) and "hello" or not False)
hello
我们进行位运算的时候,我们需要把数值转换为二进制数来进行计算
& 按位与
| 按位或
^ 按位异或
~ 按位取反
<< 左移
>> 右移
1.与运算【&】
参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0
3 & 2 = 2
0 1 1
0 1 0
------
0 1 0
2.按位或【|】
只要对应的两个二进位有一个为1时,结果位就为1
3 | 2 = 3
0 1 1
0 1 0
-----
0 1 1
3.按位异或【^】
当两对应的二进位相异时,结果为1
3 ^ 2 = 1
0 1 1
0 1 0
-----
0 0 1
4.按位取反【~】
对数据的每个二进制位取反,即把1变为0,把0变为1
~3 = -4
0000 0011
----------
1111 1100 补码=》
1111 1011 反码=》原码
1000 0100 -4
5.左移运算符【<<】
运算数的各二进位全部左移若干位,由”<<”右边的数指定移动的位数,低位补0
注意:向左移动,右边空出来的补0,左移其实就是乘以2的位数次幂
3 << 2 = 12 = 3 * 2^2
0 1 1
------
0 1 1 0 0
6.右移运算符【>>】
把”>>”左边的运算数的各二进位全部右移若干位,”>>”右边的数指定移动的位数
注意:如果最高位0,右移后,用0补空位,如果最高位1,右移后,用1补空位,右移其实就是除以2的位数次幂。
3 >> 2 = 0 = 3//(2^2)
0 1 1
-----
0 0 0 1 1
-4 >> 2 = -1
1 0 0 0 0 1 0 0
=》补码运算=》原码
in:如果在指定的序列中找到返回值True,否则返回False
>>>a = 10
>>>list1 = [1, 2, 4, 5]
>>>list2 =[20, 10, 15]
>>>print(a in list1)
False
>>>print(a in list2)
True
not in:如果在指定的序列中没有找到值返回True,否则返回False
>>>a = 10
>>>list = [1, 2, 4, 5]
>>>list2 =[20, 10, 15]
>>>print(a not in list)
True
>>>print(a not in list2)
False
is:is判断两个标识符是不是引用自一个对象
若引用同一个对象返回True,否则返回False
>>> a = 1000
>>> b = a
>>> print( a is b)
True
is not:判断两个标识符是不是引用自不同的对象
is:判断两个标识符是否引用同一个对象,
>>>a =1000
>>>b = 1000
>>>print(a is not b)
False
注意:在[-5, 257)的整数取值范围内,python的内部具有缓存机制,因此在比较这个数值以内的数据可能就会有些问题。
注意:1)当我们使用=来进行对对象进行赋值的时候,两个变量则视为引用同一个对象,见例1;2)注意例2中,list1与list地址不同,进行例3的转化后为True。
例1:
>>>num1 = 1000
>>>num2 = 1000
>>># num3 = num1
>>>print(num1 is num2)
>>>print(id(num1))
>>>print(id(num2))
True
1766723323024
1766723323024
例2:
>>>list1 = [1,2,3]
>>>list2 = [1,2,3]
>>>print(id(list1))
>>>print(id(list2))
>>>print(list1 is list2)
2577300742728
2577300742792
False
例3:
>>>list1 = [1,2,3]
>>>list2 = [1,2,3]
>>>list3 = list1
>>>print(list3 is list1)
>>>print(id(list3))
>>>print(id(list1))
True
2438752657992
2438752657992