1、算术运算符
常见的算术运算符: + - * / % // **
num1 = 24
num2 = 2
num3 = 9
# 加法运算
print(num1 + num2) # 26
# 减法运算
print(num1 - num2) # 22
# 乘法运算
print(num1 * num2) # 48
# 除法运算
print(num1 / num2) # 12.0
# 取余或者取模运算 (相除之后的余数)
print(num1 % num2) # 0
print(num1 % num3) # 6
# 幂运算
print(num1 ** num2) # 576
# 取整运算(取的是相除之后的商)
print(num1 // num3) # 2
+ - * / %跟其他语言类似,没有特别需要讲解的,这里注意一下 **(幂运算)和//(向除之后取整数)
2、赋值运算符
赋值运算符分为两类: 简单的赋值运算符 和 复合赋值运算符
(1)、简单的赋值运算符: = 表示把 = 右边的值赋给左边的变量
num = 123
(2)、复合赋值运算符: += -= *= /= **= %= //= 表示给一个变量赋值,同时对该变量进行了相应的运算.
# += 运算
num1 += 11 #等价于 num1 = num1 + 11
print(num1) # 43
# -=运算
num1 -= 11 # 等价于 num1 = num1 - 11
print(num1) # 21
# *= 运算
num1 *= 11 # 等价于 num1 = num1 * 11
print(num1) # 352
# /= 运算
num1 /= 11 # 等价于 num1 = num1 / 11
print(num1) # 2.909090909090909
# %= 运算
num1 %= 11 # 等价于 num1 = num1 % 11
print(num1) # 10
# //= 运算
num1 //= 11 # # 等价于 num1 = num1 // 11
print(num1) # 2
3、关系运算符
关系运算符: 作用是 比较大小 得到的结果是布尔类型.[如果表达式成立,则返回True,如果不成立,返回False] 常用的有 > < >= <= ==(等于) !=(不等于)
# 布尔类型的值有两个: True(表示真) False(表示假)
a = 32
b = 14
c = 32
print(a > b) # True
print(a < b) # False
print(a >= b) # True
print(a <= b) # False
print(a == c) # True
print(a != b) # True
# 示例:
if a > b:
#这里因为a>b成立,所以会输出“a是一个大于b的数字”
print('a是一个大于b的数字')
4、逻辑运算符
- 逻辑运算符主要是有三个: and(与) or(或) not(非)
- and: 只有当表达式两边为真,则整个表达式为真
注意:其他语言一般使用的是 &&(与) ||(或) !(非)来表示,但是python中使用的是and(与) or(或) not(非)
print(True and True) # True
print(True and False) # False
print(False and True) # False
print(False and False) # False
# or: 只要有一个表达式为真,则整个表达式为真
print(True or True) # True
print(True or False) # True
print(False or True) # True
print(False or False) # False
# not: 表示对原来的结果取反
print(not True) # False
print(not False) # True
# 在python中有几种特殊的数据转换为布尔类型为False. 比如: [] '' "" 0 () None 0.0 {}
'''
[] 表示空列表
() 表示空元祖
{} 表示空字典
'' 或者 "" 表示空字符串
None 表示空
'''
print(not []) # True
print(not ()) # True
print(not '') # True
print(not "") # True
print(not 0) # True
print(not 0.0) # True
print(not None) # True
print(not {}) # True
下面重点讲一一下逻辑运算中的短路运算
- 逻辑操作符and 和or 也称作短路操作符或者惰性求值:它们的参数从左向右解析,一旦结果可以确定就停止。
- and运算符必须所有的运算数都是True,所以所有的运算数都会解析,并且返回最后一个变量.
- 而或逻辑(or),即只要有一个是True,即停止解析运算数,返回最近为True的变量,
and:and运算跟其他语言的&&一样,必须同时为真才为真,所以运算的时候会从左到右依次解析到最后,比如12 and 43,先解析12为真然后再解析43也为真,这个时候全部为真,所以结果为真,注意返回值,返回最后一个解析的值,43
# and 或者 or的短路运算
# print(12 and 43) # 43
# print(43 and 12) # 12
# print(43 and 0) # 0
# print(0 and 43) # 0 # 短路运算
or:or运算跟其他语言的||一样,从左往右解析,只要有一个为真就停止解析,返回结果,比如 12 or 43,从左解析首先解析12为真,所以结果就为真,返回12,再比如0 or 43,依次解析,0为假,继续解析43,这时候为真,结果为真,返回43
print(12 or 43) # 12
print(43 or 12) # 43
print(43 or 0) # 43
print(0 or 43) # 43
5、成员运算符和身份运算符
(1)、成员运算符: in 和 not in
这里表示的是是不是成员之一,比如:
print(12 in [13,43,6565,8.43,'banana']) # False(12没有在数组中)
print(12 not in [13,43,6565,8.43,'banana']) # True(12不在数组中,符合not in 判断,所以返回true)
print('welcome' in 'welcome to shenzhen') # True(welcome在字符串welcome to shenzhen中,所以返回true)
# 判断输入的月份是否是31天
month = int(input('请输入月份:'))
print(month in [1,3,5,7,8,10,12])#如果输入的值在数组中,那么就为true,如果输入的mouth不在数组中那就返回false
(2)、身份运算符: is 和 is not
主要用于判断变量的内存地址是否相同,至于内存地址的讲解我们前面讲数据类型的时候详细讲解过,大家可以抽时间去看
id() 获取变量的内存地址
x = 12
y = 12
print(id(x))# 4483926672
print(id(y))# 4483926672
print(x is y) # True
print(x is not y) # False
list11 = [1,2,3,4,5,6]
list22 = [1,2,3,5,6,6]
print(id(list11))# 4484991296
print(id(list22))# 4485010496
print(list11 is list22) # False