9.Python基础篇-逻辑运算

算术运算符

除+,-,*,/以外,还有%,**,//。

%:取模 - 返回除法的余数 。

print(3 % 2)

结果:
1

**:幂 - 返回x的y次幂

print(10 ** 2)  # 表示10的2次方

结果:
100

 

//:取整除 - 往小的方向取整数

print(9 // 2)
print(-9 // 2)

结果:
4
-5

比较运算符

==、!=、>、<、>=、<=,比较简单,不再赘述。注意返回值为布尔。

逻辑运算符

逻辑运算的优先级

在没有括号的情况下:not > and > or   同一优先级按照从左至右的顺序计算。

int转换为bool,bool只有真假两个值,所以数字0转换为bool就等于false,非零数字转换为bool就等于True。

NOT

布尔"非" 。如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。

print(not 1 == 1)
print(not 1 == 2)

结果:
False
True

AND

print(1 and 2)#结果为2
print(2 and 1)#结果为1
print(0 and 2)#结果为0
print(0 and 100)#结果为0
结论:andor 相反。
前面为真,返回后面;前面为假,则返回前面的
print(1 > 2 and 2 > 1)#1>2为假,所以返回前面的结果:False
print(2 > 1 and 1 >2)#2>1为真,所以返回后面的结果:False

OR

print(1 or 2)#结果为1
print(2 or 1)#结果为2
print(0 or 2)#结果为2
print(0 or 100)#结果为100
结论:前面为真,返回前面的;前面为假,则返回后面的


print(1 > 2 or 2 > 1)#1>2为假,所以返回后面的:True(2>1=True)
print(2 > 1 or 1 > 2)#2>1为真,所以返回前面的结果:True

结论:数字会返回数字,而逻辑运算只有True,False。

赋值运算符

=:赋值。右边赋值给左边。

+=  :先相加,后赋值。

-=  :先相减,后赋值。

*=  :先相乘,后赋值。

/=  :先相除,后赋值

%=  :先取模,后赋值

**=  :先求幂,后赋值

//=  :先整除,将求出的商赋值给左边

:=  :海象运算符。在表达式中同时进行赋值和返回赋值的值

a = 1  #将1赋值给a
print(a)
# 1

b = 1
b += 2
print(b)
# 3

c = 2
c += 1
print(c)
# 3

d = 3
d *= 2
print(d)
# 6

e = 4
e /= 3
print(e)
# 1.3333333333333333

f = 5
f %= 2
print(f)
# 1

g = 6
g **= 2
print(g)
# 36

h = 6
h //= 2
print(h)
# 3

# 传统写法
n = 10
if n > 5:
    print(n)

# 使用海象运算符
if (n := 10) > 5:
    print(n)
# 可以减少代码的重复

成员运算符

in  :如果在指定的序列中找到值返回 True,否则返回 False。

not in  :如果在指定的序列中没有找到值返回 True,否则返回 False。

身份运算符

is  :判断两个标识符是不是引用自一个对象

is not  :判断两个标识符是不是引用自不同对象

位运算符

&  :按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0.(a & b) 输出结果 12 ,二进制解释: 0000 1100

|  :按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。(a | b) 输出结果 61 ,二进制解释: 0011 1101

^  :按位异或运算符:当两对应的二进位相异时,结果为1.(a ^ b) 输出结果 49 ,二进制解释: 0011 0001

~  :按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1。~x 类似于 -x-1。(~a ) 输出结果 -61 ,二进制解释: 1100 0011, 在一个有符号二进制数的补码形式。

<<  :左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。a << 2 输出结果 240 ,二进制解释: 1111 0000

>>  :右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数。a >> 2 输出结果 15 ,二进制解释: 0000 1111

 is 与 == 的区别

is比较的是内存地址;==比较的是value是否相等

a = [1, 2, 3]  
b = a  
c = [1, 2, 3]  

# 使用is比较    
print(a is b)  # True,因为a和b指向同一个对象  
print(a is c)  # False,因为a和c虽然内容相同,但指向不同的对象  
  
# 使用==比较  
print(a == c)  # True,因为a和c的内容相同  

 

posted @ 2021-08-08 14:52  邵杠杠  阅读(380)  评论(0编辑  收藏  举报