运算符

运算符

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

var1 = 6
var2 = 4

+ 加法

res = var1 + var2
print(res)

- 减法

res = var1 - var2
print(res)

* 乘法

res = var1 * var2
print(res)

/ 除法 (结果是小数)

res = var1 / var2
res = 7 / 3
print(res)

// 地板除 (返回整数)

res = 6 // 3
res = 7 // 3
print(res)
 如果除数或者被除数存在是小数,那么结果上加上.0
res = 7 // 3.0
print(res)

% 取余

res = 7 % 4
res = 81 % 11   # 4
res = -81 % 11  # -4 + 11 = 7
res = 81 % -11  # 4 + (-11) = -7
res = -81 % -11 # -4 (如果被除数和除数都是负数,在正常得到的结果上加负号即可)
print(res)
``

### ** 幂运算

```python
res = 3 ** 3
print(res)

(2)比较运算符: > < >= <= == != 只会产生2个结果,要么True 要么False

var1 = 90
var2 = 90
res = var1 > var2
print(res)

res = var1 <= var2
print(res)

注意点

res = var1 == var2
print(res)
res = True

res = var1 != var2
print(res)
"""
# =赋值 , 将右侧的值赋值给左侧
# ==比较, 比较等号两边的值是不是相等,相等返回True
"""

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

var1 = 9
var2 = 2

= 从右向左,将右侧的值赋值给左侧变量

+=

'''var1 = var1 + var2'''
 var1 += var2
 print(var1)

-=

'''var1 = var1 - var2'''
# var1 -= var2
# print(var1)

*=

 var1 *= var2
 print(var1)

/=

 var1 /= var2
 print(var1)

//=

'''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 = "二" not in strvar
res = "大王" in strvar
res = "大帅" in strvar
print(res)

list tuple set

lst = ["王振","刘思敏","主胜","张恒"]
res = "刘思敏" in lst
print(res)
tup = ("黄俊","尉翼麟","李天兆")
res = "李天兆" not in tup
print(res)
setvar = {"神秘男孩","金角大王","银角大王"}
res = "银角大王" in setvar
print(res)

dict

""" in 和 not in 在字典中只判断键,不判断值"""
dic = {"ww":"帅气,潇洒","dw":"英俊,气质非凡","yc":"有才,真诚"}

res = "英俊,气质非凡" in dic
res = "dw" in dic
res = "yc" not in dic
print(res)

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

在python3.6中

整型 -5 ~ 正无穷

var1 = 90
var2 = 90
res = var1 is var2
print(res)

浮点型 非负数

var1 = -3.4
var2 = -3.4
res = var1 is not var2
print(res)

布尔型 只要值相同即可

var1 = True
var2 = True
res = var1 is var2
print(res)

complex 实数+虚数永远不同, (只有虚数的条件例外)

var1 = 6+5j
var2 = 6+5j
res = var1 is not var2
print(res)

容器类型

var1 = ()
var2 = ()
res = var1 is var2
print(res)

(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 = 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)

逻辑短路 : 如果出现了短路效果,后面的代码就不执行了

"""
(1) True or 表达式
(2) False and 表达式
"""
1
True or print(111)
# True or True => True
# True or False => True
2
False and print(222)
# False and False => False
# False and True => False

res = 5 or 6
res = 5 and 6
res = 0 and 9 
print(res) # 6

bool类型为假的十种情况

0 0.0 0j False 
'' [] () set() {}
None
先用大脑算一下布尔值真假,有没有短路情况
True and True => True
True and False => False

print(111) or True

print是内置的函数,函数内部返回的是None,功能是打印

res = print(111)
print(res)

print(111) or True
res = None or True
print(res)

逻辑运算符的优先级

() > not > and > or
res = 5 or 6 and 7 # 5 or 7 => 5
res = (5 or 6) and 7 # 5 and 7 => 7
res = not(5 or 6) and 7 # not 5 and 7 => False and 7 => False
print(res)

res = 1>2 or 3<4 and 5>10 or 11<12 and 13>16
# res = False or True and False or  True and False
# res = False or False or False
# res = False or False
# res = False
print(res)

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

按位与 &

var1 = 19
var2 = 15
print(var1 & var2)
"""
19的二进制
000 ... 10011
15的二进制
000 ... 01111

000 ... 10011
000 ... 01111
000 ... 00011
"""

按位或 |

var1 = 19
var2 = 15
print(var1 | var2)
"""
19的二进制
000 ... 10011
15的二进制
000 ... 01111

000 ... 10011
000 ... 01111
000	...	11111
"""

按位异或 ^ 两者之间不一样返回真,一样返回假

var1 = 19
var2 = 15
print(var1 ^ var2)
"""
19的二进制
000 ... 10011
15的二进制
000 ... 01111

000 ... 10011
000 ... 01111
000 ... 11100
"""

<< 左移

"""左移相当于做乘法: 5 * 2的n次幂 """
res = 5 << 4
res = 5 << 3   # 40
# res = 5 << 2 # 20
# res = 5 << 1 # 10
print(res)
"""
000 ... 101
000 ...1010  移动一位
000 ..10100  移动两位
"""

>> 右移

"""右移相当于做除法: 5 // 2的n次幂"""
res = 5 >> 1
res = 5 >> 2
print(res)
"""
000 ... 101
000 ... 010 移动一位
000 ... 001 移动两位
"""

~ 按位非 [针对于补码进行操作,按位取反,包括符号位]

公式 : -(n+1)
var = ~19
print(var)
"""
原码:000 ... 10011
反码:000 ... 10011
补码:000 ... 10011

补码:   000 ... 10011
按位非: 111 ... 01100

给补码求原码:
补码: 111 ... 01100
反码: 100 ... 10011
原码: 100 ... 10100  -20
"""
var = ~(-19)
print(var)
"""
原码: 100 ... 10011
反码: 111 ... 01100
补码: 111 ... 01101

补码:   111 ... 01101
按位非: 000 ... 10010

正数 : 补码 = 反码 = 原码
000 ... 10010  => 18
"""

总结:

"""
(1) 个别运算符
	优先级最高的 ** 幂运算
	优先级最低的 =  赋值运算
	() 括号可以提升运算的优先级
	
(2) 整体 一元运算符 > 二元运算符
	一元运算符: 同一时间,只操作一个值 - ~
	二元运算符: 同一时间,操作两个值 + - * / ...

(3) 同一层级
	逻辑:  () > not > and > or 
	算数:  乘除 > 加减
	位运算:(<< >>) > & > ^ > |
	
(4) 其他情况
	算数运算符 > 位运算符 > 比较运算符 > 身份运算符 > 成员运算符 > 逻辑运算符
	赋值运算符用来将算好的值赋值给等号左侧变量,做收尾工作.
"""

res = 5 + 5 << 6 // 3 is 40 and True
"""
10 << 2 is 40 and True
40 is 40 and True
True and True
True
"""
print(res)
# 能加括号的包起来,让别人能看懂;
res = (5 + 5) << (6 // 3) is 40 and True
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值