Python 运算符

简介: 运算符 用于执行程序代码运算,会针对一个以上操作数项目来进行运算。例如:2+3,其 操作数 是 `2` 和 `3`,而 运算符则是 +

运算符

运算符 用于执行程序代码运算,会针对一个以上操作数项目来进行运算。

例如:2+3,其 操作数23,而 运算符 则是 +

<br/>

Python 运算符

点击下面链接即可跳转到对应知识点位置。

<br/>

IPython 使用介绍

IPython 是一个 Python 的交互式 Shell ,比默认的 Python Shell 好用得多,支持变量自动补全,自动缩进,支持 bash shell 命令,内置了许多很有用的功能和函数。

这里将使用 IPython 交互式解释器来进行 Python 语法的测试。

文字操作系统与外部最主要的接口就叫做 Shell。Shell 是操作系统最外面的一层。Shell 管理你与操作系统之间的交互:等待你输入,向操作系统解释你的输入,并且处理各种各样的操作系统的输出结果。

<br/>

Shell 俗称壳(用来区别于核),是指为使用者提供操作界面的软件 (Command Interpreter,命令解释器),类似于 Windows 中的 cmdPowerShell。它接收用户输入的命令,然后调用相应的应用程序。

<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 语法就会得到对应的解释结果。如下演示

ipython初步使用

<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=20b=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/>

009.jpg

相关文章
|
1月前
|
Python
Python运算符优先级
Python运算符优先级。
22 3
|
1月前
|
Python
Python成员运算符
Python成员运算符
27 2
|
1月前
|
Python
Python身份运算符
Python身份运算符。
23 1
|
1月前
|
Python
Python赋值运算符
Python赋值运算符。
25 2
|
1月前
|
Python
Python比较运算符
Python比较运算符。
28 2
|
2月前
|
Python
【10月更文挑战第7天】「Mac上学Python 14」基础篇8 - 运算符详解
本篇将详细介绍Python中的运算符,包括数学运算、关系运算、逻辑运算、赋值运算和成员运算等内容。同时会说明运算符的优先级和运算顺序,帮助用户理解和掌握Python中的运算符使用规则。
43 3
【10月更文挑战第7天】「Mac上学Python 14」基础篇8 - 运算符详解
|
2月前
|
自然语言处理 Python
【python从入门到精通】-- 第三战:输入输出 运算符
【python从入门到精通】-- 第三战:输入输出 运算符
75 0
【python从入门到精通】-- 第三战:输入输出 运算符
|
2月前
|
存储 Java 编译器
Python学习三:学习python的 变量命名规则,算数、比较、逻辑、赋值运算符,输入与输出。
这篇文章是关于Python编程语言中变量命名规则、基本数据类型、算数运算符、比较运算符、逻辑运算符、赋值运算符以及格式化输出与输入的详细教程。
25 0
Python学习三:学习python的 变量命名规则,算数、比较、逻辑、赋值运算符,输入与输出。
|
2月前
|
Python
Python操作:字符串--列表--元组--字典--运算符 (一)
Python操作:字符串--列表--元组--字典--运算符 (一)
23 0
|
2月前
|
Python
Python操作:字符串--列表--元组--字典--运算符 (二)
Python操作:字符串--列表--元组--字典--运算符 (二)
23 0