Python入门之(2.4)Python数学运算

 

目录

Python数学运算

1.1分数

1.2复数

1.3math模块


Python数学运算

Python除支持基本的数学运算外,还提供其他语言不常见的数学特性,如分数运算和复数运算。Python的math模块包含高级运算中常见的三角函数、统计函数、对数函数等。

1.1分数

Python的模块fractions中定义了一个特殊的对象,叫做Fraction。该对象的属性包括分子和分母。一旦定义了分数对象,就可以进行各种算术运算了。

在使用了分数对象之前,需要引入fraction模块,语法如下:

from fractions import Fraction

Fraction对象有三种实例化方式:

  1. 两个整数作为参数,如t=Fraction(1,3)。函数中的第一个参数是分子,第二个参数是分母,表示1/3;
  2. 一个浮点数作为参数,如t=Fraction(3.5),表示7/2;
  3. 一个字符串作为参数,如t=Fraction(‘3/5’),表示3/5。

注意:

  1. 自动约分,如果分子、分母中有负号,将负号归于分子;
  2. 两个分数相加得到一个分数;一个分数加一个整数得到一个分数;一个分数加一个浮点数得到一个浮点数;其他二元运算规则同加法运算;
  3. 如果要获取Fraction对象属性,numerator获取分子,denominator获取分母。例如,Fraction(‘3/4’).numerator获得分子3,Fraction(‘3/4’).denominator获得分母4;
  4. 通过from fractions import gcd语句的导入,可以使用gcd(a,b)函数得到a和b的最大公约数。

用随机数生成两个分数,计算并输出它们的和差积商的程序如下:

#导入随机函数模块
import random
#导入分数模块
from fractions import Fraction
#生成0-100之间的随机整数
a1=random.randint(0,100)
b1=random.randint(0,100)
a2=random.randint(0,100)
b2=random.randint(0,100)
#用a1和b1构造分数
f1=Fraction(a1,b1)
f2=Fraction(a2,b2)
#输出分数的运算结果,其中{0},{1},{2}等是占位符,与format函数中的变量的位置对应,起始位置是0
print("{0}+{1}={2}\n{0}-{1}={3}\n{0}*{1}={4}\n{0}/{1}={5}\n".format(f1,f2,f1+f2,f1-f2,f1*f2,f1/f2))

运行结果为:

E:\PycharmProjects\PythonTest\venv\Scripts\python.exe E:/PycharmProjects/PythonTest/ssss.py
51/98+25/23=3623/2254
51/98-25/23=-1277/2254
51/98*25/23=1275/2254
51/98/25/23=1173/2450


Process finished with exit code 0

 

1.2复数

Python内建函数库提供complex()函数来处理复数问题。要创建一个复数,需要制定一个实部作为参数,虚部作为第二个参数。例如t=complex(2,3)表示复数2+3j。

一旦定义了复数对象,就可以进行各种算术运算了。

注意:

  1. 可以将字符串形式的复数转化为复数。例如complex('2+3j')表示复数2+3j;
  2. 可以用real取得复数的实部,imag取得复数的虚部。例如,complex(2,3).real的运算结果为2.0,complex(2,3).imag的运算结果为3.0,得到浮点型数值;
  3. 可以用内置的abs函数计算复数的模,如abs(complex(2,3)),结果是3.605551275463989。

计算任意两个复数的和差积商的程序如下:

print('请输入两个复数,形式为a+bj:')
#从键盘上接收一个a+bj形式的字符串,并将其转换成复数对象
c1=complex(input('请输入第一个变量:'))
c2=complex(input('请输入第二个变量:'))
#复数的算术运算
s1=c1+c2
s2=c1-c2
s3=c1*c2
s4=c1/c2
#{5:3f}表示第5个变量的小数位数只输出3位
print("{0}+{1}={2}\n{0}-{1}={3}\n{0}*{1}={4}\n{0}/{1}={5:.3f}\n".format(c1,c2,s1,s2,s3,s4))

运行结果:

E:\PycharmProjects\PythonTest\venv\Scripts\python.exe E:/PycharmProjects/PythonTest/ssss.py
请输入两个复数,形式为a+bj:
请输入第一个变量:12+5j
请输入第二个变量:20-15j
(12+5j)+(20-15j)=(32-10j)
(12+5j)-(20-15j)=(-8+20j)
(12+5j)*(20-15j)=(315-80j)
(12+5j)/(20-15j)=0.264+0.448j


Process finished with exit code 0

 

1.3math模块

Python支持的一些高级数学运算功能,都可以在math模块中找到,如对数函数、三角函数、随机数函数等。使用这些函数必须引入math模块,语句为:

import math

Python中常用的数学函数主要提供如绝对值、阶乘、数字判断、对数、指数等功能,如下表所示:

 

Python中的数学函数
函数功能实例
abs(x)返回数字的绝对值abs(-10)返回10
ceil(x)返回排在这个输入值之后的最小整数

math.ceil(6.6)返回7

math.ceil(-6.6)返回-6

trunc(x)截断x小数点后的数字,只留下构成x整数部分的有效数字

math.trunc(6.6)返回6

math.trunc(-6.6)返回-6

floor(x)将x转换成不大于它的最大整数

math.floor(6.6)返回6

math.floor(-6.6)返回-7

exp(x)返回e(自然常数)的x次幂(e**x)math.exp(1)返回2.718281828459045
fabs(x)返回x的绝对值

math.fabs(-10)返回10

math.fabs(6.6)返回6.6

log(x)返回以e为底数的x的自然对数math.log(10)返回 2.302585092994046
log(x,y)返回以y为底数的x的自然对数math.log(27,3)返回3.0
log10(x)返回以10为底数的x的自然对数math.log10(1000)返回3.0
modf(x)返回一个tuple,包含x的小数和整数部分math.modf(6.32)返回(0.3200000000000003,6.0)
pow(x,y)返回x**y的值math.pow(3,4)返回81.0
sqrt(x)计算x的平方根,数字不能是复数math.sqrt(9)返回3.0
max(x1,x2,...)返回给定参数的最大值max(3,1,2,4,5,6)返回6
min(x1,x2,...)返回给定参数的最小值min(3,1,2,4,5,6)返回1
round(x[,n])返回浮点数x的四舍五入值,如果给出n值,则代表舍入到小数点后的位数

round(3.1415926)返回3

round(3.1415926,3)返回3.142

  1. 在上面的表格中的第三列,有的加了math.,而有的没有,是使用的时候真的不需要,还是书的作者大意了?

Python中常用的三角函数需要用弧度值作为参数。如下表所示:

Python中的三角函数
函数功能实例
acos(x)返回x的反余弦弧度值math.acos(0.64)返回0.8762980611683406
asin(x)返回x的反正弦弧度值math.asin(0.64)返回0.694498265626556
atan(x)返回x的正切弧度值math.atan(0.64)返回0.5693131911006619
atan2(x,y)返回x和y坐标值的反正切值math.atan2(-0.50,-0.50)返回-2.356194490192345
cos(x)返回x的弧度的余弦值math.cos(3)返回-0.9899924966004454
hypot(x,y)返回欧几里得范数sqrt(x*x+y*y)math.hypot(3,2)返回3.605551275463989
sin(x)返回x的正弦弧度值math.sin(3)返回0.1411200080598672
tan(x)返回x的正切弧度值math.tan(3)返回-0.1425465430742778
degrees(x)将弧度转换为角度math.degrees(3)返回171.88733853924697
radians(x)将角度转换为弧度math.radians(3)返回0.05235987755982989

 

Python中常用的随机数函数如下表所示:

Python中的随机数函数
函数功能实例
choice(seq)返回seq中的随机项,seq可以是列表、元组或字符串random.choice(range(10))
randrange([x,]y[,a])在x到y之间,以a递增的范围内随机取一个数random.randrange(5,10,2)
random()随机生成一个实数,在(0,1)范围内random.random()
seed([x])改变随机数生成器的种子seedrandom.seed(2)
shuffle(lst)将lst里的所有元素重新排序random.shuffle(list1)
uniform(x,y)在x至y的范围内随机生成一个实数random.uniform(1,10)

以后再用代码测试这些函数。

 

 

 

 

 

  • 9
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值