表达式
操作数和运算符组合的式子即表达式
如:x+y
作用:用来计算值或者给变量赋值等
运算符
算术运算符
加:+
减:-
乘:*
除:/
求余/取模:% 进行除法运算,然后取余数
取整(取整数部分):// 进行除法运算,然后取整数
幂运算/几次方:**
代码示例:
a = 12
b = 10
print(a+b)
print(a-b)
print(a*b)
print(a/b)
print(a%b)
print(a//b)
print(a**3)
赋值运算符
赋值运算符是“=”
作用:给变量进行赋值
# 简单的赋值运算符
x = 12
# 将12赋值给变量x
# 复杂的赋值运算符
# 将算术运算符与“=”结合
x += 2 # x = x + 2
print(x)
x -= 2 # x = x - 2
print(x)
x *= 2 # x = x * 2
print(x)
x /= 2 # x = x / 2
print(x)
x %= 2 # x = x % 2
print(x)
x //= 2 # x = x // 2
print(x)
x **= 2 # x = x ** 2
print(x)
# 以上打印结构都不同,建议分开执行,初学者容易分不清
关系运算符
也叫条件运算符、比较运算符,用来比较大小,得到的时bool值
如果表达式成立,则返回的是True;如果表达式不成立,则返回的是False
大于:>
小于:<
等于:==
注意:不要和赋值运算符中的=弄混
小于等于:>=
大于等于:<=
不等于:!=
代码示例:
a = 52
b = 88
c = 52
print(a > b) # False
print(a < b) # True
print(a == b) # False
print(a == c) # True
print(a != b) # True
print(a >= b) # False
print(a <= b) # True
print(a >= c) # True
print(a <= c) # True
逻辑运算符
and : 与, 并且
or: 或, 或者
not:非, 取反
逻辑操作符and 和or 也称作短路操作符(short-circuitlogic)或者惰性求值(lazy evaluation):它们的参数从左向右解析,一旦结果可以确定就停止。
因为and运算符必须所有的运算数都是True才会把所有的运算数都解析,并且返回最后一个变量.
而或逻辑(or),即只要有一个是True,即停止解析运算数,返回最近为True的变量,
代码示例:
# and(与) or(或) not(非)
# and 只有表达式两边都为真,则整个表达式的结果才为真
print(True and True)
print(False and True)
print(True and False)
print(False and False)
# or 只要有一个表达式为真,则整个表达式的结果为真
print(True or True)
print(True or False)
print(False or True)
print(False or False)
# not 否定表达式的结果
print(not True)
print(not False)
print(not []) # []空列表 是False
print(not {}) # {}空字典 是False
print(not ()) # ()空元组 是False
print(not None) # None 是False
# and 或者 or的短路操作
# print(not 0) # 数字0 为False
print(0 and 12) # 0
# 因为从左到右第一个是0,根据and的运算思路,不论后面是什么,结果都是0,所以不会进行后面的结果
print(12 and 0) # 0
print(12 and 9) # 9
# 同样的,从左到右第一个是12,但不能完全判断结果是True还是False,所以还要判断9,结果最后为9
print(9 and 12) # 12
# or的短路运算
print(3 or 0) # 3
print(0 or 3) # 3
print(14 or 8) # 14
# 从左到右,第一个是14,已经为True了,所以不论后面的什么,结果都为True,所以结果为14
# 练习:判断2020年是否是闰年 能被4整除并且不能被100整除 就是闰年
year = 2020
print(year % 4 == 0 and year % 100 != 0)
成员运算符和身份运算符
成员运算符:
in 和not in
常用与列表、字符串等数据中
代码示例:
print(2 in [12,35,56,87,99,37,2]) # True
print(2 in [12,35,56,87,99,37,2]) # False
print(2 not in [12,35,56,87,99,37,2]) # True
print("welcome" in "welcome to jiangxi") # True
print("李白" in ["李白","韩信","张飞","关羽","单于","无语"]) # True
print("猪猪侠" not in ["李白","韩信","张飞","关羽","单于","无语"]) # False
身份运算符:
is和is not
身份运算符主要是用来判断内存地址是否一致
获取内存地址:id()
代码示例:
x = 20
y = 20
# 查看内存地址
print(id(x),id(y))
print(x is y) # True
z = 12
print(x is z) # False
print(y is not z) # False
位运算符
位运算符用于二进制计算
符号 | 作用 | 示例 |
---|---|---|
& | 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 | (a & b) 输出结果 12 ,二进制解释: 0000 1100 |
| | 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。 | (a | b) 输出结果 61 ,二进制解释: 0011 1101 |
^ | 按位异或运算符:当两对应的二进位相异时,结果为1 | (a ^ b) 输出结果 49 ,二进制解释: 0011 0001 |
<< | 左移动运算符:运算数的各二进位全部左移若干位,由 << 右边的数字指定了移动的位数,高位丢弃,低位补0。 | a << 2 输出结果 240 ,二进制解释: 1111 0000 |
>> | 右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,>> 右边的数字指定了移动的位数 | a >> 2 输出结果 15 ,二进制解释: 0000 1111 |
代码示例:
a = 82 # 二进制 1010010
b = 16 # 二进制 0010000
print(a & b) # ===> 0010000 => 1*2^4 = 16
print(a | b) # ===> 1010010 => 1*2^6 + 1*2^4 + 1*2^1= 64+16+1 = 81
print(a ^ b) # ===> 1000010 => 1*2^6 + 1*2^1= 64+2=66