在编程中,数字是非常常见的。它们用于表示屏幕尺寸、地理位置、货币和点数、视频中经过的时间、游戏角色的位置以及通过分配数值代码表示颜色。
在编程中有效地执行数学运算是一种重要的技能,因为你会经常使用数字。尽管对数学有高层次的理解可以帮助你成为一个更好的程序员,但这并不是先决条件。如果你在数学方面没有背景,尝试将数学视为实现你想要达到的目标的工具,以及提高逻辑思维的方式。
我们将使用Python的两种最常用的数字数据类型,即整数和浮点数:
-1
,0
,1
,…)。9.0
或-2.25
)。本教程将介绍在 Python 中可用于数字数据类型的运算符。
运算符是指示操作的符号或函数。例如,在数学中,加号或+
是指示加法的运算符。
在Python中,我们将看到一些熟悉的从数学中引入的运算符,但我们将使用的其他运算符是特定于计算机编程的。
以下是Python中与数学相关的运算符的快速参考表。在本教程中,我们将涵盖下面所有的运算。
操作 | 返回什么 |
---|---|
x + y | x和y的和 |
x - y | x和y的差 |
-x | x的符号变为相反 |
+x | x本身 |
x * y | x和y的积 |
x / y | x和y的商 |
x // y | x和y的floor除法商 |
x % y | x除以y的余数 |
x ** y | x的y次方 |
我们还将涵盖复合赋值运算符,包括+=
和*=
,它们将算术运算符与=
运算符结合在一起。
在Python中,加法和减法运算符的使用方式与数学类似。实际上,你可以将Python编程语言当作计算器使用。
让我们回顾一些例子,首先是整数:
print(1 + 5)
6
我们可以将整数直接传递到print
语句中,但也可以初始化变量以代表整数值:
a = 88
b = 103
print(a + b)
191
由于整数可以是正数、负数或0(而且还可以是负数),我们可以将负数与正数相加:
c = -36
d = 25
print(c + d)
-11
对于浮点数,加法的行为类似:
e = 5.5
f = 2.5
print(e + f)
8.0
因为我们将两个浮点数相加,所以Python返回了一个带有小数点的浮点数值。
减法的语法与加法相同,只是将运算符从加号(+
)更改为减号(-
):
g = 75.67
h = 32
print(g - h)
43.67
在这里,我们从浮点数中减去了一个整数。如果参与方程的数字中至少有一个是浮点数,Python将返回一个浮点数。
一元数学表达式只包含一个组件或元素,在Python中,加号和减号可以作为与值配对的单个元素使用,返回值的身份(+
)或更改值的符号(-
)。
虽然不常用,加号表示值的身份。我们可以将加号与正值一起使用:
i = 3.3
print(+i)
3.3
当我们使用加号与负值一起使用时,它还将返回该值的身份,并且在这种情况下,它将是负值:
j = -19
print(+j)
-19
对于负值,加号返回相同的负值。
另一方面,减号将更改值的符号。因此,当我们传递正值时,减号将返回负值:
i = 3.3
print(-i)
-3.3
或者,当我们使用负值的一元运算符时,将返回正值:
j = -19
print(-j)
19
加号和减号指示的一元算术运算符将分别返回值的身份(对于+i
)或该值的相反符号(对于-i
)。
与加法和减法类似,乘法和除法在Python中看起来与数学中的形式非常相似。在Python中用于乘法的符号是*
,用于除法的符号是/
。
以下是在Python中使用两个浮点数进行乘法的示例:
k = 100.1
l = 10.1
print(k * l)
1011.0099999999999
在Python 3中,无论使用两个整数还是两个浮点数,你的商将始终以浮点数返回:
m = 80
n = 5
print(m / n)
16.0
这是Python 2和Python 3之间的主要变化之一。 Python 3的方法提供了一个分数答案,因此当你使用/
将11
除以2
时,将返回商为5.5
。在Python 2中,表达式11 / 2
的商是5
。
Python 2的/
运算符执行floor除法,其中对商x
的返回数字是小于或等于x
的最大整数。如果你使用Python 2而不是Python 3运行上面的示例print(80 / 5)
,你将得到没有小数点的输出16
。
在Python 3中,您可以使用//
执行floor除法。表达式100 // 40
将返回2
的值。在需要商为整数的情况下,floor除法非常有用。
%
运算符是模数,它返回除法后的余数,而不是商。这对于查找相同数字的倍数非常有用,例如。
让我们看看模数的示例:
o = 85
p = 15
print(o % p)
10
要分解这个问题,85除以15的商是5,余数是10。这里返回的值是10
,因为模数运算符返回除法表达式的余数。
如果我们使用两个浮点数进行模数运算,将返回余数的浮点值:
q = 36.0
r = 6.0
print(o % p)
0.0
在36.0除以6.0的情况下,没有余数,因此返回值为0.0
。
在Python中,**
运算符用于将左侧的数字提高到右侧的指数。也就是说,在表达式5 ** 3
中,5正在被提高到3次方。在数学中,我们经常看到这个表达式被写为53,实际上是5乘以自身3次。在Python中,通过运行5 ** 3
或5 * 5 * 5
,我们将得到相同的结果125
。
让我们看一个带有变量的例子:
s = 52.25
t = 7
print(s ** t)
1063173305051.292
将浮点数52.25
提高到7
次方通过**
运算符得到了一个大的浮点数值。
在Python中,与数学一样,我们需要牢记运算符将按照优先级的顺序进行评估,而不是从左到右或从右到左。如果我们看看以下表达式:
u = 10 + 10 * 5
我们可能会从左到右阅读它,但请记住,首先将执行乘法,因此如果我们调用print(u)
,我们将得到以下值:
60
这是因为10 * 5
等于50
,然后我们加上10
得到最终结果60
。
如果相反,我们想要将值10
添加到10
,然后将该总和乘以5
,我们可以使用括号,就像我们在数学中使用括号一样:
u = (10 + 10) * 5
print(u)
100
通过使用括号,我们可以明确指定先执行加法,然后将总和乘以5
。
一个记住运算顺序的方法是使用缩写 PEMDAS:
顺序 | 字母 | 代表 |
---|---|---|
1 | P | Parentheses(括号) |
2 | E | Exponent(指数) |
3 | M | Multiplication(乘法) |
4 | D | Division(除法) |
5 | A | Addition(加法) |
6 | S | Subtraction(减法) |
你可能熟悉另一种关于运算顺序的缩写,比如 BEDMAS 或 BODMAS。无论哪个缩写对您来说更好,都要在Python中执行数学运算时牢记,以便返回您期望的结果。
最常见的赋值运算符是你已经使用过的:等号 =
。=
赋值运算符将右侧的值分配给左侧的变量。例如,v = 23
将整数23
的值分配给变量v
。
在编程中,通常会使用复合赋值运算符,在变量的值上执行操作,然后将结果新值分配给该变量。这些复合运算符将算术运算符与=
运算符结合在一起,因此对于加法,我们将+
与=
结合使用,得到复合运算符+=
。让我们看看它是如何工作的:
w = 5
w += 1
print(w)
6
首先,我们将变量w
设置为值5
,然后使用+=
复合赋值运算符将右侧的数字添加到左侧变量的值,然后将结果分配给w
。
在for循环的情况下,复合赋值运算符经常用于当您想要多次重复一个过程时:
for x in range (0, 7):
x *= 2
print(x)
0
2
4
6
8
10
12
使用for循环,我们能够自动执行*=
运算符,将变量w
乘以数字2
,然后将结果分配给变量w
以进行for循环的下一次迭代。
Python为本教程中讨论的每个算术运算符都有一个复合赋值运算符:
y += 1 # 加法后再分配值
y -= 1 # 减法后再分配值
y *= 2 # 乘法后再分配值
y /= 3 # 除法后再分配值
y // = 5 # floor除法后再分配值
y **= 2 # 增加到幂次方后再分配值
y %= 3 # 返回余数后再分配值
当需要逐步递增或递减事物,或者当需要在程序中自动执行某些过程时,复合赋值运算符非常有用。