Python 运算符

Posted 忆想不到的晖

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 运算符相关的知识,希望对你有一定的参考价值。

运算符

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

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


Python 运算符

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


IPython 使用介绍

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

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

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


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


安装 IPython

打开 CMD 输入如下指令,即可安装 IPython

pip install ipython

pip (python install package)Python 包管理工具,该工具提供了对Python 包的查找、下载、安装、卸载的功能。在安装Python解释器时,就给用户配置好了,可以直接使用。


使用 IPython

使用 Win + R 快捷键调出运行窗口输入 ipython 或者在 CMD 窗口输入 ipython 即可进入 ipython 解释器

然后输入相应的 Python 语法就会得到对应的解释结果。如下演示


优点

  • 适合于学习/验证 Python 语法或者局部代码

缺点

  • 代码不能保存
  • 不适合运行太大的程序

算术运算符

运算符描述实例
+3 + 6
-10 - 5
*10 * 20
/10 / 20
//取整除返回除法的整数部分(商) 9 // 2 输出结果 4
%取余数返回除法的余数 9 % 2
**又称次方、乘方,2 ** 3

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

乘除算术运算符测验

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    

取余、幂算术运算符测验

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

比较运算符

假设 a=20b=30

运算符描述实例
==等于(a == b) 返回 False
!=不等于(a != b) 返回 True
>大于(a > b) 返回 False
<小于(a < b) 返回 True
>=大于等于(a >= b) 返回 False
<=小于等于(a <= b) 返回 True

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

大于、小于比较运算符测验

In [47]: # 大于

In [48]: a > b
Out[48]: False

In [49]: # 小于

In [50]: a < b
Out[50]: True

大于等于、小于等于比较运算符测验

In [51]: # 大于等于

In [52]: a >= b
Out[52]: False

In [53]: # 小于等于

In [54]: a <= b
Out[54]: True


赋值运算符

运算符描述实例
=简单的赋值运算符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

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

乘等于、除等于、取整除赋值运算符测验

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

取余数、幂赋值运算符测验

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

就是在算术运算符基础上在进行赋值运算


逻辑运算符

运算符逻辑表达式描述
andx and y布尔"与" - 要两边表达式都满足才返回 True,否则 False
orx or y布尔"或" - 其中一边表达式满足就返回 True,两边都不满足才 False
notnot x布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。

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
 

使用 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


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

使用 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]:


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

not 逻辑运算符就是起取反作用,表达式成立就 False, 不成立则 True


位运算符

按位运算符是把数字看作二进制来进行计算的,Python中有如下表位运算符


运算符描述
&按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0
|按位或运算符:只要对应的二个二进位有一个为 1 时,结果位就为1
^按位异或运算符:当两对应的二进位相异时,结果为1
~按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1。~x 类似于 -x-1
<<左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。
>>右移动运算符:把">>“左边的运算数的各二进位全部右移若干位,”>>"右边的数指定移动的位数

IPython 测验

我们默认输入的数字是10进制,为了让测验更加明了,因此要借助 bin(),将10进制转换成2进制

bin() 函数的简单使用

In [6]: bin(10)
Out[6]: '0b1010'

In [7]: bin(8)
Out[7]: '0b1000'

0b 就代表是二进制


按位与、按位或,位运算符测验

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'

按位异或、按位取反,位运算符测验

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

按位取反后,由于保存的是二进制补码形式,因此就牵扯到了二进制的原、反、补知识点

原码表示法 是一种最简单的机器数表示法,其最高位为符号位,符号位为 0 时表示该数为,为 1 时则表示为。例如:[x]原 = 0000 0001,其十进制为 1,[x]原 = 1000 0001,十进制则为 -1。


原、反、补转换技巧

  • 正数原反补相同
  • 负数的补码等于其反码加1,转反码时符号位不变,其余按位取反
  • 补码的补码是原码

因此当 a = 13 时,这里以 8位 表示一个二进制

  • 13二进制为:0000 1101
  • 13按位取反后为:1111 0010,这是带符号位的二进制补码

因此要将 1111 0010 补码转换成原码,假设 [x]补码1111 0010 ,根据补码的补码就是原码就可得出

[x]= 1111 0010
[x]= 

以上是关于Python 运算符的主要内容,如果未能解决你的问题,请参考以下文章

Python 中的运算符

python运算符

python基础2 - 运算符

Python运算符

初识python

[python]运算符与表达式