Python中的数学运算符

大家好,欢迎来到 Crossin 的编程教室。

虽然咱们这儿大多数同学都已经有了一些编程基础,但考虑到有刚加入的新同学,偶尔还是要说一点基础向的内容。今天 Crossin 就跟大家说一说 Python 中的数学运算。


在用计算机编程解决问题的过程中,数学运算是很常用的。python自带了一些基本的数学运算方法。


其中加减乘除都比较简单,就和正常数学中的写法一样。要注意的就是在绝大多数编程语言中,乘法是 *,而不是 ×;除法是 /,而不是 ÷。Python 也是如此。

参与计算的可以是数值,也可以是一个表示数字的变量:

print(3 * 7)a = 12print(a / 3)
输出:
214.0
Python 3 里的除法(/)运算的结果是小数,即使结果是可以被整除的。所以上面例子中 a / 3 是 4.0 而不是 4。

如果你就是需要得到整除结果,可以用两个斜杠(//)实现:

print(8 / 2)print(8 // 2)print(9 // 2)
输出:
4.044
可以看到,当不能整除时,// 运算的结果会舍掉余数。

如果你想得的这个余数,可以用取模运算,符号是百分号(%):

print(9 % 2)print(9 % 5)
输出:
14
之前我们在字符串格式化中也见到过 %。对于不同类型的数据,它起到的作用是不同的:对于两个数字就是取模,对于两个字符串则是进行格式化。

另一个很常见的数学运算是乘方,也就是幂运算。在不少编程语言中,用 ^ 符号表示乘方。然而在 Python 中,^ 表示「按位异或」的位操作运算(对此操作不理解也没关系,你通常不太会用到它),而表示乘方的符号则是两个乘号(**):

a = 8b = a ^ 2   # 8和2按二进制位进行与操作print(b)b = a ** 2  # 8的2次方print(b)
输出:
1064
Python 还支持一种叫做「赋值运算符」的操作,就是在数学运算符后加上一个赋值操作符(=),表示将计算后的结果赋值给左边的变量。比如 a += 1,就相当于 a = a + 1 ,是一种简化的写法。加减乘除,包括乘方、整除、取模等操作都可以写成赋值运算符的形式:
a = 7a **= 2print(a)    # 7*7=49a //= 2print(a)    # 49//2=24a %= 2print(a)    # 24%2=0
输出:
49240
在有些语言里,a += 1 和 a -= 1 还可以进一步简化成 a++ 和 a--,但可惜 Python 并不支持。

看看这段代码,你能看出它的作用是什么吗?

x1 = 1y1 = 2x2 = 3y2 = 4dist = ((x1 - x2) ** 2 + (y1 - y2) ** 2) ** 0.5print(dist)

有时我们会在代码中看到类似 5e3 这样的写法,这是科学计数法,表示 5*10的3次方,也就是 5000.0,注意这也都是浮点数。

print(5e3)

输出:

5000.0

此外,Python里内置了一个数学运算模块,叫做math,在使用之前,你需要:

import math

math 包里有几个常量,你可能会用到的:

圆周率π:3.141592...

math.pi

自然常数:2.718281...

math.e

正无穷大,是个浮点数

math.inf

math 里常用的数值运算方法:

对x向上取整,比如x=1.2,返回2

math.ceil(x)

对x向下取整,比如x=1.2,返回1

math.floor(x)

指数运算,得到x的y次方

math.pow(x,y)

对数,默认基底为e。可以使用base参数,来改变对数的基底。比如math.log(100,base=10)

math.log(x)

平方根

math.sqrt(x)

绝对值

math.fabs(x)

三角函数: 

math.sin(x)math.cos(x)math.tan(x)math.asin(x)math.acos(x)math.atan(x)

注意:这里的x是以弧度为单位,所以计算角度的话,需要先换算

角度和弧度互换: 


弧度转角度

math.degrees(x)

角度转弧度

math.radians(x)

以上是你平常可能会用到的函数。除此之外,还有一些,这里就不罗列,可以去

https://docs.python.org/zh-cn/3/library/math.html

查看官方的完整文档。


有了这些函数,可以更方便的实现程序中的计算。比如中学时代算了无数次的一元二次方程求根公式:

图片

现在你就可以写一个函数,输入一元二次方程的a、b、c系数,直接给你数值解。好,这题就留作课后作业吧!


对了,最后再提一个 Python 数学运算时经常被新手踩到的坑:

0.1 + 0.2 == 0.3

你觉得这个比较等式的结果是什么呢?


答案参见旧文:0.1+0.2竟然不等于0.3?!


如果本文对你有帮助,欢迎点赞、评论、转发。你们的支持是我更新的动力~

购买后可加入读者交流群,Crossin为你开启陪读模式,解答你在阅读本书时的一切疑问。
Crossin的其他书籍:
感谢转发和点赞的各位~