在Scratch中,有这样一条不怎么常用但非常强大的指令:
它可以为我们完成许多数学计算工作。包括:
- 求绝对值
- 向下取整
- 向上取整
- 平方根
- sin
- cos
- tan
- asin
- acos
- atan
- ln
- log
- e^
- 10^
实际上,这就是一个强大的数学函数库,在绘制一些复杂图形的时候,我们会用到里面的函数。这些函数要是我们自己用基本的运算指令来实现那可太麻烦了,直接用就行。
对应到Python编程,除了基本的运算指令,Python标准库提供了一个math模块,它为我们提供数字处理最基础的工具。我们今天就来学习它。
一、估算
我们可以用math模块的ceil()和floor实现向上取整和向下取整。
- ceil():接收一个数字类型的参数,返回不小于参数的最小整数。
- floor():接收一个数字类型的参数,返回不大于参数的最大整数。
引入math模块后直接调用就可以,看示例:
import math
print('math.floor(5.18)=',math.floor(5.18))
print('math.floor(-5.18)=',math.floor(-5.18))
print('math.ceil(5.18)=',math.ceil(5.18))
print('math.ceil(-5.18)=',math.ceil(-5.18))
运行效果如下:
二、常见数学运算
使用math模块可以完成许多复杂的数学运算,不过我们这里只列出简单常见的几种:
- fabs():接收数字参数返回其绝对值
- pow():接收两个数字类型参数x、y,返回x的y次幂
- factorial():接收一个整数参数n,返回n的阶乘
- sqrt():接收一个正数参数,返回其平方根
- gcd():接收两个整型参数,返回其最大公约数。gcd(0,0)返回0
示例如下:
import math
print('math.fabs(-5.18)=',math.fabs(-5.18))
print('math.pow(3,3)=',math.pow(3,3))
print('math.pow(-5.18,-2)=',math.pow(-5.18,-2))
print('math.factorial(10)=',math.factorial(10))
print('math.sqrt(25)=', math.sqrt(25))
print('math.gcd(100,45)=', math.gcd(100,45))
print('math.gcd(0,0)=', math.gcd(0,0))
运行效果:
我们以前用Scratch编程时,曾经用递归的方法计算阶乘,大约到170左右,计算机的结果Scratch就不再支持了(数字太大),可是用math模块,我们能计算很大的数字阶乘,具体多大呢?你可以试试看。
三、其它功能
math模块还提供了一些常量、角度转换工具等功能:
- math.pi:返回圆周率Pi
- math.inf:返回正无穷大浮点数
- radians(x):将角度x从度数转换为弧度
- degrees(x):将角度x从弧度转换为度数
这里不再举例,大家可以自行在海龟编辑器调试一下。
四、课后作业
根据毕达哥拉斯定理(勾股定理);给定一个直角三角形,则该直角三角形斜边的平方,等于同一直角三角形两直角边平方的和。假设直角形三角形斜边为c,两条直角边为a、b,则 a^2 + b^2 = c^2 请编程输入直角三角形的直角边长a、b,利用math模块求直角三角形斜边c。