运算符
运算符 用于执行程序代码运算,会针对一个以上操作数项目来进行运算。例如:
2+3
,其 操作数 是2
和3
,而 运算符 则是+
<br/>
Python 运算符
点击下面链接即可跳转到对应知识点位置。
<br/>
IPython 使用介绍
IPython
是一个Python
的交互式Shell
,比默认的Python Shell
好用得多,支持变量自动补全,自动缩进,支持bash shell
命令,内置了许多很有用的功能和函数。这里将使用
IPython
交互式解释器来进行Python
语法的测试。
文字操作系统与外部最主要的接口就叫做 Shell
。Shell 是操作系统最外面的一层。Shell 管理你与操作系统之间的交互:等待你输入,向操作系统解释你的输入,并且处理各种各样的操作系统的输出结果。
<br/>
Shell
俗称壳(用来区别于核),是指为使用者提供操作界面的软件 (Command Interpreter,命令解释器),类似于 Windows
中的 cmd
和 PowerShell
。它接收用户输入的命令,然后调用相应的应用程序。
<br/>
安装 IPython
打开 CMD
输入如下指令,即可安装 IPython
pip install ipython
<br/>
pip (package installer for Python) 是 Python 包管理工具,该工具提供了对Python 包的查找、下载、安装、卸载的功能。在安装Python解释器时,就给用户配置好了,可以直接使用。
<br/>
使用 IPython
使用 Win + R
快捷键调出运行窗口输入 ipython
或者在 CMD
窗口输入 ipython
即可进入 ipython
解释器
然后输入相应的 Python
语法就会得到对应的解释结果。如下演示
<br/>
优点
- 适合于学习/验证 Python 语法或者局部代码
缺点
- 代码不能保存
- 不适合运行太大的程序
<br/>
算术运算符
运算符 | 描述 | 实例 |
---|---|---|
+ |
加 | 3 + 6 |
- |
减 | 10 - 5 |
* |
乘 | 10 * 20 |
/ |
除 | 10 / 20 |
// |
取整除 | 返回除法的整数部分(商) 9 // 2 输出结果 4 |
% |
取余数 | 返回除法的余数 9 % 2 |
** |
幂 | 又称次方、乘方,2 ** 3 |
<br/>
IPython 测验
加减算术运算符测验
In [15]: # 加法运算
In [16]: a = 3
In [17]: b = 6
In [18]: c = a + b
In [19]: c
Out[19]: 9
In [20]: a + b
Out[20]: 9
In [21]: # 减法运算
In [22]: a = 10
In [23]: b = 5
In [24]: a - b
Out[24]: 5
<br/>
乘除算术运算符测验
In [25]: # 乘法运算
In [26]: a = 10
In [27]: b = 20
In [28]: a * b
Out[28]: 200
In [29]: 10 * 20
Out[29]: 200
In [30]: # 除法运算
In [31]: 10 / 20
Out[31]: 0.5
In [32]: # 取整除
In [33]: 10 / 3 # 普通除
Out[33]: 3.3333333333333335
In [34]: 10 //3 # 整除
Out[34]: 3
<br/>
取余、幂算术运算符测验
In [35]: # 取余数
In [36]: 10 % 3
Out[36]: 1
In [37]: # 幂运算
In [38]: 2 ** 3
Out[38]: 8
In [39]: 2 ** 10
Out[39]: 1024
<br/>
比较运算符
假设 a=20
,b=30
运算符 | 描述 | 实例 |
---|---|---|
== |
等于 | (a == b) 返回 False |
!= |
不等于 | (a != b) 返回 True |
> |
大于 | (a > b) 返回 False |
< |
小于 | (a < b) 返回 True |
>= |
大于等于 | (a >= b) 返回 False |
<= |
小于等于 | (a <= b) 返回 True |
<br/>
IPython 测验
等于、不等于比较运算符测验
In [41]: # 等于比较运算符
In [42]: a = 20
In [43]: b = 30
In [44]: a == b
Out[44]: False
In [45]: # 不等于
In [46]: a != b
Out[46]: True
<br/>
大于、小于比较运算符测验
In [47]: # 大于
In [48]: a > b
Out[48]: False
In [49]: # 小于
In [50]: a < b
Out[50]: True
<br/>
大于等于、小于等于比较运算符测验
In [51]: # 大于等于
In [52]: a >= b
Out[52]: False
In [53]: # 小于等于
In [54]: a <= b
Out[54]: True
<br/>
赋值运算符
运算符 | 描述 | 实例 |
---|---|---|
= |
简单的赋值运算符 | c = a + b 将 a + b 的运算结果赋值为 c |
+= |
加法赋值运算符 | c += a 等效于 c = c + a |
-= |
减法赋值运算符 | c -= a 等效于 c = c - a |
*= |
乘法赋值运算符 | c = a 等效于 c = c a |
/= |
除法赋值运算符 | c /= a 等效于 c = c / a |
//= |
取整除赋值运算符 | c //= a 等效于 c = c // a |
%= |
取 模 (余数)赋值运算符 | c %= a 等效于 c = c % a |
**= |
幂赋值运算符 | c **= a 等效于 c = c** a |
<br/>
IPython 测验
等于、加等于、减等于赋值运算符测验
In [56]: # 赋值运算符测验
In [57]: # 等于赋值运算
In [58]: a = 10
In [59]: b = 20
In [60]: c = a + b
In [61]: c
Out[61]: 30
In [62]: # 加等于
In [63]: a = 1
In [64]: a += 1
In [65]: a
Out[65]: 2
In [66]: # 减等于
In [67]: a = 10
In [68]: a -= 1
In [69]: a
Out[69]: 9
<br/>
乘等于、除等于、取整除赋值运算符测验
In [70]: # 乘等于
In [71]: a = 10
In [72]: a *= 5
In [73]: a
Out[73]: 50
In [74]: # 除等于
In [75]: a = 100
In [76]: a /= 10
In [77]: a
Out[77]: 10.0
In [78]: # 取整除赋值运算
In [79]: a = 10
In [80]: a /= 3 # 普通除等于
In [81]: a
Out[81]: 3.3333333333333335
In [84]: a = 10
In [85]: a //= 3 # 取整除
In [86]: a
Out[86]: 3
<br/>
取余数、幂赋值运算符测验
In [87]: # 取余数赋值运算
In [88]: a = 10
In [89]: a %= 3
In [90]: a
Out[90]: 1
In [91]: # 幂赋值运算
In [92]: a = 2
In [93]: a **= 3
In [94]: a
Out[94]: 8
<br/>
就是在算术运算符基础上在进行赋值运算
<br/>
逻辑运算符
运算符 | 逻辑表达式 | 描述 |
---|---|---|
and |
x and y |
布尔"与" - 要两边表达式都满足才返回 True ,否则 False |
or |
x or y |
布尔"或" - 其中一边表达式满足就返回 True ,两边都不满足才 False |
not |
not x |
布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 |
<br/>
and
逻辑运算符 IPython 测验
In [100]: # and 逻辑运算符测验
In [101]: age = 21
In [102]: age > 18 and age < 30
Out[102]: True
In [103]: age > 30 and age < 18
Out[103]: False
In [108]: age < 18 and age == 21
Out[108]: False
<br/>
使用
and
逻辑运算符的时候,如果
左边表达式不满足条件的话,将不会进行右边的表达式运算
In [115]: a = 21
In [116]: a > 18 and a == 1 / 0
---------------------------------------------------------------------------
ZeroDivisionError Traceback (most recent call last)
<ipython-input-116-9ea6c0ccc2d0> in <module>
----> 1 a > 18 and a == 1 / 0
ZeroDivisionError: division by zero
In [117]: a < 18 and a == 1 / 0
Out[117]: False
这样以一个除0错误信息来证明,
a = 21
a > 18 and a==1/0
首先左边表达式 a > 18
符合条件然后进行右边表达式运算 a == 1/0
,由于被除数不能为 0
因此Python解释器报错 division by zero
。
a = 21
a < 18 and a==1/0
首先左边表达式 a < 18
不满足条件,由于又是 and
运算符,不会进行右边 a == 1/0
运算,因此不会报错并方 False
。
<br/>
or
逻辑运算符 IPython 测验
In [118]: # or 逻辑运算符测验
In [119]: score = 75
In [120]: score > 60 or socre < 80
Out[120]: True
In [121]: score > 60 or socre > 90
Out[121]: True
In [123]: score > 100 or score > 60
Out[123]: True
In [124]: score < 60 or score > 100
Out[124]: False
<br/>
使用
or
逻辑运算符时,如果
左边表达式满足条件的话,将不会进行右边的表达式运算
还是以除0错误来展示:
In [126]: score = 95
In [127]: score > 90 or score == score / 0
Out[127]: True
In [128]: score < 90 or score == score / 0
---------------------------------------------------------------------------
ZeroDivisionError Traceback (most recent call last)
<ipython-input-128-fd77ee8475bb> in <module>
----> 1 score < 90 or score == score / 0
ZeroDivisionError: division by zero
In [129]:
<br/>
not
逻辑运算符 IPython 测验
In [137]: a = 100
In [138]: a == 100
Out[138]: True
In [139]: a == 10
Out[139]: False
In [140]: not a == 100
Out[140]: False
In [141]: not a == 10
Out[141]: True
<br/>
not
逻辑运算符就是起取反作用,表达式成立就False
, 不成立则True
<br/>
位运算符
按位运算符是把数字看作二进制来进行计算的,Python中有如下表位运算符
<br/>
运算符 | 描述 | |
---|---|---|
& |
按位与运算符:参与运算的两个值,如果两个相应位都为1 ,则该位的结果为1 ,否则为0 |
|
**`\ | `** | 按位或运算符:只要对应的二个二进位有一个为 1 时,结果位就为1 。 |
^ |
按位异或运算符:当两对应的二进位相异时,结果为1 | |
~ |
按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1。~x 类似于 -x-1 | |
<< |
左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。 | |
>> |
右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数 |
<br/>
IPython 测验
我们默认输入的数字是10进制,为了让测验更加明了,因此要借助
bin()
,将
10进制转换成2进制。
bin()
函数的简单使用
In [6]: bin(10)
Out[6]: '0b1010'
In [7]: bin(8)
Out[7]: '0b1000'
0b
就代表是二进制
<br/>
按位与、按位或,位运算符测验
In [0]: # 按位与 &
In [1]: bin(10)
Out[1]: '0b1010'
In [2]: bin(8)
Out[2]: '0b1000'
In [3]: a = 10
In [4]: b = 8
In [5]: a & b
Out[5]: 8
In [6]: bin(a & b)
Out[6]: '0b1000'
In [7]: # 按位或
In [8]: a | b
Out[8]: 10
In [9]: bin(a | b)
Out[9]: '0b1010'
<br/>
按位异或、按位取反,位运算符测验
In [10]: # 按位异或
In [11]: a = 10
In [12]: b = 8
In [13]: bin(a)
Out[13]: '0b1010'
In [14]: bin(b)
Out[14]: '0b1000'
In [15]: a ^ b
Out[15]: 2
In [16]: bin(a ^ b)
Out[16]: '0b10'
In [17]: # 按位取反
In [18]: a = 13
In [19]: bin(a) # 0000 1101
Out[19]: '0b1101'
In [20]: bin(~a) # 1111 1110 带符号位的2进制补码呈现
Out[20]: '-0b1110'
In [21]: ~a
Out[21]: -14
<br/>
按位取反后,由于保存的是二进制补码形式,因此就牵扯到了二进制的原、反、补知识点
原码表示法 是一种最简单的机器数表示法,其最高位为符号位,符号位为 0 时表示该数为 正,为 1 时则表示为 负。例如: [x]原 = 0000 0001,其十进制为 1,[x]原 = 1000 0001,十进制则为 -1。
<br/>
原、反、补转换技巧
- 正数原反补相同
- 负数的补码等于其反码加1,转反码时符号位不变,其余按位取反
- 补码的补码是原码
<br/>
因此当 a = 13
时,这里以 8位 表示一个二进制
- 13二进制为:
0000 1101
- 13按位取反后为:
1111 0010
,这是带符号位的二进制补码
因此要将 1111 0010
补码转换成原码,假设 [x]补码 为 1111 0010
,根据补码的补码就是原码就可得出
[x]补 = 1111 0010
[x]原 = 1000 1101 + 1 # 1是十进制,换成8位2进制为 0000 0001,2进制运算是逢2进1
[x]原 = 1000 1110
[x]补 = 1111 0010
得出 [x]原 = 1000 1110
,符号位为 1
则是负数因此换成十进制则为 -14
。推导结果与测验结果一致。
<br/>
左移动、右移动,位运算符测验
In [27]: # 左移 <<
In [27]: a = 10
In [28]: bin(a)
Out[28]: '0b1010' # 0000 1010
In [29]: bin(a << 2)
Out[29]: '0b101000' # 0010 1000
In [30]: a << 2
Out[30]: 40
In [31]: # 右移 >>
In [32]: b = 7
In [33]: bin(7)
Out[33]: '0b111' # 0000 0111
In [34]: bin(b >> 2)
Out[34]: '0b1' # 0000 0001
In [35]: b >> 2
Out[35]: 1
<br/>
成员运算符
成员运算符用于 测试 序列中是否包含指定的 成员
运算符 | 描述 |
---|---|
in |
如果在指定的序列中找到值返回 True ,否则返回 False |
not in |
如果在指定的序列中没有找到值返回 True ,否则返回 False |
<br/>
IPython 测验
In [37]: 3 in (1, 2, 3)
Out[37]: True
In [38]: 3 not in (1, 2, 3, 4, 5)
Out[38]: False
In [39]: 0 not in (1, 2, 3)
Out[39]: True
<br/>
身份运算符
运算符 | 描述 |
---|---|
is |
is 是判断两个标识符是不是引用自一个对象 |
is not |
is not 是判断两个标识符是不是引用自不同对象 |
<br/>
IPython 测验
In [40]: a = 20
In [41]: b = 20
In [42]: a is b
Out[42]: True
In [43]: a is not b
Out[43]: False
In [44]: a is not None
Out[44]: True
<br/>
is
与==
区别:is
用于判断两个变量引用对象是否为同一个,==
用于判断引用变量的值是否相等。
In [46]: a = [1, 2, 3]
In [47]: b = a
In [48]: a is b
Out[48]: True
In [49]: a == b
Out[49]: True
In [50]: c = [1, 2, 3]
In [51]: a is c
Out[51]: False
In [52]: a == c
Out[52]: True
<br/>
Python运算符优先级
以下表格的算数优先级 由高到最低顺序排列
运算符 | 描述 | |
---|---|---|
** |
指数 (最高优先级) | |
~ + - |
按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@) | |
* / % // |
乘,除,求余数和取整除 | |
+ - |
加法减法 | |
>> << |
右移,左移运算符 | |
& |
按位与 运算符 | |
**`^ \ | `** | 按位异或、按位或运算符 |
<= < > >= |
比较运算符 | |
== != |
等于运算符 | |
= %= /= //= -= += *= **= |
赋值运算符 | |
is is not |
身份运算符 | |
in not in |
成员运算符 | |
not and or |
逻辑运算符 |
<br/>
运算符优先级,不用全记下,自己在使用过程中如果不知道优先级可以使用
()
来提升运算符优先级。
In [53]: a = 5
In [54]: b = 6
In [55]: c = 10
In [56]: a + b * c
Out[56]: 65
In [57]: (a + b) * c
Out[57]: 110
<br/>
尾语
✍ 用 Code 谱写世界,让生活更有趣。❤️
✍ 万水千山总是情,点赞再走行不行。❤️
✍ 码字不易,还望各位大侠多多支持。❤️
<br/>