1 算术运算符
算术运算符用于组织整数类型和浮点类型的数据,有一元运算符和 二元运算符之分。
一元算术运算符有两个:+(正号)和-(负号),例如:+a还是a ,-a是对a的取反运算。
二元算术运算符如右表所示。
2 比较运算符
比较运算符用于比较两个表达式的大小,其结果是布尔类型的数据 ,即True或False。
问:数字类型的数据可以使用比较运算符进行比较,其他类型的数据也可以吗?
答:比较运算符可用于任意类型的数据,但参与比较的两种类型的数据要相互兼容,即能进行隐式转换。例:整数、浮点和布尔这三种类型是相互兼容的。
3 逻辑运算符
逻辑运算符用于对布尔型变量进行运算,其结果也是布尔型。
问:我听说在很多编程语言中“逻辑与”和“逻辑或”都采用了“短路”设计。什么是“短路”设计?Python是否采用了这种设计?
答:Python也采用了“短路”设计。“短路”指“逻辑与”和“逻辑或”在计算过程中只要结果确定,则不再计算后面的表达式,从而提高效率,有点像电路短路。
4 位运算符
位运算是以二进位(bit)为单位进行运算的,操作数和结果都是整 数类型的数据。
问:取反运算?
答:在按位取反运算中涉及原码、补码、反码运算,比较麻烦。我归纳总结了一个公式:~a = (a+ 1) ×-1,加果a为十进制数178,则~a为十进制数-179; 如果a为十进制-20,则~a为十进制数19。
5 赋值运算符
问:我想编写赋值语句a = a+ b,总觉得这样写比较麻烦,有简便方法吗?
答:嗯,当然有。可以用α+=b替代,+=是赋值运算。赋值运算符只是一种简写,只有算术运算和位运算中的二元运算符才有对应的赋值运算符。
6 运算符的优先级
问:数学中的运算符是有优先级的。程序代码中的运算符是不是也有优先级呢?
答:嗯,这个必须有。程序代码中的运算符与数学中的运算符都是有优先级的,并且基本一致,但是有的运算符在数学中并不存在。我归纳了一个表格,注意,表格中从上到下优先级依次降低,同一行有相同的优先级。
7 练一练
1 设有变量赋值x=3.5;y=4.6;z=5.7,则以下表达式中值为True的 是()。
A.x>y or x>z
B.x!=y
C.z>y+x
D.x<y and not(x>z)
2 下列关于使用“<<”和“>>”操作符,结果正确的是()。
A.0b10100>>4的结果是1
B.0b10100>>4的结果是2
C.0b0000101<<2的结果是20
D.0b0000101<<2的结果是10
3 下列表达式中哪两个相等?()
A.16>>2 B.16/2**2 C.16*4 D.16<<2
4 下列关于运算符优先级描述正确的是( ).
A.算术运算符→赋值运算符→关系运算符,依次从高到低
B.算术运算符→关系运算符→赋值运算符,依次从高到低
C.关系运算符→赋值运算符→算术运算符,依次从高到低
D.关系运算符→算术运算符→赋值运算符,依次从高到