智能助教

4.1 数值¶

数值类型是Python中最基本的数据类型之一,它表示数字值。Python支持几种数值类型,包括整数和浮点数。本节将介绍这些类型以及它们的基本操作。

4.1.1 整数¶

整数类型是Python中最基本的数值类型之一,它表示整数值。整数用于存储在计算机中的数据量,以及其他需要处理整数的场景。

(1) 整数类型的创建¶

使用如下方式直接创建一个整数对象,例如:

In [2]:
num = 10  # 直接创建整数
num_2 =100
num
num_2
Out[2]:
100

使用内置函数 int() 将其他数据类型转换为整数,例如:

In [6]:
num_str_1 = '20'
num_str_2 = 20
#num = int(num_str_1)  # 将字符串转换为整数
#type(num_str_1)
type(num_str_2)
int(num_str_1) + num_str_2
Out[6]:
40

(2)整数类型的运算¶

Python支持整数类型的基本运算,包括加、减、乘、除、取余和取幂,例如:

In [ ]:
a = 5
b = 3
add = a + b  # 加法
sub = a - b  # 减法
mul = a * b  # 乘法
div = a / b  # 除法
mod = a % b  # 取余
exp = a ** b  # 取幂
print(add, sub, mul, div, mod, exp)

(3)整数类型的常见问题¶

当整数类型用于数值计算时,会遇到一些常见问题。例如,整数类型的精度是有限的,超过一定范围的数值将无法表示为整数类型。Python 3的整数类型可以表示非常大的数值,不过如果计算的结果超出了这个范围,就需要使用更高精度的数值类型(例如大整数类型)。

与其他语言类似,Python中的整数类型也存在溢出问题。如果计算的结果超出了整数类型所能表示的范围,就会发生溢出错误。因此,对于需要处理大数值或者需要高精度计算的场景,我们需要使用更高精度的数值类型来代替整数类型。

(4)浮点数¶

浮点数类型是Python中表示有理数的数值类型之一,它用于存储小数值。浮点数类型是一个基本数据类型,常常用于处理实际应用中的数值计算。

(5)浮点数类型的创建¶

可以使用如下方式直接创建一个浮点数对象。例如:

In [8]:
num_float = 3.14  # 直接创建浮点数
num_float
type(num_float)
Out[8]:
float

我们也可以使用内置函数 float() 将其他数据类型转换为浮点数,例如:

In [12]:
num_str = '2.71'
#print(type(num_str))
num_float = float(num_str)  # 将字符串转换为浮点数
print(type(num_float))
<class 'float'>

(6)浮点数类型的运算¶

Python支持浮点数类型的基本运算,包括加、减、乘、除、取余和取幂。例如:

In [ ]:
a = 5.5
b = 3.2
add = a + b  # 加法
sub = a - b  # 减法
mul = a * b  # 乘法
div = a / b  # 除法
mod = a % b  # 取余
exp = a ** b  # 取幂
print(add, sub, mul, div, mod, exp)

需要注意的是,浮点数类型的运算精度受到计算机处理能力和算法的限制,结果可能会存在误差。在比较浮点数类型的值时,应该使用近似值而不是精确值进行比较。

例如,以下代码由于浮点数计算存在误差,结果可能并不是预期的结果。

In [ ]:
a = 0.1
b = 0.2
result = a + b
print(result)  # 结果可能不是0.3,存在浮点误差

不过,我们可以通过对误差进行特定处理,例如取舍操作,从而减少误差。因此,在进行浮点数计算时,需要在保证精度的前提下注意误差控制。

4.1.2 数字类型转换¶

int() 函数可以将字符串或浮点数转换成整数。当参数是浮点数时,会将其向下取整。例如:

In [13]:
num_float = 5.7
num_int = int(num_float)  # 将浮点数转换为整数
print(num_int)
5

float()函数可以将整数或字符串转换成浮点数。例如:

In [16]:
num_int = 10
num_float = float(num_int)  # 将整数转换为浮点数
print(num_float)
10.0

str()函数可以将数字类型转换成字符串类型。例如:

In [14]:
num = 15
num_str = str(num)  # 将整数转换为字符串
print(type(num_str))
<class 'str'>

需要注意的是,如果字符串不能转换成合法的数字类型,这些函数将抛出一个异常。例如,int('abc') 会抛出一个 ValueError 异常。因此,在进行类型转换时,需要确保输入的数据格式是正确的。

4.1.3 补充¶

1. 内置函数¶

1.1 基本数学运算¶

  • abs(x):返回 x 的绝对值。
  • pow(x, y):返回 x 的 y 次幂,等价于 x ** y。
  • round(x[, n]):返回 x 的四舍五入值,n 表示小数点后保留的位数。
  • divmod(a, b):返回一个包含商和余数的元组 (a // b, a % b)。
In [15]:
# abs(x):返回 x 的绝对值
print(abs(-5))  # 输出: 5

# pow(x, y):返回 x 的 y 次幂
print(pow(2, 3))  # 输出: 8

# round(x[, n]):返回 x 的四舍五入值
print(round(3.14159, 2))  # 输出: 3.14

# divmod(a, b):返回商和余数的元组
print(divmod(10, 3))  # 输出: (3, 1)
5
8
3.14
(3, 1)

1.2 类型转换¶

  • int(x):将 x 转换为整数。
  • float(x):将 x 转换为浮点数。
  • complex(real[, imag]):创建一个复数,real 为实部,imag 为虚部。
In [2]:
# int(x):将 x 转换为整数
print(int(3.14))  # 输出: 3

# float(x):将 x 转换为浮点数
print(float(3))  # 输出: 3.0

# complex(real[, imag]):创建复数
print(complex(2, 3))  # 输出: (2+3j)
3
3.0
(2+3j)

1.3 最大值和最小值¶

  • max(iterable):返回可迭代对象中的最大值。
  • min(iterable):返回可迭代对象中的最小值。
In [ ]:
# max(iterable):返回可迭代对象中的最大值
print(max([1, 2, 3, 4, 5]))  # 输出: 5

# min(iterable):返回可迭代对象中的最小值
print(min([1, 2, 3, 4, 5]))  # 输出: 1

2. math 模块¶

math 模块提供了许多数学函数,适用于浮点数运算。

2.1 基本数学函数¶

  • math.sqrt(x):返回 x 的平方根。
  • math.exp(x):返回 e 的 x 次幂。
  • math.log(x[, base]):返回 x 的自然对数,或指定基数的对数。
  • math.log10(x):返回 x 的以 10 为底的对数。
In [ ]:
import math

# math.sqrt(x):返回 x 的平方根
print(math.sqrt(16))  # 输出: 4.0

# math.exp(x):返回 e 的 x 次幂
print(math.exp(1))  # 输出: 2.718281828459045

# math.log(x[, base]):返回 x 的自然对数
print(math.log(10))  # 输出: 2.302585092994046

# math.log10(x):返回 x 的以 10 为底的对数
print(math.log10(100))  # 输出: 2.0

2.2 三角函数¶

  • math.sin(x):返回 x 弧度的正弦值。
  • math.cos(x):返回 x 弧度的余弦值。
  • math.tan(x):返回 x 弧度的正切值。
  • math.radians(x):将角度 x 转换为弧度。
  • math.degrees(x):将弧度 x 转换为角度。
In [1]:
import math

# math.sin(x):返回 x 弧度的正弦值
print(math.sin(math.radians(30)))  # 输出: 0.49999999999999994

# math.cos(x):返回 x 弧度的余弦值
print(math.cos(math.radians(60)))  # 输出: 0.5000000000000001

# math.tan(x):返回 x 弧度的正切值
print(math.tan(math.radians(45)))  # 输出: 0.9999999999999999

# math.radians(x):将角度 x 转换为弧度
print(math.radians(180))  # 输出: 3.141592653589793

# math.degrees(x):将弧度 x 转换为角度
print(math.degrees(math.pi))  # 输出: 180.0
0.49999999999999994
0.5000000000000001
0.9999999999999999
3.141592653589793
180.0

2.3 其他函数¶

  • math.ceil(x):返回大于或等于 x 的最小整数。
  • math.floor(x):返回小于或等于 x 的最大整数。
  • math.factorial(x):返回 x 的阶乘。
  • math.gcd(a, b):返回 a 和 b 的最大公约数。
In [ ]:
import math

# math.ceil(x):返回大于或等于 x 的最小整数
print(math.ceil(3.2))  # 输出: 4

# math.floor(x):返回小于或等于 x 的最大整数
print(math.floor(3.8))  # 输出: 3

# math.factorial(x):返回 x 的阶乘
print(math.factorial(5))  # 输出: 120

# math.gcd(a, b):返回 a 和 b 的最大公约数
print(math.gcd(12, 18))  # 输出: 6

小结¶

Python中的数值类型,包括整数和浮点数类型。我们学习了数值类型的创建方法、常见运算及常见问题,掌握数值类型在Python中的基本使用。在实际应用中,数值类型常常用于存储和计算数值,为Python数据处理方面的基础。

In [ ]: