首页 > 编程语言 > 详细

python运算符

时间:2020-03-05 14:30:01      阅读:69      评论:0      收藏:0      [点我收藏+]

python运算符

| python运算符 | 注意点 |
| ------------ | ------------------------------------------------------------ |
| 算数运算符 | % 取余 , //地板除 , ** 幂运算 |
| 比较运算符 | == 比较两个值是否相等 != 比较两个值是否不同 |
| 赋值运算符 | a += 1 => a = a+1 |
| 成员运算符 | in 或 not in 判断某个值是否包含在(或不在)一个容器类型数据当中 |
| 身份运算符 | is 和 is not 用来判断内存地址是否相同 |
| 逻辑运算符 | 优先级 () > not > and > or |
| 位运算符 | 优先级 (<<或 >> ) > & > ^ > \| 5 << 1 结果:10 , 5 >> 1 结果:2 |

(1)算数运算符: + - * / // % **

技术分享图片
# 算数运算符:  + - * / // % **
var1 = 10
var2 = 5

# +
res = var1 + var2
print(res)

# -
res = var1 - var2
print(res)

# *
res = var1 * var2
print(res)

# / (结果永远是小数)
res = var1 / var2 
print(res)

# // 地板除 10 除以 5 10被除数,5是除数,得到值是商 (默认得到的是整数)
res = var1 // var2
print(res)

# 被除数或除数是一个小数,结果就是小数
res = 10 // 5.0
res = 14 // 8
print(res)

# % 取余
res = 17 % 3  # 2
res = 11 % 7  # 4
res = -11 % 7 # 3  =>   -4 + 7 = 3 
res = 11 % -7 # -3 =>    4 + (-7) = -3
res = -11 % -7# -4 =>   -4

# res = 81 % 5  # 1
res = -81 % 5   # 4
res = 81 % -5   # -4
res = -81 % -5  # -1
print(res)

# ** 幂运算
res = 2 ** 50
print(res)
技术分享图片

(2)比较运算符: > < >= <= == != 

技术分享图片
# 比较运算符:  > < >= <= == !=   结果只有两种 (True 真的 False 假的) 
res = 5 > 6
res = 6 < 1000
res = 90 <= 90
print(res)

# ==  等于
"""一个等号是赋值操作,两个等号在做比较操作"""
res = 100 == 100
print(res)

# !=  不等于
res = 100 != 100
print(res)
技术分享图片

(3)赋值运算符: = += -= *= /= //= %= **=

技术分享图片
# 赋值运算符   = += -= *= /= //= %= **=

# = 
var1 = 10
var2 = 20
var1 = var2
print(var1,var2)

# +=
var1 = 10
var2 = 20
# var1 = var1 + var2
var1 += var2
# var1 = var1 + 1  
var1 += 1
print(var1)


# -=
var1 = 5
var2 = 10
# var1 = var1 - var2
var1 -= var2
print(var1)

# %=
var1 = 7
var2 = 4
# var1 = var1 % var2
var1 %= var2
print(var1)
技术分享图片

(4)成员运算符: in 和 not in (针对于容器型数据)

技术分享图片
# 成员运算符:  in 和 not in (针对于容器型数据)
# 针对于字符串
"""要求字符串是一个连续的片段"""
strvar = "好看的皮囊千篇一律,有趣的灵魂200多斤"
res = "皮" in strvar
res = "千篇一律" in strvar
res = "灵多" in strvar
print(res)

# 针对于 list tuple set
listvar = ["john","大江东去","繁星","dosir"]
res = "大江东去" in listvar

tuplevar = ("john","大江东去","繁星","dosir")
res = "dosir" not in tuplevar

setvar = {"john","大江东去","繁星","dosir"}
res = "john1234" not in setvar
print(res)

# 针对于字典 dict
"""针对于字典中的键来进行判定"""
dictvar = {"fx":"聪明","xx":"美丽","stone":"风流倜傥","fei":"睿智"}
res = "美丽" in dictvar
res = "xx" in dictvar
res = "abc" not in dictvar
print(res)
技术分享图片

(5)身份运算符: is 和 is not (检测两个数据在内存当中是否是同一个值) 

技术分享图片
# 身份运算符:  is 和 is not (检测两个数据在内存当中是否是同一个值)  

# 整型 -5 ~ 正无穷
var1 = 100
var2 = 100
res = var1 is var2
print(res)

# 浮点型 非负数范围内
var1 = -9.13
var2 = -9.13
res = var1 is var2
print(res)

# 容器类型数据,除了空元组和相同的字符串,剩下所有的容器类型数据id地址都不相同
var1 = ()
var2 = ()
var1 = [1,2]
var2 = [1,2]
res = var1 is not var2
print(res)
技术分享图片

(6)逻辑运算符: and or not

技术分享图片
# 逻辑运算符:  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 = True or False # True
res = False or True # True
res = False or False# False
print(res)

# not 逻辑非
"""真变假,假变真"""
res = not True
res = not False
print(res)

# 逻辑短路
print("<=============>")
"""
短路: 后面代码不执行
(1)True or print("我就是我,不一样的烟火") [在单个表达式或者多个表达式中,可以直接判断短路]
(2)False and print("烟花一样的灿烂,是我逝去的青春") [只能在单个表达式当中判断是否短路]

# 不发生短路
True and print("仙女一样的姑娘,是我渴望已久的愿望")
"""

res = 5 or 6
res = 5 and 6
res = not 5

# 逻辑优先级
"""从高到低排列: () > not > and > or"""
res = 5 or 6 and 7 # 5 or 7 => 5
res = 0 and 6 or 7 # 0 or 7 => 7
res = not 5 or 6 and 7 # False or 6 and 7  => False or 7 => 7
res = not (5 or 6) and 7 # not 5 and 7 => False and 7 => False
res = 1>2 and 3<4 or 5>6 and 7<8 and 100>99
"""
False and True or False and True and True
False or False and True
False or False
False
"""
print(res,"<===标注===>")

res = False and False # 返回的是第一个False
res = False or False  # 返回的是第二个False
res = False and "闻哥,你为什么这么帅气,我已经爱上了你"
res = False or "闻哥,你为什么这么帅气,我已经爱上了你"
res = "闻哥哥,我爱你爱的受不了了" or True
res = "闻哥哥,我爱你爱的受不了了" and True
print(res)

"""
额外解答:
    res = 100 or 200
    res = 0 or 200
    res = ‘‘ or 200
    print(res)

    例子:False or ? = 多少呢?
    False or True => True
    False or False => False
    False or 200 => 200
"""
技术分享图片

(7)位运算符: & | ~ ^ << >>

技术分享图片
# 位运算符  & |  ^ << >> ~

# 按位与 &
var1 = 19
var2 = 15
res = var1 & var2
print(res)
"""
先把19转换成二进制
10011
在把15转换成二进制
01111
结果
00011
把结果在转换成十进制 => 3
"""

# 按位或 |
var1 = 19
var2 = 15
res = var1 | var2
print(res)
"""
10011
01111
11111
11111 => 十进制31
"""

# 按位异或 ^ (两个值不一样,返回真1,两个值一样,返回假0)
var1 = 19
var2 = 15
res = var1 ^ var2
print(res)
"""
10011
01111
11100
"""


# << 左移 (做乘法 乘以2的n次幂)
res = 5 << 1
print(res)
"""
000101
向左边移动一位
001010
向左边移动二位
010100  => 20

000 0
001 1
010 2
011 3
100 4
101 5
110 6
111 => 7
"""

# >> 右移 (做除法 除以2的n次幂)
res = 20 >> 2
print(res)
"""
10100
向右边移动一位
01010  => 10
向右边移动二位
00101  => 5
"""


# ~ 按位非  -(n+1)
res = ~3
res = ~(-17)
res = ~0
print(res) 
# ~19 => -20
# ~18 => -19
# ~17 => -18

# ~(-19) => 18
# ~(-18) => 17
# ~(-17) => 16


# ### 运算符总结:
"""
优先级最高的符号是 ** 幂运算
优先级最低的符号是 = 赋值运算符

整体来说: 一元运算符 > 二元运算符 优先级
一元运算符 : 同一时间,只操作一个数字的就是一元 ( ~ , - )
二元运算符 : 同一时间,只操作两个数字的就是二元 ( + - * / ..)

逻辑运算符: () > not > and > or
位运算符  : (<< >>) > & > ^ > |
算数运算符: 先算乘除,再算加减

算数运算符 > 位运算符 > 比较运算符 > 身份运算符 > 成员运算符 > 逻辑运算符
赋值运算符做收尾,等所有运算结束之后,赋值给等号左侧;

算位比身成逻
赋值运算做收尾
"""

res = 5+5 << 6 // 3 is 40 and False
"""
10 << 2 is 40 and False
40 is 40 and False
True and False
False
"""
print(res) # False

# 通过() 提升运算的优先级
res = (5 + 5) << (6 // 3) is 40 and False
技术分享图片

 

python运算符

原文:https://www.cnblogs.com/liunaixu/p/12419743.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!