math模块
math模块介绍
Python的math模块是一个标准库,提供了一些数学函数和常量,涵盖了数学中的许多常见问题。
math模块提供了许多对浮点数的数学运算函数。
math 模块下的函数,返回值均为浮点数,除非另有明确说明。
要使用 math 函数必须先导入:
import math
数学常量
math模块提供了以下数学常量:
- math.e:自然常数e,约等于2.718
- math.pi:圆周率π,约等于3.1416
- math.tau:数学常数 τ = 6.283185...,精确到可用精度。Tau 是一个圆周常数,等于 2π,圆的周长与半径之比
- math.inf:正无穷大的浮点数,负无穷大,使用 -math.inf ,math.inf 相当于 float('inf') 的输出。
- math.nan: 返回一个浮点值 nan(not a number,不是一个数字),这个值不是一个合法数字,相当于 float('nan') 的输出。
import math
print(math.e) # 2.718281828459045
print(math.pi) # 3.141592653589793
print(math.tau) # 6.283185307179586
数学函数
以下是math模块提供的一些数学函数:
- fabs(x):返回参数x的绝对值。
- ceil(x):向上取整,返回大于等于x的最小整数。
- floor(x):向下取整,返回小于等于x的最大整数。
- sqrt(x):返回参数x的平方根。
- pow(x, y):返回x的y次方。
- exp(x):返回e的x次方。
- factorial(x):返回 x 的阶乘。
- gcd(x,y):返回x,y的最大公约数。
fabs(x)-绝对值
Python math.fabs(x) 方法返回 x 的绝对值。
math.fabs() 函数类似于 abs() 函数,但是他有两点区别:
- abs() 是内置函数。 fabs() 函数在 math 模块中定义。
- 与 Python 内置的abs()不同,math.fabs() 始终将值转换为浮点值。
- math.fabs() 函数只对浮点型跟整型数值有效。 abs() 还可以运用在复数中。
语法如下:
math.fabs(x)
参数说明:
- x -- 必需,数字。如果 x 不是一个数字,返回 TypeError。
返回值
返回一个浮点数,表示 x 的绝对值。
实例
# 导入 math 包
import math
# 输出绝对值
print(math.fabs(2.77))
print(math.fabs(8.32))
print(math.fabs(-99.29))
print(math.fabs(-100))
输出结果:
2.77
8.32
99.29
100.0
ceil(x)-向上取整
Python math.ceil(x) 方法将 x 向上舍入到最接近的整数,返回大于等于x的最小整数
语法如下:
math.ceil(x)
参数说明:
- x -- 必需,数字。如果 x 不是一个数字,返回 TypeError。
返回值
返回一个整数,表示舍入的数字。
实例
# 导入 math 包
import math
# 输出向上舍入到最接近的整数
print(math.ceil(1.4))
print(math.ceil(5.3))
print(math.ceil(-5.3))
print(math.ceil(22.6))
print(math.ceil(10.0))
输出结果:
2
6
-5
23
10
floor(x)-向下取整
Python math.floor(x) 方法将 x 向下舍入到最接近的整数。
向下取整,返回小于等于x的最大整数。
语法如下:
math.floor(x)
参数说明:
- x -- 必需,数字。如果 x 不是一个数字,返回 TypeError。
返回值
返回一个整数 int,表示向下舍入的数字。
实例
# 导入 math 包
import math
# 输出向下舍入到最接近的整数
print(math.floor(0.6))
print(math.floor(1.4))
print(math.floor(5.3))
print(math.floor(-5.3))
print(math.floor(22.6))
print(math.floor(10.0))
输出结果:
0
1
5
-6
22
10
sqrt(x)-平方根
Python math.sqrt(x) 方法返回 x 的平方根。
数字必须大于等于 0。
语法如下:
math.sqrt(x)
参数说明:
- x -- 必需,数字。如果 x 不是一个数字,返回 TypeError。如果数字小于 0,则返回 ValueError。
返回值
返回一个浮点数,表示一个数的平方根。
实例
# 导入 math 包
import math
# 输出平方根
print (math.sqrt(9))
print (math.sqrt(25))
print (math.sqrt(16))
输出结果:
3.0
5.0
4.0
sqrt()返回正数x的根,功能等价于x**0.5,但不能对负数求平方根,不如幂运算符**0.5功能强大。
>>> math.sqrt(9)
3.0
>>> math.sqrt(-9)
Traceback (most recent call last):
File "<pyshell#15>", line 1, in <module>
math.sqrt(-9)
ValueError: math domain error
>>> (-9)**0.5
(1.8369701987210297e-16+3j)
pow(x, y)- x 的 y 次幂
Python math.pow(x, y) 方法返回返回 x 的 y 次幂( 次方 )。
如果 x 为负且 y 不是整数,则返回 ValueError。
该方法会将两个参数转换为浮点数。 math.pow(1.0,x) 或 math.pow(x,0.0),始终返回 1.0。
语法如下:
math.pow(x, y)
参数说明:
- x -- 必需,一个代表基数的数字。
- y -- 必需,一个代表指数的数字。
返回值
返回一个浮点数,表示 x 的 y 次幂。
实例
以下实例返回 9 的 3 次方:
# 导入 math 包
import math
# 输出 9 的 3 次方
print(math.pow(9, 3))
输出结果:
729.0
exp(x)-e的x次幂
Python math.exp(x) 方法返回 e 的 x 次幂(次方)E^x^,其中 e = 2.718281... 是自然对数的基数。
语法如下:
math.exp(x)
参数说明:
- x -- 必需,数字,指定指数。如果 x 不是一个数字,返回 TypeError。
返回值
一个浮点值,表示 e 的 x 次幂。
实例
# 导入 math 包
import math
# 指定不同的指数
print(math.exp(65))
print(math.exp(-6.89))
输出结果:
1.6948892444103338e+28
0.0010179138409954387
factorial(x)-阶乘
Python math.factorial(x) 方法返回 x 的阶乘。
参数只能是正整数。
一个数字的阶乘是所有整数的乘积之和,例如,6 的阶乘是: 6 x 5 x 4 x 3 x 2 x 1 = 720。
语法如下:
math.factorial(x)
参数说明:
- x -- 必需,正整数。如果数字为负数或不是整数,则返回 ValueError。 如果值不是数字,则返回 TypeError。
返回值
返回一个正整数,表示正整数的阶乘。
实例
# 导入 math 包
import math
# 输出正整数的阶乘
print(math.factorial(9))
print(math.factorial(6))
print(math.factorial(12))
输出结果:
362880
720
479001600
gcd(x,y)-最大公约数。
Python math.gcd() 方法返回给定的整数参数的最大公约数。
gcd(0,0) 返回 0。
在 3.9 版更改: 添加了对任意数量的参数的支持,之前的版本只支持两个参数。
语法如下:
math.gcd(*integers)
参数说明:
- *integers -- 必需,数字。如果 x 不是一个数字,返回 TypeError。
返回值
返回一个整数 int,表示两个或多个整数的最大公约数 (GCD)。
实例
# 导入 math 包
import math
# 输出最大公约数
print (math.gcd(3, 6))
print (math.gcd(6, 12))
print (math.gcd(12, 36))
print (math.gcd(-12, -36))
print (math.gcd(5, 12))
print (math.gcd(10, 0))
print (math.gcd(0, 34))
print (math.gcd(0, 0))
输出结果:
3
6
12
12
1
10
34
0
三角函数
以下是math模块提供的一些三角函数:
- sin(x):返回参数x的正弦值,x为弧度。
- cos(x):返回参数x的余弦值,x为弧度。
- tan(x):返回参数x的正切值,x为弧度。
- asin(x):返回参数x的反正弦值,返回值为弧度。
- acos(x):返回参数x的反余弦值,返回值为弧度。
- atan(x):返回参数x的反正切值,返回值为弧度。
sin(x)-正弦值
Python math.sin(x) 返回 x 弧度的正弦值。
要获取指定角度的正弦,必须首先使用 math.radians() 方法将其转换为弧度。
语法如下:
math.sin(x)
参数说明:
- x -- 必需,数字。如果 x 不是数字,则返回 TypeError。
返回值
返回一个浮点数,表示 x 的正弦值,介于 -1 到 1 之间。
实例
# 导入 math 包
import math
# 输出正弦值
print (math.sin(0.00))
print (math.sin(-1.23))
print (math.sin(10))
print (math.sin(math.pi))
print (math.sin(math.pi/2))
输出结果:
0.0
-0.9424888019316975
-0.5440211108893699
1.2246467991473532e-16
1.0
要获取指定角度的正弦,必须首先使用 math.radians() 方法将其转换为弧度:
# 导入 math 包
import math
# 角度 30 先转换为弧度再计算正弦值
print(math.sin(math.radians(30)))
# 角度 90 先转换为弧度再计算正弦值
print(math.sin(math.radians(90)))
输出结果:
0.49999999999999994
1.0
cos(x)--余弦值
Python math.cos(x) 返回 x 弧度的余弦值。
语法如下:
math.cos(x)
参数说明:
- x -- 必需,数字。如果 x 不是数字,则返回 TypeError。
返回值
返回一个浮点数,表示 x 的余弦值,介于 -1 到 1 之间。
实例
# 导入 math 包
import math
# 输出余弦值
print (math.cos(0.00))
print (math.cos(-1.23))
print (math.cos(10))
print (math.cos(3.14159265359))
输出结果:
1.0
0.3342377271245026
-0.8390715290764524
-1.0
tan(x)-正切值
Python math.tan(x) 返回 x 弧度的正切值。
语法如下:
math.tan(x)
参数说明:
- x -- 必需,数字。如果 x 不是数字,则返回 TypeError。
返回值
返回一个浮点数,表示 x 的正切值。
实例
# 导入 math 包
import math
# 输出正切值
print (math.tan(90))
print (math.tan(-90))
print (math.tan(45))
print (math.tan(60))
输出结果:
-1.995200412208242
1.995200412208242
1.6197751905438615
0.3200403893795629
asin(x)-反正弦值
Python math.asin(x) 返回 x 的反正弦值,结果范围在 -pi/2 到 pi/2 之间。。
math.asin() 接收的参数为 -1 到 1。
语法如下:
math.asin(x)
参数说明:
- x -- 必需,一个数字, -1 到 1 之间。如果 x 不是一个数字,返回 TypeError。
返回值
返回一个浮点数,表示一个数字的反正弦值。
实例
# 导入 math 包
import math
# 输出反正弦值
print(math.asin(0.55))
print(math.asin(-0.55))
print(math.asin(0))
print(math.asin(1))
print(math.asin(-1))
输出结果:
0.5823642378687435
-0.5823642378687435
0.0
1.5707963267948966
-1.5707963267948966
acos(x)-反余弦值
Python math.acos(x) 返回 x 的反余弦,结果范围在 0 到 pi 之间。
math.acos() 接收的参数为 -1 到 1。
math.acos(-1) 返回 math.pi 常量。
语法如下:
math.acos(x)
参数说明:
- x -- 必需,一个数字, -1 到 1 之间。如果 x 不是一个数字,返回 TypeError。
返回值
返回一个浮点数,表示一个数字的反余弦。
实例
# 导入 math 包
import math
# 输出反余弦值
print(math.acos(0.55))
print(math.acos(-0.55))
print(math.acos(0))
print(math.acos(1))
print(math.acos(-1))
输出结果:
0.9884320889261531
2.15316056466364
1.5707963267948966
0.0
3.141592653589793
atan(x)-反正切值
Python math.atan(x) 返回 x 的反正切值,以弧度为单位,结果范围在 -pi/2 到 pi/2 之间。
语法如下:
math.atan(x)
参数说明:
- x -- 必需,个正数或负数。如果 x 不是一个数字,返回 TypeError。
返回值
返回一个浮点数,表示一个数字的反正切值,范围在 -pi/2 到 pi/2 之间。
实例
# 导入 math 包
import math
# 输出反正切值
print (math.atan(0.39))
print (math.atan(67))
print (math.atan(-21))
输出结果:
0.37185607384858127
1.5558720618048116
-1.5232132235179132
对数函数
以下是math模块提供的一些对数函数:
- log(x[, base]):返回参数x的自然对数,如果指定了base,则返回以base为底的对数。
- log10(x):返回参数x的以10为底的对数。
- log2(x):返回参数x的以2为底的对数。
log(x[,b])
Python math.log(x) 方法使用一个参数,返回 x 的自然对数(底为 e )。
语法如下:
math.log(x[, base])
参数说明:
- x -- 必需,数字。如果 x 不是一个数字,返回 TypeError。如果值为 0 或负数,则返回 ValueError。
- base -- 可选,底数,默认为 e。
返回值
返回一个整数浮点数 float,表示一个数字的自然对数。
实例
# 导入 math 包
import math
# 输出一个数字的自然对数
print(math.log(2.7183))
print(math.log(2))
print(math.log(1))
print(math.log(256,2))
输出结果:
1.0000066849139877
0.6931471805599453
0.0
8.0
log10(x)
Python math.log10(x) 方法返回 x 以 10 为底的对数。
语法如下:
math.log10(x)
参数说明:
- x -- 必需,数字。如果 x 不是一个数字,返回 TypeError。如果值为 0 或负数,则返回 ValueError。
返回值
返回一个整数浮点数 float,表示一个数字以 10 为底的自然对数。
实例
以下实例返回一个数字以 10 为底的自然对数:
# 导入 math 包
import math
# 输出一个数字以 10 为底的自然对数
print(math.log10(2.7183))
print(math.log10(2))
print(math.log10(1))
输出结果:
0.43429738512450866
0.3010299956639812
0.0
log2(x)
Python math.log2(x) 方法返回 x 以 2 为底的对数。
语法如下:
math.log2(x)
参数说明:
- x -- 必需,数字。如果 x 不是一个数字,返回 TypeError。如果值为 0 或负数,则返回 ValueError。
返回值
返回一个整数浮点数 float,表示一个数字以 2 为底的自然对数。
实例
以下实例返回一个数字以 2 为底的自然对数:
# 导入 math 包
import math
# 输出一个数字以 2 为底的自然对数
print(math.log2(2.7183))
print(math.log2(2))
print(math.log2(1))
输出结果:
1.4427046851812222
1.0
0.0
其他函数
degrees(x)-弧度转角度
Python math.degrees(x) 方法将角度 x 从弧度转换为度数。
PI (3.14..) 弧度等于 180 度,也就是说 1 弧度等于 57.2957795 度。
语法如下:
math.degrees(x)
参数说明:
- x -- 必需,数字。如果 x 不是一个数字,返回 TypeError。
返回值
返回一个浮点数,表示角度。
实例
# 导入 math 包
import math
# 输出弧度转换为度数
print (math.degrees(8.90))
print (math.degrees(-20))
print (math.degrees(1))
print (math.degrees(90))
输出结果:
509.9324376664327
-1145.9155902616465
57.29577951308232
5156.620156177409
radians(x)-角度转弧度
Python math.radians(x) 方法将角度 x 从度数转换为弧度。
语法如下:
math.radians(x)
参数说明:
- x -- 必需,数字。如果 x 不是一个数字,返回 TypeError。
返回值
返回一个浮点数,表示弧度值。
实例
# 导入 math 包
import math
# 输出度数转换为弧度
print(math.radians(180))
print(math.radians(100.03))
print(math.radians(-20))
输出结果:
3.141592653589793
1.7458528507699278
-0.3490658503988659
模拟考题
考题1 单选题
使用turtle.fd()函数和turtle.left()函数绘制一个边长为200像素的正方形及一个外接圆,如图所示,应在横线处补充哪一个选项,不得修改其他代码?( )
import turtle
turtle.pensize(2)
turtle.color('#FF8EFF','#2F0000')
for i in range(4):
turtle.fd(200)
turtle.left(90)
turtle.left(-45)
turtle.circle(______*pow(2,0.5))
A. 100
B. 50
C. 200
D. -100
答案:A
解析:正方形边长是200,则该圆的半径是100,所以此处是100。
考题2 单选题
编写Python程序实现:输入圆的半径,输出圆的面积。
import math
r=float(input())
________________
print(s)
下列语句不可以完善程序,实现相关功能的是?( )
A. s=math.pi*math.pow(r,2)
B. s=math.pi*r**2
C. s=math.pi*r*r
D. s=pi*r*r
答案:D
解析:math.pi:圆周率π,约等于3.1416
math.pow(x, y) 方法返回返回 x 的 y 次幂( 次方 )
考题3 单选题
下列哪个选项是Python math库的数字常量?( )
A. math.log
B. math.inf
C. math.rnd
D. math.exp
答案:B
解析:math.inf:正无穷大的浮点数,负无穷大,使用 -math.inf ,math.inf 相当于 float('inf') 的输出
math.tau:数学常数 τ = 6.283185...,精确到可用精度。Tau 是一个圆周常数,等于 2π,圆的周长与半径之比
math.e:自然常数e,约等于2.718
math.pi:圆周率π,约等于3.1416
考题4 单选题
下列代码运行后的结果是?( )
import math
a=math.floor(10.2)
print(a)
A. 10.20
B. 10.0
C. 11
D. 10
答案:D
解析:python中math库应用。 math.floor是向下取整函数