运算符
定义:有特殊计算规则的符号> 操作数: 参与运算的数据
> 运算符: 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= '
-------------------------
')
# 证明短路
print( 0 and print('我被没有被短路'))
print( 1 or print('我被没有被短路'))
五、 位运算符
返回值:十进制数1. 原码,反码,补码
> n位机可以储存到的最大数:2**(n-1)-1> 正数:原码、反码、补码都是二进制码
负数:原码 --- 二进制码,最高位取1
反码 --- 除符号位,其余取反
补码 --- 反码+1
> 计算机以补码存储数据,所有的运算都使用补码
> 补码转原码:取反加一(取反和+1不分先后)
> 原码的显示 --- 和-1与运算
> 补码的显示 --- 和0b11111111与运算
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