第三章 运算符

       运算符

定义:有特殊计算规则的符号
> 操作数: 参与运算的数据
> 运算符: n元运算符,取决于操作数的数量
> 表达式: 操作数和运算符的结合

一、 算数运算符

+ - * /     //、  **、  %、
//(地板除)
% (取模) --- <被除数 - 商(向下取整)*除数>,在负数是和取余不同
# 取模运算符号和除数相同

**(乘幂)

        import math
math.fmod() --- 取余(结果为浮点类型,结果符号和被除数相同)

eg.
		# 地板除 
		(-10//3) --- -4
		(10//3)  ---  3
		(10%3)   ---  1
		(-10%3)  ---  2
		# 取余 - 看被除数
		math.fmod(-10, -3)  --- -1.0
		math.fmod(-10,  3)  --- -1.0
		math.fmod(10,  -3)  ---  1.0
		# 取模 - 看除数
		-10%-3             --- -1
		 10%-3             --- -1
		-10% 3             ---  1

####专题,取整方向


二、比较运算符(关系运算符)

1. 常见比较符

> 主要有:== > < >= <= != 
> 返回值为布尔类型
> == 用于判断内容是否相等,对象不一定相等
数值、字符串、字节、元组一般是同一对象

2. 链式比较

                (支持短路比较、可以不同向)

1>3>'a' --- 此处前面部分返回False,后面不在比较
1<3>7

三、 身份比较符

> is / is not
> 可以使用id()查看对象内存地址 
> 数值、字符串、字节、元组, 相同内容使用同一对象
    列表、字典、集合, 同一内容也创建不同对象
  

四、 逻辑运算符

> 与and 、或or、 非 not
> 返回值可能是 布尔类型,可能是 计算值

1. 运算符两侧都是布尔表达式
2. 运算符两侧是其他类型
> 返回两个表达式中的一个
> and如果第一个表达式是True,那么返回第二个表达式;
否则返回第一个表达式;
> or 如果第一个表达式是True,那么返回第一个表达式;
否则返回第二个表达式;
# 返回表达式示例
print(3 and 'abc') --- 'abc'
print(0 or  'abc') --- 'abc'
3. 短路现象
> 如果and表达式第一个为False,或者or第一个表达式为True,不执行第二个表达式
> and 优先级高于 or
        
    #后面表达式是None,整体打印None
    print(True and print('Pitfall')) 
    # 证明优先级
    print( 1 or 1  and 0)
    print((1 or 1) and 0)
    print( 1 or(1  and 0), end= '\n-------------------------\n')
    # 证明短路
    print( 0 and print('我被没有被短路'))
    print( 1 or  print('我被没有被短路'))

五、 位运算符

返回值:十进制数

1. 原码,反码,补码

> n位机可以储存到的最大数:2**(n-1)-1
> 正数:原码、反码、补码都是二进制码
  负数:原码 --- 二进制码,最高位取1
反码 --- 除符号位,其余取反
补码 --- 反码+1
> 计算机以补码存储数据,所有的运算都使用补码

> 补码转原码:取反加一(取反和+1不分先后)


> 原码的显示 --- 和-1与运算

> 补码的显示 --- 和0b11111111与运算

print(bin(value&-1))

2. 位运算符

# 手工计算时,取反、异或结果可以使用计算机,估计使用几位机
(1) & 按位与 如果都是1返回1,否则返回0;
(2) | 按位或 如果存在1返回1,否则返回0;
(3) ^ 按位异或 不同为1,相同为0;
(4) ~ 按位取反 包括符号全部取反
(5) << 左位移 右侧用0填充,左侧如果溢出会影响结果
不溢出的前提下相当于该数值乘以2 --- 计算机不会溢出的
(6) >> 右位移    符号位正数填充0,负数填充1,最右侧删除

如果能整除,除以二;不能整除则向下取整(//)

# 1. 手工计算-27的二进制原码、反码,补码。使用程序输出-27的二进制码,想办法输出补码的显示。验证是否正确
def que1():
    # 手工计算
    print('''
    十进制:    -27         -10         
    原码:      10011011   10001010
    补码:      11100101   11110110
    ''')
    # 验证
    num = int(input('请输入一个整数:'))
    print('{}的补码是{}'.format(num, bin(num&0b11111111)))
    print('{}的原码是{}'.format(num, bin(num & -1)))
# que1()

运行结果:

    十进制:    -27         -10         
    原码:      10011011   10001010
    补码:      11100101   11110110
    
请输入一个整数:-27
-27的补码是0b11100101
-27的原码是-0b11011

六、赋值运算符

= 、+=(+可以用-,*,/等替代)

七、成员运算符

in  、not in


八、运算符优先级

1. 算数运算符 > 比较运算符 > 逻辑运算符 > 赋值运算符
2. ()可以调节优先级
3. 比较运算符中,and优先级高于or



猜你喜欢

转载自blog.csdn.net/u010359398/article/details/81009493
今日推荐