Python运算符
Hello,大家好,我是你们的老朋友景天,今天我们来一起聊聊python中的运算符。
Python中提供了各种各样的运算符帮助我们解决各种实际问题。Python中的运算符主要包括算术运算符、比较运算符、位运算符、逻辑运算符和赋值运算符。下面将一一介绍这些运算符的具体种类和使用方法。
python运算符 | 注意点 |
算数运算符 | % 取余 , //地板除 , ** 幂运算 |
比较运算符 | == 比较两个值是否相等 != 比较两个值是否不同 |
赋值运算符 | a += 1 => a = a+1 |
成员运算符 | in 或 not in 判断某个值是否包含在(或不在)一个容器类型数据当中 |
身份运算符 | is 和 is not 用来判断内存地址是否相同 |
逻辑运算符 | 优先级 () > not > and > or |
位运算符 | 优先级 (<<或 >> ) > & > ^ > | 5 << 1 结果:10 , 5 >> 1 结果:2 |
(1)算数运算符: + - * / // % **
#+ var1 = 7 var2 = 90 res = var1 + var2 print(res) #- var1 = 7 var2 = 90 res = var1 - var2 print(res) #* var1 = 7 var2 = 10 res = var1 * var2 print(res) #/ 结果永远为小数 var1 = 10 var2 = 5 res = var1 / var2 print(res , type(res))
#// 地板除
//整除 9//4 结果为2 去除小数部分 返回不大于结果的一个最大的整数,意思就是除法结果向下取整
"""被除数 ➗ 除数 = 商""" """注意点:如果被除数或者除数是小数,那么得到正常结果之后,数值后面带上.0变成小数""" var1 = 10.0 var2 = 3.0 #var2 = 3.0 res = var1 // var2 print(res)
相除后,取不大于结果的最大整数,负数的话要注意
#% 取余
var1 = 7 var2 = 4 res = var1 % var2 res = -7 % 4 # -3 + 4 = 1 res = 7 % -4 # 3 + (-4) = -1 res = -7 % -4 # -3 #(被除数和除数都是负的,正常结果加负号)
两个负数相除,余数仍为负数
取余 -10 /3 按正数来算余1 由于是负数,被除数有负号,就在余数上加负号,-1 然后再加上除数 -1 +3 = 2 所以取余是2
除数有负号, 余数加上除数 1 + -3 = -2 所以取余是-2
res = 81 % 7 # 4 res = 81 % -7 # -3 res = -81 % 7 # 3 res = -81 % -7 # -4 print(res)
#幂运算 a **b = a的b次方 res = 2 ** 3 print(res)
(2)比较运算符: > < >= <= == !=
"""比较运算符的结果要么是True , 要么是False 只有两个值""" res = 10 > 5 res = 10 >= 10 # ==这个符号是在做比较,比较==两边的数值是否一样 相等返回True ,不相等返回False res = 5 == 9 res = 5 != 9 print(res)
纯英文字母字符串,可以比较大小,以ascii码大小作比较
#单个字母就直接比较,多个字母就从第一个开始比较,前面相同就向后比较
(3)赋值运算符: = += -= *= /= //= %= **=
#= 赋值运算符 将右侧的值赋值给左侧变量
a = 5 <= 3 print(a)
var1 = 10 var2 = 5 # += """var1 = var1 + var2""" # var1 += var2 # print(var1) # -= """var1 = var1 - var2""" # var1 -= var2 # print(var1) # %= """var1 = var1 % var2""" var1 %= var2 print(var1)
(4)成员运算符: in 和 not in (针对于容器型数据)
“”“字符串判断时,必须是连续的片段”“”
strvar = "今天天气要下雨,赶紧回家收衣服" res = "今" in strvar res = "天气" in strvar res = "赶回" in strvar print(res)
#针对于列表,元组,集合 container = ["赵沈阳","赵万里","赵世超"] container = ("赵沈阳","赵万里","赵世超") container = {"赵沈阳","赵万里","赵世超"} # res = "赵沈阳" in container # res = "赵万里" not in container res = "赵世超1223232" not in container print(res) # 针对于字典 (判断的是字典的键,不是值) container = {"zsy":"赵沈阳","zwl":"赵万里","zsc":"赵世超"} res = "赵沈阳" in container # False res = "zsy" in container print(res)
字典的值不能用成员运算符判断,只能用键来判断,针对多层容器中的字典,键也不能用来判断
单层容器用键可以
用值也是不可以
字典要想判断值,需要用到字典的values方法
(5)身份运算符 is 和 is not
(检测两个数据在内存当中是否是同一个值)
# 整型 所有整形,浮点型,bool,complex str tuple 只要数值一样,内存地址都相同 var1 = 100 var2 = 100 print(var1 is var2)
# 浮点型 相同 var1 = -9.1 var2 = -9.1 print(var1 is var2) # bool 相同即可 var1 = True var2 = True print(var1 is var2) # complex 相同 var1 = 6-8j var2 = 6-8j var1 = -10j var2 = -10j print(var1 is var2)
#容器: 相同字符串 , 元组相同即可 剩下的所有容器(列表,集合,字典)即便数值相同,内存地址也不相同
元祖相同
字符串相同
集合不同
列表不同
字典不同
container1 = "你" container2 = "你" print(container1 is not container2) container1 = [1,23,3] container2 = [1,23,3] print(container1 is not container2)
(6)逻辑运算符: and or not
# and 逻辑与 """全真则真,一假则假""" res = True and True # True res = True and False # False res = False and True # False res = False and False # False print(res) # or 逻辑或 """一真则真,全假则假""" res = True or True # True res = False or True # True res = True or False # True res = False or False # False print(res) # not 逻辑非 res = not True res = not False print(res)
#逻辑短路
“”"
无论后面的表达式是True 还是False 都已经无法改变最后的结果,那么直接短路,后面的代码不执行;
(1) True or print(“程序执行了 ~ 1111”) 遇到True就不再执行后面的代码
这种就不短路
(2) False and print(“程序执行了 ~ 2222”)
True or print("程序执行了 ~ 1111") True or True => True True or False => True 直接返回前者,后者就不再执行了 False and print("程序执行了 ~ 2222") False and True => False False and False => False 不管后面是什么,都返回False,后面的不再执行 """ """ 计算规律: 先脑补计算当前表达式的布尔值是True还是False 如果出现了 True or 表达式 或者 False and 表达式的情况,直接返回前者,后面代码不执行 如果没有出现短路效果,直接返回后者 """ 逻辑为假的十种情况,其他情况都为真 0 , 0.0 , False , 0j '' [] () set() {} None res = 5 and 6 # 6 真 and 一个值还要继续往后执行,不能短路。所以执行结果是6 """ True and True =>True True and False => False """ res = 5 or 6 # 5 真 or 一个值,不管后面是真是假,结果都为真,出现短路,所以结果为5 res = 0 and 999 假 and 一个值, 不管后面是真是假,结果都为假,出现短路 结果为0 res = 0 or "abc" print(res)
#逻辑运算符的优先级
优先级从高到低: () > not > and > or
res = 5 or 6 and 7 # 5 or 7 => 5 res = (5 or 6) and 7 # 5 and 7 res = not (5 or 6) and 7 # not 5 and 7 => False and 7 => False res = 1<2 or 3>4 and 5<100 or 100<200 and not (700>800 or 1<-1) =>True not (False or False) => True res = 1<2 or 3>4 and 5<100 or 100<200 and not (700>800 or 1<-1) res = True or False and True or True and True =>True res = True or False or True =>True res = True or True => True print(res)
python运算符详解(二):https://developer.aliyun.com/article/1495701