秃顶之路-Day4

Day 4

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

var1=9
var2=8
res=var1+var2
print(res)
/ 除法 (结果为小数)
res = var1 / var2
res = 10 / 5
print(res)
// 地板除 (返回整数)
res = 10 // 5
res = 11 // 4
print(res)

(2) 比较运算符 > < >= <= == !=
比较运算符只会差生两种结果: True 真的 ,False 假的

var1 = 100
var2 = 100

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

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

# = 从右向左,将右侧的值赋值给左侧变量
var1 = 9 
var2 = 2


# += 
"""var1 = var1 + var2"""
# 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)

# //=
"""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
res=',' not in strvar
print(res)
list tuple set 
listvar=['袁伟桌','李虎凌','孙敬华','八戒','少帅']
res='孙敬华' in listvar
print(res)

tupletvar=('袁伟桌','李虎凌','孙敬华','八戒','少帅')
res='高学峰' not in tuplevar
print(res)
dict:in  和 not in 在字典中只判断键,不判断值
dic = {"yr":"英俊帅气","bx":"抠脚大汉","mcp":"高大威猛"}

res = "英俊帅气" in dic # False
res = "yr" in dic
res = "mcp" not in dic
print(res) 

(5) 身份运算符:is 和 is not 检测两个数据在内存中是否是同一值
python 3.6
1.整型: -5 ~ 正无穷

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

2.浮点型: 非负数

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

3.布尔型: 只要值相同即可

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

4.复数: 实数+虚数永远不同,只有虚数的条件除外

var1 = 4-90j
var2 = 4-90j
res = var1 is var2
print(res)

5.容器类型:永远不同

var1 = (1,2,3)
var2 = (1,2,3)
res = var1 is var2
print(res)

(6) 逻辑运算符:and or not
1.and 逻辑与 : 全真则真,一假则假

res=Ture and Ture # Ture
res=Ture and False # False
res=False and Ture # False
res= False and False # False
print(res)

2.or 逻辑或 : 全假则假,一真则真

res=Ture or Ture # Ture
res=Ture or False # Ture
res=False or Ture # Ture
res=False or False # False
print(res)

3.not 逻辑非 : 真变假,假变真

res=not Ture 
res=not False 
print(res)

4.逻辑短路 : 如果出现了短路效果,后面的代码不执行
短路:True or 表达式 False and 表达式

Ture or print('八戒真胖啊')
False and print ('八戒真胖啊')
# bool 类型为假的十种情况
0,0.0,0j,'',(),[].set(),{},False,None

5.逻辑运算符的优先级
() > 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>15 or 100<1000 and 1<2
# res = False or True and False or True and False or True and True
# res = False or False or False or True
# res = False or False or True
# res = False or True
# res = True
print(res)

(7) 位运算符:& | ^ << >> ~
1.按位与 : &

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

0000 ... 10011
0000 ... 01111
0000 ... 00011 => 3
"""

2.按位或 : |

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

0000 ... 10011
0000 ... 01111
0000 ... 11111 => 31
"""

3.按位异或: ^ 两个值不一样,返回真,否则返回假

"""
1 0 => 1
1 1 => 0
0 0 => 0
0 1 => 1
"""
var1 = 19
var2 = 15
print(var1 ^ var2)
"""
19的二进制
0000 ... 10011
15的二进制
0000 ... 01111

0000 ... 10011
0000 ... 01111
0000 ... 11100 => 28
"""

4.左移 : << 左移相当于做乘法 : 5 * 2的n次幂

res = 5 << 1 # 10
res = 5 << 2 # 20
res = 5 << 3 # 40
print(res)
"""
0000 ...  101
0000 ... 1010  移动一位 10
0000    10100  移动二位 20
"""

5.右移 : >> 右移相当于做除法 : 5 // 2的n次幂

res = 5 >> 1 # 2
res = 5 >> 2 # 1
res = 5 >> 3 # 0
print(res)
"""
0000 ...  101
0000 ...  010  移动一位 2
0000 ...  001  移动二位 1
0000 ...  000  移动三位 0

6.按位非 ~ 针对于补码进行操作,按位取反,包括符号位,公式:-(n-1)

var1 = ~19
print(var1)
"""
~ 按位非每一位都取反,包括符号位,求反码每一位除了符号位,都取反.

原码:0000 ... 10011
反码:0000 ... 10011
补码:0000 ... 10011

补码:     0000 ... 10011
按位非:   1111 ... 01100

给你补码求原码:
补码: 1111 ... 01100
反码: 1000 ... 10011
原码: 1000 ... 10100 => -20
"""

var1 = ~(-22)
print(var1)
"""
原码: 1000 ... 10011
反码: 1111 ... 01100
补码: 1111 ... 01101

补码:    1111 ... 01101
按位非:  0000 ... 10010

给你补码求原码:
正数 : 补码 = 反码 = 原码

原码:  0000 ... 10010 => 18
"""

(8) 运算符总结
1.个别运算符:
优先级最高 ** 幂运算
优先级最低 = 赋值运算符
() 括号可以提升运算优先级

2 .整体 一元运算符 > 二元运算符
一元运算符: 同一时间,只操作一个值 - ~
二元运算符: 同一时间,操作两个值 + - * / …

3.同一层级
逻辑: () > not > and > or
算数: 乘除 > 加减
位运算符: ( << >> ) > & > ^ > |

4.其他运算符
算数运算符 > 位运算符 > 比较运算符 > 身份运算符> 成员运算符 > 逻辑运算符
赋值运算符是最后算完进行赋值,做收尾工作的.

res = 5+5 << 6//3 is 40 and True
print(res)

"""
res = 10 << 2 is 40 and True
res = 40 is 40 and True
res = True and True
res = True
"""
# 加上括号包起来,让别人能看懂代码;
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、付费专栏及课程。

余额充值