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

第2章 数值类型与数学运算

数值类型

整数(int) 浮点数(float) 复数(complex) 整数(int)
整数常被称为整型或整数类型不包含小数点的数字
十进制:0 、234、-34
二进制:0b1101、0B1100
八进制:0o15、0O666
十六进制:0xff、0X123456789ABCDEF
整数特点:
大小无限制,可精确表示超大数
import math # 导入math 库

整数子类–bool值
True和False
以整数“1”和“0”为值参与数值运算
print(False+6)
6
print(True*2 +3)
5
print((67 >60) *5 +8)
13

浮点数(float, 实数)
十进制表示
由整数部分、小数点与小数部分组成
123.456
43.0
0.66
科学记数法表示:
0.45e-5、2e3、2.34e3
2.53e3(2.53 ×103= 2530.0)
等价于a×10n
浮点数无法保证完全精确,输出时只保留17位有效数字
print(43.02 *7)
预期输出:301.14
实际结果:301.14000000000004
print(5.02 /0.1)
预期输出:50.20
实际结果:50.199999999999996
浮点数表示的数字范围为1.7×10-308~1.7×10308
print(pow(809.0, 106)) # 输出809的106次幂的值
print(pow(810.0, 106)) # 输出810的106次幂的值
输出1.748007496839708e+308
OverflowError: (34, ‘Result too large’)
复数由实数部分和虚数部分构成
实部虚部都是浮点数
用a +bj或complex(a, b)表示
print((3.0 +4.0j).real)
输出实部3.0
print((3.0 +4j).imag)
输出虚部4.0
print(abs(3.0 +4.0j))
输出复数的模5.0

数值类型转换

输入整数,表示正方形的边长,计算并输出其周长
输入整数,表示正方形的边长,计算并输出其周长

side = input()
perimeter = int(side) * 4
print(perimeter)

字符串转整数(int)
int(‘x’) 可将整数字符串’x’转为整数x

side = int(input())
perimeter = side * 4
print(perimeter)

字符串转整数(int)
输入整数,表示正方形的边长,计算并输出其周长
int(‘x’) 可将整数字符串’x’转为整数x

side = int(input())
perimeter = side * 4
print(perimeter)

字符串转浮点数
输入浮点数,表示正方形的边长,计算并输出其周长
int(‘x’) 可将整数字符串’x’转为整数x

side = float(input())
perimeter = side * 4
print(perimeter)

字符串转浮点数(float)
输入浮点数,表示正方形的边长,计算并输出其周长
float(‘x’)可将浮点数字符串’x’转为浮点数x

side = float(input())
perimeter = side * 4
print(perimeter)

字符串转浮点数(float)
输入浮点数,表示正方形的边长,计算并输出其周长
float(‘x’)可将整数字符串’x’转为浮点数x.0

side = eval(input())
perimeter = side * 4
print(perimeter)

字符串转数值(eval)
输入浮点数,表示正方形的边长,计算并输出其周长
eval(‘x’)可将整数字符串’x’转为整数x

side = eval(input())
perimeter = side * 4
print(perimeter)

字符串转数值(eval)
输入浮点数,表示正方形的边长,计算并输出其周长
eval(‘x’)可将浮点数字符串’x’转为浮点数x

print(float(3))
print(float('0.678\n'))
0.678

float(x)可将整数x转为浮点数x.0
float(‘x’)去除字符串开头和结尾的空白字符
包括:空格、\n、\t 等
字符串转浮点数(float)
整数转浮点数(float)
int(x.b)可截取浮点数x.b的整数部分x
int(‘x’)去除字符串开头和结尾的空白字符
包括:空格、\n、\t 等
int(‘x’, base=10))将其他进制字符串转为十进制整数
base 为整数,此参数缺省时为十进制
其他进制字符串转整数(int)
int(‘x’, base=10) )
2,8、10、16代表二进制、八进制、十进制和十六进制

print(int('11111111', base=2))
print(int('11111111', 2))
print(int('17', 8))
print(int('FF', 16) )
255
255
15
255

数学运算符:

+、-、*、/、//、%、**
加、减、乘、除、整除、取模、幂
a = 8
b = 5
print(a + b)     # 结果为13
print(a -b)     # 结果为3
print(a * b)     # 结果为40
print(a / b)     # 精确除法,浮点数1.6
print(a ** b)    # a 的b 次幂,32768

整除(//):整除,结果为整数,向下取整算法
当有浮点数参与运算的时候,结果为浮点型的整数

print(11 // 4)
print(99 // 10)
print(99.0 // 10)
print(-11 // 4)

Python第2章 数值类型与数学运算除(/):除法,结果为浮点数
取模(%):两个数整除的余数
模非零时,其符号与除数相同

print(13 / 4)
print(13 % 4)
print(3.5 % 3)
print(-13 % -4)
print(13 % -4)
print(-13 % 4)

Python第2章 数值类型与数学运算
判断整除
判断奇偶

a % 4 == 0 and a % 100 != 0
a % 2 == 0

使结果落在某区间

a % 7
a % 26
结果: 0, 1, 2, 3, 4, 5, 6
结果: 0, 1, 2……24, 25

幂(**):两个星号表示幂运算a ** b


print((1 / 2) ** 2)
print(3 ** 2)
print(3 ** (1 / 2))
print((-4) ** (1 / 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)) #结果保留四位小数

运行结果:
Python第2章 数值类型与数学运算

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

运行结果:
Python第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() 向上取整函数

运行结果:
Python第2章 数值类型与数学运算

项目实训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)对其进行求值。
Python第2章 数值类型与数学运算
测试用例:
输入: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))    # 输出弓形面积,结果保留两位小数

运行结果:
Python第2章 数值类型与数学运算

项目实训5:

地球数据计算
地球的半径是6371km,假设地球是一个规则的球体,完成以下计算并输出结果,结果保留2位小数。π值引用math库中常数PI的值。

  1. 计算地球表面积(表面积公式S = 4πR2)

  2. 计算地球体积(体积公式是V = 4πR3/3)

  3. 计算地球赤道的周长(圆周长公式是L = 2πR)

  4. 假设有一根绳子正好可以紧贴地球绕赤道一周,紧密的捆绑住地球。现在将绳子延长1米,仍围绕地球赤道一周,假设绳子与地球表面间空隙均匀,计算绳子与地球之间的空隙大小。

  5. 判断一只正常大小的老鼠能否从这个空隙穿过?可假设老鼠身体截面为圆柱,且圆柱最粗处直径为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('老鼠无法通过空隙')

运行结果:
Python第2章 数值类型与数学运算

项目实训6:

学费计算
大学第一学期必选课程及其学分如下:
Python 3学分
高等数学 4学分
大学英语 4学分
大学体育2学分
军事理论 2学分
哲学 2学分

  1. 请计算并输出大学第一学期共修多少学分?输入每学分应缴纳的学费,计算并输出第一学期应缴纳多少学费?
    输入:
    请输入每学分学费金额: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}元')

运行结果:

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

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


运行结果:

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

本章到此结束!!!

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
乘风的头像乘风管理团队
上一篇 2023年3月29日
下一篇 2023年3月29日

相关推荐