常用数学运算函数:
● 常用的数学函数的应用 abs(x) # 返回绝对值,如abs(-6) # 6 divmod(a, b) # 返回整除结果与模 (a // b, a % b),如divmod(10, 3) # (3, 1) int([x]) # 返回数值的整数值,如int(3.14) # 3 int(x, base=n) # 返回n进制数的字符串x的十进制值,如int('1111', base=2) # 15 max(iterable, *[, key, default])# 返回一个可迭代参数中的最大值,如max([2, 5, 1, 8]) # 8 min(iterable, *[, key, default])# 返回一个可迭代参数和的最小值,如min([2, 5, 1, 8]) # 1 max(arg1, arg2, *args[, key]) # 返回多个参数中的最大值,如max(2, 5, 1, 8) # 8 min(arg1, arg2, *args[, key]) # 返回多个参数中的最小值,如 min(2, 5, 1, 8) # 1 pow(base, exp[, mod]) # 幂运算,pow(10, 2)返回100,pow(38, -1, 97)同23 * 38 % 97 ,结果23 round(number[, ndigits]) # 返回数值number的保留小数点后ndigits位的最短表示形式,如round(3.1415, 3) # 3.142 sum(iterable, /, start=0) # 求和,将可迭代对象中的元素值加到start上 bin(x) # 返回‘0b’开头的二进制字符串,如bin(3)返回'0b11' hex(x) # 返回‘0x’开头十六进制值字符串,如hex(255)返回'0xff' oct(x) # 返回‘0o’开头八进制值字符串,如oct(8)返回'0o10' ● math库中的函数及应用 数论与表示函数 math.ceil(x)返回 x 的上限,即大于或者等于 x 的最小整数 math.floor(x)返回 x 的向下取整,小于或等于 x 的最大整数 math.factorial(x)以一个整数返回 x 的阶乘 math.gcd(*integers)返回给定的整数参数的最大公约数 math.lcm(*integers)返回给定的整数参数的最小公倍数 幂函数与对数函数 math.exp(x) 返回 e 次 x 幂,其中 e = 2.718281... 是自然对数的基数 math.log(x[, base]) 使用一个参数,返回 x 的自然对数(底为 e math.log10(x) 返回 x 底为10的对数 math.pow(x, y) 将返回 x 的 y 次幂 math.sqrt(x) 返回 x 的平方根 三角函数 math.sin(x) 返回 x 弧度的正弦值 math.cos(x) 返回 x 弧度的余弦值 math.tan(x) 返回 x 弧度的正切值 math.acos(x) 返回以弧度为单位的 x 的反余弦值。 结果范围在 0 到 pi 之间 math.asin(x) 返回以弧度为单位的 x 的反正弦值。 结果范围在 -pi/2 到 pi/2 之间 math.atan(x) 返回以弧度为单位的 x 的反正切值。 结果范围在 -pi/2 到 pi/2 之间 math.atan2(y, x)以弧度为单位返回 atan(y / x) 。结果是在 -pi 和 pi 之间 math.dist(p, q) 返回 p 与 q 两点之间的欧几里得距离 math.hypot(*coordinates)返回欧几里得范数,这是从原点到坐标给定点的向量长度 角度转换 math.degrees(x) 将角度 x 从弧度转换为度数 math.radians(x) 将角度 x 从度数转换为弧度 双曲函数 math.acosh(x)返回 x 的反双曲余弦值 math.asinh(x)返回 x 的反双曲正弦值 math.atanh(x)返回 x 的反双曲正切值 math.cosh(x)返回 x 的双曲余弦值 math.sinh(x)返回 x 的双曲正弦值 math.tanh(x)返回 x 的双曲正切值 常量 math.pi 数学常数 π = 3.141592...,精确到可用精度。 math.e 数学常数 e = 2.718281...,精确到可用精度。 math.tau 数学常数 τ = 6.283185...,精确到可用精度。Tau 是一个圆周常数,等于 2π,圆的周长与半径之比。 math.inf 浮点正无穷大。 (对于负无穷大,使用 -math.inf 。)相当于 float('inf') 的输出。 math.nan 浮点“非数字”(NaN)值。 相当于 float('nan') 的输出。
import math 导入math 模块,引用时函数名前要加’math.
print(math.pi) pi为圆周率常量 #3.141592653589793 print(math.sqrt(2))# sqrt为开平方函数 #1.4142135623730951
from math import pi,sqrt 导入math中的常数pi和sqrt()函数或全部函数
from math import * print(pi) #3.141592653589793 print(sqrt(2)) #1.4142135623730951
项目实训1:
计算矩形面积
描述
用户输入矩形的长和宽,计算其面积并输出。
a = eval(input()) #输入整数字符串,转换为整数;输入浮点数字符串,转换为浮点数
b = float(input()) #输入整数和浮点数,都转换为浮点数
c = int(input()) #只接受整数输入,输出为整数
eval()和float()函数都可以把input() 函数接收到的数值型字符串转为数值类型
例:
float(‘3.14’) 的结果是数值 3.14
int()函数可以把整数字符串转为整数
int(‘5’) 的结果是数值 5
输入格式
第一行输入一个数字,代表矩形的长
第二行输入一个数字,代表矩形的宽
输出格式
输出矩形的面积,不限定小数位数
运行代码:
print('请输入矩形的长和宽:') a=eval(input()) b=eval(input()) print('矩形的面积为:',round(a*b,4)) #结果保留四位小数
运行结果:
项目实训2:
一元二次方程求根
描述
一元二次方程ax2+bx+c=0,a、b、c的值由用户在三行中输入,根据用户输入的数值求解方程的实数解:
如果a值 为0,根据b值判断方程是否有解并输出,如果a与b同时为0,则输出Data error!
如果方程无实数解,输出“该方程无实数解”;
如果方程有两个相同的实数解,输出一个解,结果保留2位小数;
如果方程有两个不同的实数解,在一行内按从大到小顺序输出方程的两个解,用空格分隔,结果保留2位小数。
输入格式
输入三行数据, 每行输入一个实数
输出格式
方程的解
运行代码:
print('请输入三个数:') a = float(input()) b = float(input()) c = float(input()) x1 = (-b+(b*b-4*a*c)**0.5)/(2*a) x2 = (-b-(b*b-4*a*c)**0.5)/(2*a) print(round(x1, 2)) print(round(x2, 2))
运行结果:
项目实训3:
换披萨
描述
披萨的尺寸一般分6-15英寸几种,一英寸约等于2.54厘米,将英寸直径乘以2.54即可得出以厘米为单位的直径。例如6寸披萨,即为6乘以2.54,得出结果为15.24厘米。 然而披萨加工时并不是严格到毫米不差的,考虑到加工过程及无效的披萨边,真正的有效直径需要去掉小数点后面数字。例如6寸披萨的标准直径为15.24厘米,实际有效直径一般为15厘米。
披萨店经常会对顾客说:您订购的某尺寸的披萨卖完了,是否可以更换为多个小尺寸的披萨。例如:您订购的9寸披萨卖完了,可以给您2个6寸的披萨吗?
假设披萨厚度相同,价格与面积成正比,试问一个m英寸的大披萨至少要更换几个n英寸的小披萨,顾客才不吃亏?
输入格式
输入有2行
第一行输入整数m(英寸),代表订购的大披萨;
第二行输入整数n(英寸),代表推荐更换的小披萨;
输出格式
整数,更换小披萨的数量
运行代码:
import math print('请输入披萨的尺寸:') m = int(input()) # 大披萨的尺寸 n = int(input()) # 小披萨的尺寸 l1 = float(m*2.54) # 大披萨的直径 l2 = float(n*2.54) # 小披萨的直径 s1 = float(math.pi*(l1/2)**2) # 大披萨的面积 s2 = float(math.pi*(l2/2)**2) # 小披萨的面积 print(math.ceil(s1/s2)) # math.ceil() 向上取整函数
运行结果:
项目实训4:
计算弓形的面积
AB 是圆的一条弦,ABC形成一个弓形,在两行中分别输入AB和CD的长度,计算弓形的面积,结果保留小数点后2位有效数字。
提示:从图中可知:
AD = AB / 2
OA2 = AD2+ OD2
OD = OC – CD = OA –CD
代入后可得
OA = (AD2+ CD2 ) / (2 * CD)
sin(∠AOB / 2) = AD/ OA
圆心角:
∠AOB = 2 * arcsin(AD / OA)
扇形AOB的面积为:
area_of _ sector = ∠AOB / (2π) * π *OA2
三角形 △AOB
area_of_triangle = 1/ 2 * OA2 * sin(∠AOB)
弓形面积为扇形AOB面积减去三角形△AOB面积之差:
area_of_arch = area_of_ sector - area_of_triangle
因为涉及到三角函数和反三角函数,很难通过笔算完成,但可以利用python编程,借助math库中的math.sin(AOB)和math.arcsin(AD / OA)对其进行求值。
测试用例:
输入:26.5
8
输出:14.97
151.16
运行代码:
import math AB = float(input()) CD = float(input()) AD = AB/2 OA = (AD**2+CD**2)/(2*CD) AOB = 2*math.asin(AD / OA) area_of_sector = AOB/(2*math.pi)*math.pi*(OA**2) # 计算扇形面积 area_of_rectangle = 1 / 2 * OA*OA*math.sin(AOB) # 计算三角形面积 area_of_arch = area_of_sector-area_of_rectangle # 计算弓形面积 print(round(OA, 2)) # 输出半径,结果保留两位小数 print(round(area_of_arch, 2)) # 输出弓形面积,结果保留两位小数
运行结果:
项目实训5:
地球数据计算
地球的半径是6371km,假设地球是一个规则的球体,完成以下计算并输出结果,结果保留2位小数。π值引用math库中常数PI的值。
计算地球表面积(表面积公式S = 4πR2)
计算地球体积(体积公式是V = 4πR3/3)
计算地球赤道的周长(圆周长公式是L = 2πR)
假设有一根绳子正好可以紧贴地球绕赤道一周,紧密的捆绑住地球。现在将绳子延长1米,仍围绕地球赤道一周,假设绳子与地球表面间空隙均匀,计算绳子与地球之间的空隙大小。
判断一只正常大小的老鼠能否从这个空隙穿过?可假设老鼠身体截面为圆柱,且圆柱最粗处直径为250px,若空隙大小250px,输出:“老鼠可以从空隙中钻过”,否则输出:“老鼠无法通过空隙”。根据判定结果进行输出时,可以用if 条件表达式进行判定,满足条件时的输出放在if分支下的缩进语句块中;不满足条件的输出放在与if对齐的else分支下的缩进语句块里。
运行代码:
import math R = 6371*1000 S = 4*math.pi*R**2 V = (4*math.pi*R**3)/3 L = 2*math.pi*R L2 = L+1 H = L2/(2*math.pi)-R print(f'地球表面积:{S:.2f}平方米') print(f'地球体积::{V:.2f}立方米') print(f'地球赤道周长:{L:.2f}米') print(f'空隙大小:{H:.2f}米') if H > 0.1: print('老鼠可以从空隙中钻过') else: print('老鼠无法通过空隙')
运行结果:
项目实训6:
学费计算
大学第一学期必选课程及其学分如下:
Python 3学分
高等数学 4学分
大学英语 4学分
大学体育2学分
军事理论 2学分
哲学 2学分
请计算并输出大学第一学期共修多少学分?输入每学分应缴纳的学费,计算并输出第一学期应缴纳多少学费?
输入:
请输入每学分学费金额:328
输出:
你本学期选修了17个学分。
你应缴纳的学费为5576元。
运行代码:
A = int(input('请输入每学分学费金额:')) P = 3 M = 4 E = 4 T = 2 J = 2 Z = 2 S = (P+M+E+T+J+Z) K = S*A print(f'你应缴纳的学费:{K}元')
运行结果:
大学可以申请助学贷款,申请额度不超过学费和生活费总额的60%,输入你每个月的生活费(浮点数),请计算你每个学期能够贷款多少元?(结果保留小数点后2位数字,每个学期按5个月计算)
输入:
请输入每学分学费金额:328
请输入你每个月生活费:1600
(注:“请输入每学分学费金额:”和“请输入你每个月生活费:”是提示信息,由程序输出,仅328和1600是用户输入)
输出:
本学期你能够贷款8145.60元
运行代码:
X = int(input('请输入每学分学费金额:')) Y = int(input('请输入每个月生活费:')) P = 3 M = 4 E = 4 T = 2 J = 2 Z = 2 S = (P+M+E+T+J+Z) a = (X*S+5*Y)*0.6 print(f'本学期你能够贷款:{a:.2f}元')
运行结果:
本章到此结束!!!