内容正文:
专题三 Python运算符
Python程序设计
1
考纲解读
一
1.掌握算术运算符的计算
2.掌握关系运算符的比较
3.掌握成员运算符的判断
4.掌握逻辑运算符表达式的计算
5.掌握位运算符的计算
6.掌握运算符的优先级
7.掌握赋值运算符的计算
知识点梳理-算术运算符
二
算术运算符: + - * / % // **
算术运算符优先级 ** > * / % // > + -
如果有括号( ),括号的优先级大于**
例如: (1+2)**3+(1-2)*3 优先计算括号里面的
+ - 就是按照数学里面的加减法运算,但是python处理浮点数的时候,会出现计算不精确的情况,因此不推荐进行浮点数的加减。
那么接下来我们重点学习 / % // **
知识点梳理-算术运算符
二
a/b 返回的数据类型是浮点型数据
a//b 返回的是整型的数据(前提是两边的操作数都是整数)。记住口诀:向下取整(取得的值小于等于原来值)在处理负数的时候注意,取得的负数绝对值变大。因为负数绝对值越大,值越小。示例:
print(6//4) # 1
print(-9//4) # -3
print(-7//-2) # 3 (等价于7//2)
print(-9//3) # -3
知识点梳理-算术运算符
二
如果两边的操作数有浮点数,则返回的也是浮点数。
a%b 两边操作数为整数返回整数,两边有浮点数返回的也是浮点数。
按照公式来计算: a-b*(a//b) 这个公式主要用于a或b为负数的情况。因为a,b为正数就是数学里面的取余。
知识点梳理-算术运算符
二
a**b a的b次数。但是这里需要注意的是,在Python里面一个数的完全平方根得到的是浮点数。
这里还有一种表示平方根的方法
import math # 导入数学的模块
print(math.sqrt(4)) # sqrt是平方根的意思 结果为 2.0
a**b的表达还有另外一种方式:pow(a,b)
下面我们来详细了解一下pow()函数
pow(x,y) 等价于 x**y
print(pow(2,3)) # 8
pow(x,y,z) 等价于 x**y%z
print(pow(2,3,3)) # 2
知识点梳理-关系运算符
二
关系运算符: > >= < <= != ==
关系运算符优先级一样的,自左往右计算就可以了。
关系运算符的比较结果返回的是bool类型的值
这里的bool值是什么呢?下面我们来详细讲解一下bool值:
bool值只有两个值:True和False 其中True表示正确,False表示错误。在进行数值运算的时候,我们可以把True看成1,False看成0.即True==1 False==0
看右侧的示例:
知识点梳理-关系运算符
二
> >= < <= 不能将不同类型的数据进行比较,系统会报错(TypeError类型错误)但是数值类型里面复数不能参与比较。而!= == 可以将不同类型的数据进行比较。
从上面的例子可以看出,复数之间也是不能比较。
链式比较:
Python还可以用"3<4<7"表示数学中的连续不等式
print(3 < 4 < 7) # 等价于 3<4 and 4<7 结果为True
print(4 > 3 == 3) # 等价于 4>3 and 3==3 结果为True
知识点梳理-成员运算符
二
成员运算符 in 、not in 用于判断对象是否存在于字符串、列表等序列中,成员运算符优先级也是一样的。
A in seq 将A看作是一个整体,判断A是否属于seq中的一员
来看看右侧的示例:
[示例] 证明or、and、ord是否为关键字
知识点梳理-逻辑运算符
二
首先我们需要搞清楚,哪些数据的bool值为True,哪些是False ?
True表示真(条件成立) False表示假(条件不成立)
bool值为False的情况: 0、None(空值)、空对象(空字符串、空列表、空元组、空集合、空字典、range(0),(0j))
除了以上的数据类型,其他的数据bool值为True
Python也提供了一个函数用来判断对象的bool值:bool( )
知识点梳理-逻辑运算符
二
逻辑运算符: not(逻辑非) and(逻辑与) or(逻辑或)
逻辑运算符的优先级: not > and > or
x and y 当x为True 表达式返回y的值 当x为False 表达式返回x的值
x or y 当x为True 表达式返回x的值 当x为False 表达式返回y的值
not x 当x为True 表达式为False 当x为False 表达式为True
记忆技巧:
x and y 需要x和y的值都为True整个表达式才能成立。
x or y x或者y的值为True整个表达式就能成立。
上面的表达式返回的值其实就是决定因子。如果根据x的值就能确定整个表达式的结果,那么返回x的值,如果根据x的值没办法确定整个表达式的结果,那么返回y的值。
来看看右侧的例题
知识点梳理-身份运算符
二
身份运算符: is 、is not (优先级相同)
Python中每个对象都用一个唯一的id进行标识。身份运算符比较时,比较的就是id。用于比较两个对象的内存地址是否相同
Python的内存管理:小整数[-5,256]和字符串值相同则地址也相同,其他类型的值相同地址也不同
示例:
接下来我们来讨论:is 和 == 的区别:
a is b 判断a、b的地址是否相同,即便值相同地址也不一定相同。
a==b 判断a、b的值是否相同,值相同地址则相同。
知识点梳理-位运算符
二
位运算符用于对数字的二进制进行运算。位运算包括左移运算符(<<)、右移运算符(>>)、按位与运算符(&)、按位或运算符(|)、按位异或运算符(^)、按位取反运算符(~)
运算符 描述 示例
<< 左移运算符,将操作数的二进制左位移若干位(左移n位,其实就是在右侧补n个0) 2<<3返回16
>> 右移运算符,将操作数的二进制右位移若干位(右移n位,其实就是去掉右侧的n位) 20>>3返回2
& 按位与运算符,两个操作数对应位都是1返回1,其余返回0 22&3返回2
| 按位或运算符,两个操作数对应位都是0,返回0,其余返回1 32|3返回35
^ 按位异或运算符,两个操作数对应位相同返回0,不同返回1 18^6返回20
~ 按位取反运算符,按照公式-x-1计算即可 ~32返回-33
知识点梳理-运算符优先级
二
算术运算符
关系运算符
成员运算符
逻辑运算符
**
* 、 / 、% 、//
+ 、 -
> 、>= 、< 、<=、 !=、 ==
in 、not in
not
and
or
优先级依次递减
知识点梳理-赋值运算符
二
1.简单赋值赋值
a=1 # 当1的值赋值给变量a
2.链式赋值
a=b=1 # 将1同时赋值给变量a,b
注:链式赋值不能在中间位置加括号。
例如:a=(b=1) 是错误的语句
3.同步赋值
a,b,c=1,2,3 # 将1,2,3分别赋值给变量
注:同步赋值需要保证左右两边的数量保持相同。
例如: a,b=1,2,3 是错误的语句
知识点梳理-赋值运算符
二
4.复合型赋值运算符(增强型赋值运算符)
a=a+b 简写为 a+=b 同理
a=a-b 写为a-=b
a=a*b 写为a*=b
a=a/b 写为a/=b
a=a%b 写为a%=b
a=a//b 写为a//=b
这里除了算术运算符都有增强型赋值运算符之外,
位运算符也有。
注:上面的b可以看做整体
如:a+=a+b 展开之后 a=a+(a+b)
来看看右侧的示例:
限时练习
三
1.x,y=1,2;print(x*10//y**2)的运行结果为( )
A. 1
B. 2
C. 3
D. 4
【答案】B
【解析】1*10//2**2 x先算幂 1*10//4 计算结果为2
限时练习
三
2.-4**4 and -7%10 的运行结果为( )
1
2
C. 3
D. 4
【答案】C
【解析】-4**4的结果为-256,-7%10按照公式a-b*(a//b)计算值为3,-256 and 3的结果为3
限时练习
三
3.2>=1<=1的运行结果为( )
1
B. 0
C. True
D. False
【答案】C
【解析】2>=1<=1 可以改写为 2>=1 and 1<=1 True and True True
限时练习
三
4.下面说法错误的是( )
A. 2 in [[2],3,4]的结果为True
B. 2 not in [1,2,3]的结果为True
C. 3!=2 and 5<=6的结果为True
D. 2+2>=3-5的结果为True
【答案】A
【解析】2 看作整体 在[[2],3,4]里面找不到。因此返回False
限时练习
三
5.-1%2>True and 7%-3的运行结果为( )。
1
B. 0
C. True
D. False
【答案】D
【解析】按照公式a-b*(a//b)计算 1>True and -2 False and -2 False
限时练习
三
6. 下列选项中,关于布尔值的说法错误的是( )。
A. 布尔值只有True和False两个值
B. 布尔值的True==1和False==0
C. (True*3+False*2)//(True*2)的值为2
D. True>=1 和 False>=0 都是成立的
【答案】C
【解析】(True*3+False*2)的值为3,(True*2)的值为2,3//2的值为1
归纳总结
四
谢谢观看
24
$$