Python 3 - 数字
Python 3 - 数字
Section titled “Python 3 - 数字”数字是用于存储数值的基本数据类型。Python 的数字类型是不可变的(immutable),这意味着操作产生新数值时,实际上会在内存中创建一个新的数字对象。
数字对象通过简单地将数字字面量赋值给变量来创建:
count = 10 # Integerprice = 99.95 # Floating-pointcomplex_num = 3 + 4j # Complex number你可以使用 del 语句删除对数字对象的引用(如果没有其他引用,则使其符合垃圾回收条件):
del pricedel count, complex_num # Delete multiple variablesPython 3 支持三种不同的数值类型:
int(整型): 表示没有小数点的整数(正、负或零)。Python 3 中的整型具有任意精度,这意味着它们的大小可以增长到容纳任何数值,仅受可用内存限制。与 Python 2 不同,Python 3 没有单独的long类型。float(浮点数): 表示实数,包括带小数点的数。它们也可以使用e或E表示科学记数法(例如,2.5e2表示 2.5 x 102 = 250.0)。浮点数通常使用 IEEE 754 标准进行双精度表示,这有时会导致微小的精度误差。complex(复数): 表示形式为a + bj的数字,其中a(实部)和b(虚部)是浮点数,j(或J)表示 -1 的平方根。虚部是可选的(例如,5j)。虽然在普通编程中不太常见,但在科学和工程领域至关重要。
整数也可以用二进制 (0b)、八进制 (0o) 和十六进制 (0x) 格式表示:
binary_val = 0b1011 # Binary for 11octal_val = 0o17 # Octal for 15hex_val = 0xFF # Hexadecimal for 255
print(f"Binary 0b1011 is {binary_val}")print(f"Octal 0o17 is {octal_val}")print(f"Hex 0xFF is {hex_val}")| 整型 | 浮点数 | 复数 |
|---|---|---|
| 10 | 0.0 | 3.14j |
| 100 | 15.20 | 45.j |
| -786 | -21.9 | 9.322e-36j |
| 0 | 3.23e+18 | 0.876j |
| 99999999999999999 | -90. | -0.6545+0J |
| 0o20 # Octal 16 | -3.254e100 | (3+0j) |
| 0x1A # Hex 26 | 7.02e-12 | 4.53e-7j |
复数的组成部分可以通过属性访问:z = 3+4j; z.real 得到 3.0,z.imag 得到 4.0。
数字类型转换 (Casting)
Section titled “数字类型转换 (Casting)”Python 在操作过程中会自动在类型之间转换数字(例如,int + float 的结果是 float)。然而,你经常需要使用内置函数显式地在类型之间进行转换:
int(x): 将x转换为整型。对于浮点数,它向零截断。对于字符串,字符串必须表示一个整数(可选地指定基数,如int('101', 2)用于二进制)。float(x): 将x转换为浮点数。适用于整数和兼容的字符串。complex(real [,imag]): 创建一个复数。real可以是整型、浮点数或字符串。如果提供了imag,则它必须是数值类型。str(x): 将任何对象x(包括数字)转换为其字符串表示形式。
#!/usr/bin/env python3
num_int = 10num_float = 3.14num_str_int = "100"num_str_float = "-4.5"
print(f"float({num_int}) = {float(num_int)}")print(f"int({num_float}) = {int(num_float)}") # Truncatesprint(f"int({num_str_int}) = {int(num_str_int)}")print(f"float({num_str_float}) = {float(num_str_float)}")print(f"complex({num_int}) = {complex(num_int)}")print(f"complex({num_int}, {num_float}) = {complex(num_int, num_float)}")
# Conversion errors# int("hello") # ValueError# int("10.5") # ValueError数学函数 (来自 math 模块)
Section titled “数学函数 (来自 math 模块)”Python 的 math 模块提供了访问各种数学函数的功能。你需要先 import math。
| 函数 | 描述 |
|---|---|
abs(x) (内置) | 返回 x 的绝对值(与零的距离)。 |
math.ceil(x) | 返回 x 的上限(大于或等于 x 的最小整数)。 |
math.copysign(x, y) | 返回带有 y 符号的 x。 |
math.exp(x) | 返回 e 的 x 次方 (ex)。 |
math.fabs(x) | 返回 x 的绝对值,结果为浮点数。 |
math.floor(x) | 返回 x 的下限(小于或等于 x 的最大整数)。 |
math.fmod(x, y) | 返回 x/y 的浮点数余数。通常比 % 更适合浮点数。 |
math.log(x, [base]) | 返回 x 以给定 base 为底的对数。如果省略 base,默认为自然对数(底数 e)。 |
math.log10(x) | 返回 x 以 10 为底的对数。 |
math.log2(x) | 返回 x 以 2 为底的对数。 |
max(a, b, ...) (内置) | 返回其参数中的最大值。 |
min(a, b, ...) (内置) | 返回其参数中的最小值。 |
math.modf(x) | 返回 x 的小数部分和整数部分,结果为一个元组 (frac, int)。两者与 x 具有相同的符号。整数部分以浮点数返回。 |
pow(x, y) (内置) | 返回 x 的 y 次方 (x**y)。对于整数,比 math.pow 更高效。 |
math.pow(x, y) | 返回 x 的 y 次方,结果为浮点数。 |
round(x [, n]) (内置) | x 四舍五入到小数点后 n 位。如果省略 n,则四舍五入到最接近的整数。在平局时使用“四舍五入到偶数”策略(例如,round(2.5) 是 2,round(3.5) 是 4)。 |
math.sqrt(x) | 返回 x 的平方根(对于 x >= 0)。 |
math.trunc(x) | 返回 x 的截断整数值(移除小数部分)。 |
随机数函数 (来自 random 模块)
Section titled “随机数函数 (来自 random 模块)”random 模块提供了生成伪随机数的函数,在模拟、游戏、测试等方面非常有用。需要 import random。
| 函数 | 描述 |
|---|---|
random.choice(seq) | 从非空序列(列表、元组、字符串)中返回一个随机元素。 |
random.choices(population, k=1) | 从 population 中有放回地选择 k 个元素,返回一个列表。 |
random.randrange(start, stop [, step]) | 从 range(start, stop, step) 中随机选择一个元素。等同于 choice(range(start, stop, step)) 但更高效。 |
random.randint(a, b) | 返回一个随机整数 N,满足 a <= N <= b。 |
random.random() | 返回一个在 [0.0, 1.0) 范围内的随机浮点数 r(包含 0.0,不包含 1.0)。 |
random.seed([a]) | 初始化随机数生成器。使用相同的种子 a 可以获得可重现的随机数序列。如果未提供种子,则自动调用系统源。 |
random.shuffle(lst) | 原地随机打乱列表 lst 中元素的顺序。返回 None。 |
random.uniform(a, b) | 返回一个随机浮点数 r,满足 a <= r <= b 或 b <= r <= a。 |
random.sample(population, k) | 从 population 序列或集合中无放回地选择 k 个唯一元素,返回一个列表。 |
三角函数 (来自 math 模块)
Section titled “三角函数 (来自 math 模块)”math 模块还包括标准的三角函数。角度通常以弧度为单位。
| 函数 | 描述 |
|---|---|
math.acos(x) | 返回 x 的反余弦(弧度)。 |
math.asin(x) | 返回 x 的反正弦(弧度)。 |
math.atan(x) | 返回 x 的反正切(弧度)。 |
math.atan2(y, x) | 返回 atan(y / x)(弧度),考虑 x 和 y 的符号以确定正确的象限。 |
math.cos(x) | 返回 x 弧度的余弦。 |
math.hypot(x, y) | 返回欧几里得范数,即 sqrt(x*x + y*y)(直角三角形斜边长)。 |
math.sin(x) | 返回 x 弧度的正弦。 |
math.tan(x) | 返回 x 弧度的正切。 |
math.degrees(x) | 将角度 x 从弧度转换为度。 |
math.radians(x) | 将角度 x 从度转换为弧度。 |
数学常量 (来自 math 模块)
Section titled “数学常量 (来自 math 模块)”math 模块定义了重要的数学常量:
| 常量 | 描述 |
|---|---|
math.pi | 数学常数 pi(约 3.14159…) |
math.e | 数学常数 e(约 2.71828…) |
math.tau | 数学常数 tau (2 * pi,约 6.28318…) |
math.inf | 浮点正无穷大。 |
math.nan | 浮点数 ‘非数字’ (Not a Number)。 |