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

本章到此结束!!!

相关文章
|
1月前
|
存储 索引 Python
Python散列类型(1)
【10月更文挑战第9天】
|
1月前
|
计算机视觉 Python
Python实用记录(一):如何将不同类型视频按关键帧提取并保存图片,实现图片裁剪功能
这篇文章介绍了如何使用Python和OpenCV库从不同格式的视频文件中按关键帧提取图片,并展示了图片裁剪的方法。
77 0
|
1月前
|
存储 数据安全/隐私保护 索引
Python 散列类型三以及函数基础
【10月更文挑战第11天】
Python 散列类型三以及函数基础
|
1月前
|
Python
【10月更文挑战第6天】「Mac上学Python 11」基础篇5 - 字符串类型详解
本篇将详细介绍Python中的字符串类型及其常见操作,包括字符串的定义、转义字符的使用、字符串的连接与格式化、字符串的重复和切片、不可变性、编码与解码以及常用内置方法等。通过本篇学习,用户将掌握字符串的操作技巧,并能灵活处理文本数据。
55 1
【10月更文挑战第6天】「Mac上学Python 11」基础篇5 - 字符串类型详解
|
1月前
|
Python
【10月更文挑战第6天】「Mac上学Python 10」基础篇4 - 布尔类型详解
本篇将详细介绍Python中的布尔类型及其应用,包括布尔值、逻辑运算、关系运算符以及零值的概念。布尔类型是Python中的一种基本数据类型,广泛应用于条件判断和逻辑运算中,通过本篇的学习,用户将掌握如何使用布尔类型进行逻辑操作和条件判断。
62 1
【10月更文挑战第6天】「Mac上学Python 10」基础篇4 - 布尔类型详解
|
30天前
|
数据可视化 算法 JavaScript
基于图论的时间序列数据平稳性与连通性分析:利用图形、数学和 Python 揭示时间序列数据中的隐藏模式
本文探讨了如何利用图论分析时间序列数据的平稳性和连通性。通过将时间序列数据转换为图结构,计算片段间的相似性,并构建连通图,可以揭示数据中的隐藏模式。文章介绍了平稳性的概念,提出了基于图的平稳性度量,并展示了图分区在可视化平稳性中的应用。此外,还模拟了不同平稳性和非平稳性程度的信号,分析了图度量的变化,为时间序列数据分析提供了新视角。
57 0
基于图论的时间序列数据平稳性与连通性分析:利用图形、数学和 Python 揭示时间序列数据中的隐藏模式
WK
|
1月前
|
存储 Python
Python内置类型名
Python 内置类型包括数字类型(int, float, complex)、序列类型(str, list, tuple, range)、集合类型(set, frozenset)、映射类型(dict)、布尔类型(bool)、二进制类型(bytes, bytearray, memoryview)、其他类型(NoneType, type, 函数类型等),提供了丰富的数据结构和操作,支持高效编程。
WK
18 2
|
1月前
|
存储 编译器 索引
Python 序列类型(2)
【10月更文挑战第8天】
Python 序列类型(2)
|
1月前
|
存储 C++ 索引
Python 序列类型(1)
【10月更文挑战第8天】
|
1月前
|
存储 Java Apache
Python Number类型详解!
本文详细介绍了 Python 中的数字类型,包括整数(int)、浮点数(float)和复数(complex),并通过示例展示了各种算术操作及其类型转换方法。Python 的 `int` 类型支持任意大小的整数,`float` 类型用于表示实数,而 `complex` 类型用于表示复数。此外,文章还对比了 Python 和 Java 在数字类型处理上的区别,如整数类型、浮点数类型、复数类型及高精度类型,并介绍了各自类型转换的方法。尽管两种语言在语法上有所差异,但其底层逻辑是相通的。通过本文,读者可以更好地理解 Python 的数字类型及其应用场景。
50 2
下一篇
无影云桌面