Python第2章 数值类型与数学运算(下)

简介: Python第2章 数值类型与数学运算

常用数学运算函数:

● 常用的数学函数的应用
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)) #结果保留四位小数

运行结果:

15.4.png

项目实训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))

运行结果:

15.5.png

项目实训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() 向上取整函数

运行结果:

15.6.png

项目实训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)对其进行求值。

15.7.png

测试用例:

输入: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))    # 输出弓形面积,结果保留两位小数

运行结果:

15.8.png

项目实训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('老鼠无法通过空隙')

运行结果:

15.9.png

项目实训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}元')

运行结果:

15.10.png

大学可以申请助学贷款,申请额度不超过学费和生活费总额的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}元')

运行结果:

15.11.png

本章到此结束!!!

相关文章
|
8天前
|
IDE 开发工具 开发者
Python类型注解:提升代码可读性与健壮性
Python类型注解:提升代码可读性与健壮性
167 102
|
5月前
|
索引 Python
Python的变量和简单类型
本文介绍了Python中变量命名规则、常用变量类型及字符串操作。变量命名需遵循字母、数字和下划线组合,不能以数字开头且不可与关键字冲突。字符串支持单引号、双引号或三引号定义,涵盖基本输出、转义字符、索引、拼接等操作。此外,还详细解析了字符串方法如`islower()`、`upper()`、`count()`等,帮助理解字符串处理技巧。
130 15
|
1月前
|
安全 JavaScript Java
Python中None与NoneType的真相:从单例对象到类型系统的深度解析
本文通过10个真实场景,深入解析Python中表示“空值”的None与NoneType。从单例模式、函数返回值,到类型注解、性能优化,全面揭示None在语言设计与实际编程中的核心作用,帮助开发者正确高效地处理“无值”状态,写出更健壮、清晰的Python代码。
166 3
|
5月前
|
机器学习/深度学习 数据可视化 算法
Python数值方法在工程和科学问题解决中的应用
本文探讨了Python数值方法在工程和科学领域的广泛应用。首先介绍了数值计算的基本概念及Python的优势,如易学易用、丰富的库支持和跨平台性。接着分析了Python在有限元分析、信号处理、优化问题求解和控制系统设计等工程问题中的应用,以及在数据分析、机器学习、模拟建模和深度学习等科学问题中的实践。通过具体案例,展示了Python解决实际问题的能力,最后总结展望了Python在未来工程和科学研究中的发展潜力。
113 0
|
1月前
|
缓存 数据可视化 Linux
Python文件/目录比较实战:排除特定类型的实用技巧
本文通过四个实战案例,详解如何使用Python比较目录差异并灵活排除特定文件,涵盖基础比较、大文件处理、跨平台适配与可视化报告生成,助力开发者高效完成目录同步与数据校验任务。
96 0
|
1月前
|
IDE API 开发工具
Python类型注解:让代码“开口说话”的隐形助手
Python类型注解为动态语言增添类型信息,提升代码可读性与健壮性。通过变量、函数参数及返回值的类型标注,配合工具如mypy、IDE智能提示,可提前发现类型错误,降低调试与协作成本。本文详解类型注解的实战技巧、生态支持及最佳实践,助你写出更高质量的Python代码。
118 0
|
4月前
|
Python
Python技术解析:了解数字类型及数据类型转换的方法。
在Python的世界里,数字并不只是简单的数学符号,他们更多的是一种生动有趣的语言,用来表达我们的思维和创意。希望你从这个小小的讲解中学到了有趣的内容,用Python的魔法揭示数字的奥秘。
121 26
|
4月前
|
人工智能 安全 IDE
Python 的类型安全是如何实现的?
本文探讨了 Python 的类型安全实现方式。从 3.5 版本起,Python 引入类型提示(Type Hints),结合静态检查工具(如 mypy)和运行时验证库(如 pydantic),增强类型安全性。类型提示仅用于开发阶段的静态分析,不影响运行时行为,支持渐进式类型化,保留动态语言灵活性。泛型机制进一步提升通用代码的类型安全性。总结而言,Python 的类型系统是动态且可选的,兼顾灵活性与安全性,符合“显式优于隐式”的设计哲学。
|
6月前
|
Python Windows
[oeasy]python076_int这个词怎么来的_[词根溯源]整数类型_int_integer_touch
本文探讨了“int”一词的起源及其与整数类型的关联。通过词根溯源,揭示“int”来源于“integer”,意为“完整的数”,与零碎的分数相对。同时分析了相关词汇如“tact”(接触)、“touch”(触摸)及衍生词,如“tangential”(切线的)、“intagible”(无形的)和“integral”(完整的、不可或缺的)。文章还结合编程语言特性,解释了Python作为动态类型、强类型语言的特点,并总结了整型变量的概念与意义。最后预告了后续内容,提供了学习资源链接。
188 11
|
6月前
|
存储 C语言 Python
[oeasy]python077_int类型怎么用_整数运算_integer_进制转化_int类
本文主要讲解了Python中`int`类型的应用与特性。首先回顾了`int`词根的溯源,探讨了整型变量的概念及命名规则(如匈牙利命名法)。接着分析了整型变量在内存中的存储位置和地址,并通过`type()`和`id()`函数验证其类型和地址。还介绍了整型变量的运算功能,以及如何通过`int()`函数将字符串转化为整数,支持不同进制间的转换(如二进制转十进制)。此外,文章提及了关键字`del`的使用场景,对比了Python与C语言中`int`的区别,并总结了整型与字符串类型的差异,为后续深入学习奠定基础。
112 1

推荐镜像

更多