介绍
数字在编程中非常常见,它们被用来表示屏幕大小,地理位置,货币和点,视频中所花费的时间,游戏动画的位置和颜色,通过分配数字代码。
能够在编程中有效地执行数学操作是要发展的一个重要技能,因为你会经常使用数字。虽然对数学的高级别的理解可以帮助你成为一个更好的程序员,但这不是一个前提条件。
我们将使用Python最常用的两个数字数据类型, integers 和 ** floats** :
本教程将讨论可在Python中使用的数字数据类型的运算符。
前提条件
如果您没有设置编程环境,您可以参考本地编程环境的安装和安装指南(https://www.digitalocean.com/community/tutorial_series/how-to-install-and-set-up-a-local-programming-environment-for-python-3)或适用于您的操作系统(Ubuntu, CentOS, Debian 等)的编程环境(https://www.digitalocean.com/community/tutorial_collections/how-to-install-python-3-and-set-up-a-programming-environment)。
运营商
**操作符是指一个操作的符号或函数,例如,在数学中,加符号或+是指加的操作符。
在Python中,我们将看到一些熟悉的运算符,这些运算符来自数学,但我们将使用的其他运算符是专门用于计算机编程的。
以下是Python中的数学相关运算符的快速参考表,我们将在本教程中涵盖以下所有操作。
Operation | What it returns |
---|---|
x + y | Sum of x and y |
x - y | Difference of x and y |
-x | Changed sign of x |
+x | Identity of x |
x * y | Product of x and y |
x / y | Quotient of x and y |
x // y | Quotient from floor division of x and y |
x % y | Remainder of x / y |
x ** y | x to the y power |
我们还将涵盖(https://andsky.com/tech/tutorials/how-to-do-math-in-python-3-with-operators# assignment-operators),包括 +=
和 *=
,将一个算术运算符与 =
运算符相结合。
添加和抽取
在Python中,增量和减量操作器与数学相似,事实上,你可以使用Python编程语言作为计算机。
要跟随本教程中的示例代码,请通过运行python3
命令在本地系统上打开一个Python互动壳,然后您可以复制、粘贴或编辑示例,通过在>>>
提示后添加它们。
让我们看看一些例子,从整数开始:
1print(1 + 5)
1[secondary_label Output]
26
而不是直接将整数传入打印
陈述中,我们可以初始化变量来表示整数值:
1a = 88
2b = 103
3
4print(a + b)
1[secondary_label Output]
2191
由于整数既可以是正数又可以是负数(以及0),我们可以将负数加上正数:
1c = -36
2d = 25
3
4print(c + d)
1[secondary_label Output]
2-11
添加将与浮动行为类似:
1e = 5.5
2f = 2.5
3
4print(e + f)
1[secondary_label Output]
28.0
由于我们一起添加了两个浮点,所以Python 返回了一个浮点值。
提取语法与添加语法相同,除非您将运算符从加号(+
)更改为减号(-
):
1g = 75.67
2h = 32
3
4print(g - h)
1[secondary_label Output]
243.67
在这里,我们从浮点中提取了整数,Python 将返回浮点,如果一个方程中的至少一个数字是浮点。
Unary 算法操作
一个统一的数学表达式仅由一个组件或元素组成,在Python中,加和减符号可以用作与一个值配对的单个元素,以返回值的身份(+
),或更改值的符号(-
)。
虽然不常用,但加值符号表示值的身份,我们可以用加值符号用正值:
1i = 3.3
2print(+i)
1[secondary_label Output]
23.3
当我们使用负值的加值符号时,它也会返回该值的身份,在这种情况下,它将是一个负值:
1j = -19
2print(+j)
1[secondary_label Output]
2-19
负值时,加值表示返回相同的负值。
否则,减值符号会改变一个值的符号,所以当我们传递一个正值时,我们会发现值前的减值符号会返回一个负值:
1i = 3.3
2print(-i)
1[secondary_label Output]
2-3.3
或者,当我们使用负值的减数符号 unary 运算符时,将返回一个正值:
1j = -19
2print(-j)
1[secondary_label Output]
219
由加值符号和减值符号表示的单数算法操作将返回值的身份在+i
的情况下,或值的相反符号在-i
的情况下。
倍增和分裂
像增加和减去一样,倍增和分割将看起来非常类似于他们在数学中所做的事情,我们在Python中使用的符号是*
,我们将使用的符号是/
。
以下是 Python 中使用两种浮动值进行倍增的例子:
1k = 100.1
2l = 10.1
3
4print(k * l)
1[secondary_label Output]
21011.0099999999999
当你在Python 3中分割时,你的系数将始终作为浮点返回,即使你使用两个整数:
1m = 80
2n = 5
3
4print(m / n)
1[secondary_label Output]
216.0
这是Python 2和Python 3之间的主要变化之一(https://andsky.com/tech/tutorials/python-2-vs-python-3-practical-considerations-2# division-with-integers)。Python 3的方法提供了部分答案,所以当您使用 /
以 11' 与
2 进行分割时,将返回 `5.5' 的系数。
Python 2 的 /
运算器执行了 floor division ,对于比分 x
返回的数目是最大的整数小于或等于 x
. 如果您使用 Python 2 而不是 Python 3 运行上面示例的 print(80 / 5)
,您将收到 16
作为输出而没有十进制位置。
在Python 3中,您可以使用 //
来执行地板划分。 表达式 100 // 40' 将返回
2' 的值。
◎ 模块
%
运算符是模块,该运算符返回剩余值,而不是分裂后的量子,例如,用于查找相同数的倍数。
让我们来看看动作中的模块:
1o = 85
2p = 15
3
4print(o % p)
1[secondary_label Output]
210
要打破这一点,85分为15返回5的系数与剩余的10。值 `10'是返回的值,因为模块运算符返回一个分割表达式的剩余部分。
如果我们使用两个浮点与模块,将返回一个浮点值为剩余的:
1q = 36.0
2r = 6.0
3
4print(o % p)
1[secondary_label Output]
20.0
如果 36.0 是由 6.0 分割的,则没有剩余值,因此返回 `0.0’ 的值。
权力
在Python中,**
运算器被用来将左边的数字提高到右边的指数的功率,也就是说,在5 ** 3
表达式中,5
被提升到第三力量,在数学中,我们常常看到这个表达式被渲染为5
和5
并且实际上发生的事情是5
被自己倍增3倍,在Python中,我们会通过运行5 ** 3
或5 * 5 * 5
获得125
的相同结果。
让我们来看看一个变量的例子:
1s = 52.25
2t = 7
3
4print(s ** t)
11063173305051.292
通过**
运算器将浮点52.25
提高到7
的功率,结果返回了大浮点值。
操作员优先级
在Python中,就像在数学中一样,我们需要记住,操作员将以优先顺序进行评估,而不是从左到右或从右到左。
如果我们看下面的表达式:
1u = 10 + 10 * 5
我们可以从左到右读取它,但请记住,首先将进行倍数,所以如果我们调用打印(u)
,我们将获得以下值:
1[secondary_label Output]
260
这是因为10 * 5
评级为50
,然后我们添加10
,以返回60
作为最终结果。
如果相反,我们想将值10
添加到10
,然后把这个总数以5
来倍增,我们可以像我们在数学中那样使用关节:
1u = (10 + 10) * 5
2print(u)
1[secondary_label Output]
2100
记住操作顺序的一种方式是通过缩写 PEMDAS :
Order | Letter | Stands for |
---|---|---|
1 | P | ** P** arentheses |
2 | E | ** E** xponent |
3 | M | ** M** ultiplication |
4 | D | ** D** ivision |
5 | A | ** A** ddition |
6 | S | ** S** ubtraction |
您可能熟悉另一个操作顺序的缩写,例如 BEDMAS 或 ** BODMAS** . 无论缩写对您来说最有效,请尝试在Python中执行数学操作时记住这一点,以便返回您期望的结果。
分配运营商
最常见的分配运算器是您已经使用的运算器:等于字符 =
. =
分配运算器将右侧的值分配给左侧的变量.例如, v = 23
将整数 23
的值分配给变量 v
。
在编程中,通常使用复合分配运算器来执行变量值的操作,然后将结果的新值分配给该变量。这些复合运算器将一个算术运算器与 =
运算器相结合,因此我们将加上 +
和 =
来获得复合运算器 +=
。
1w = 5
2w += 1
3print(w)
1[secondary_label Output]
26
首先,我们将变量w
设置为5
的值,然后我们使用+=
复合分配运算器将正确的数字添加到左变量值,然后将结果分配到w
。
复合分配运算符通常用于 环节 的情况下,当您想要重复一个过程几次时,您将使用:
1for x in range (0, 7):
2 x *= 2
3 print(x)
1[secondary_label Output]
20
32
44
56
68
710
812
使用for loop,我们能够自动化 *=
操作员的过程,该操作员将变量 w' 乘以数字
2,然后将变量
w' 中的结果分配给 for loop 的下一个迭代。
Python为本教程中讨论的每个算术运算符提供一个复合分配运算符:
1y += 1 # add then assign value
2
3y -= 1 # subtract then assign value
4
5y *= 2 # multiply then assign value
6
7y /= 3 # divide then assign value
8
9y // = 5 # floor divide then assign value
10
11y **= 2 # increase to the power of then assign value
12
13y %= 3 # return remainder then assign value
复合分配运算器在需要逐步增加或减少事物或需要在程序中自动化某些流程时可能有用。
结论
本教程涵盖了你将使用的整数和浮动数字数据类型中的许多操作员. 如果你想继续阅读关于Python中的数字,你可以继续到 Python 内置的 3 函数与数字一起工作。
有关其他数据类型的更多信息,请参阅 理解 Python 中的数据类型 3,并通过阅读 如何在 Python 中的数据类型转换 3来了解如何转换数据类型。