Python数值类型及其常用操作
Python中的数值类型
在Python编程语言中,数字是基础数据类型之一,用于表示各种数值。Python内置了三种主要的数值类型:整数(int)、浮点数(float)和复数(complex)。
1. 整数 (int)
整数类型表示不带小数点的正数或负数。Python的整数没有固定的大小限制,只受限于可用内存。除了十进制,整数还可以用其他进制表示:
- 二进制(以
0b或0B开头,例如0b101) - 八进制(以
0o或0O开头,例如0o755) - 十六进制(以
0x或0X开头,例如0xFF)
# 十进制整数
decimal_int = 123
negative_int = -456
print(f"十进制整数: {decimal_int}, {negative_int}")
# 其他进制整数表示
binary_val = 0b1101 # 十进制的13
octal_val = 0o17 # 十进制的15
hex_val = 0xA5 # 十进制的165
print(f"二进制: {binary_val}, 八进制: {octal_val}, 十六进制: {hex_val}")
2. 浮点数 (float)
浮点数用于表示带有小数部分的数字。它们可以表示非常大或非常小的数字,并支持科学计数法。
- 标准表示:
3.14,-0.001 - 科学计数法(使用
e或E表示10的幂):1.2e-5(即 1.2 * 10-5),3.5E+10(即 3.5 * 1010)
# 浮点数示例
simple_float = 3.14159
negative_float = -12.5
scientific_float_positive = 6.022e23 # 阿伏伽德罗常数
scientific_float_negative = 1.6e-19 # 电子电荷
print(f"普通浮点数: {simple_float}, 负浮点数: {negative_float}")
print(f"科学计数法 (正): {scientific_float_positive}")
print(f"科学计数法 (负): {scientific_float_negative}")
3. 复数 (complex)
复数由实部和虚部组成,虚部以j或J结尾。例如 a + bj,其中 a 是实部,b 是虚部,a 和 b 均为浮点数。
# 复数示例
complex_num1 = 3 + 4j
complex_num2 = -2.5 - 1.8j
pure_imaginary = 5j
print(f"复数1: {complex_num1}, 实部: {complex_num1.real}, 虚部: {complex_num1.imag}")
print(f"复数2: {complex_num2}")
print(f"纯虚数: {pure_imaginary}")
数值类型转换
Python提供内置函数,可以将一个数值类型转换为另一个。这些转换函数在处理不同数据源或进行特定计算时非常有用。
int(x): 将x转换为整数。浮点数会被截断(小数部分被移除),字符串需要是合法的整数表示。float(x): 将x转换为浮点数。整数会添加小数部分.0。complex(x): 将x转换为复数,虚部为0。complex(x, y): 创建一个复数,实部为x,虚部为y。
# 数值类型转换示例
integer_val = 15
float_val = 27.89
string_num = "123"
another_float = -5.7
# 转换为整数
converted_int_from_float = int(float_val)
converted_int_from_str = int(string_num)
print(f"浮点数 {float_val} 转整数: {converted_int_from_float}")
print(f"字符串 {string_num} 转整数: {converted_int_from_str}")
# 转换为浮点数
converted_float_from_int = float(integer_val)
converted_float_from_str = float("3.14")
print(f"整数 {integer_val} 转浮点数: {converted_float_from_int}")
print(f"字符串 '3.14' 转浮点数: {converted_float_from_str}")
# 转换为复数
complex_from_int = complex(integer_val)
complex_from_float = complex(float_val)
complex_from_parts = complex(another_float, 9.2)
print(f"整数 {integer_val} 转复数: {complex_from_int}")
print(f"浮点数 {float_val} 转复数: {complex_from_float}")
print(f"由实部 {another_float} 和虚部 9.2 构成的复数: {complex_from_parts}")
数学函数
Python提供了丰富的数学函数,部分内置于全局命名空间,而更高级的函数则位于math模块中。使用math模块的函数前需要先导入它:import math。
1. 常用数学操作
abs(x): 返回数字x的绝对值。max(x1, x2, ...): 返回给定参数中的最大值。参数可以是单个数值或可迭代对象。min(x1, x2, ...): 返回给定参数中的最小值。参数可以是单个数值或可迭代对象。pow(x, y): 返回x的y次幂(等同于x**y)。round(x [, n]): 对浮点数x进行四舍五入。如果指定n,则保留小数点后n位。
# 内置数学函数示例
neg_val = -10.5
list_of_numbers = [5, 2, 9, 1, 7]
print(f"绝对值 abs({neg_val}): {abs(neg_val)}")
print(f"最大值 max({list_of_numbers}): {max(list_of_numbers)}")
print(f"最小值 min(10, 20, 5): {min(10, 20, 5)}")
print(f"幂运算 pow(2, 3): {pow(2, 3)}") # 2的3次方
print(f"四舍五入 round(3.14159, 2): {round(3.14159, 2)}")
print(f"四舍五入 round(4.7): {round(4.7)}")
print(f"四舍五入 round(4.2): {round(4.2)}")
2. math 模块函数
math 模块提供了更多的数学功能。
import math
# 舍入函数
print(f"向上取整 math.ceil(4.1): {math.ceil(4.1)}") # 5
print(f"向下取整 math.floor(4.9): {math.floor(4.9)}") # 4
print(f"浮点绝对值 math.fabs(-10): {math.fabs(-10)}") # 10.0
# 指数与对数函数
print(f"e的1次幂 math.exp(1): {math.exp(1)}")
print(f"自然对数 math.log(math.e): {math.log(math.e)}") # 1.0
print(f"以10为底的对数 math.log10(100): {math.log10(100)}") # 2.0
print(f"指定底的对数 math.log(8, 2): {math.log(8, 2)}") # log_2(8) = 3.0
# 平方根与整数/小数部分
print(f"平方根 math.sqrt(25): {math.sqrt(25)}")
num_split = math.modf(3.14)
print(f"分解整数和小数部分 math.modf(3.14): 整数部分={num_split[1]}, 小数部分={num_split[0]}")
随机数函数
random 模块用于生成伪随机数,在模拟、游戏开发和加密等领域非常有用。同样,使用前需要先导入:import random。
import random
# 生成0到1之间的浮点数
rand_float = random.random()
print(f"随机浮点数 (0.0 到 1.0): {rand_float}")
# 生成指定范围内的整数
rand_int = random.randint(1, 100) # 包含1和100
print(f"随机整数 (1 到 100): {rand_int}")
# 从序列中随机选择一个元素
my_sequence = ['apple', 'banana', 'cherry', 'date']
chosen_item = random.choice(my_sequence)
print(f"从列表中随机选择: {chosen_item}")
# 将序列元素随机排序(洗牌)
numbers_list = [10, 20, 30, 40, 50]
random.shuffle(numbers_list)
print(f"洗牌后的列表: {numbers_list}")
# 生成指定范围内的浮点数
uniform_float = random.uniform(5.0, 10.0) # 包含5.0和10.0
print(f"随机浮点数 (5.0 到 10.0): {uniform_float}")
# 设置随机数种子
# 相同的种子会产生相同的随机数序列,用于可重现的随机性
random.seed(42)
print(f"第一次使用种子42后的随机数: {random.random()}")
random.seed(42) # 再次设置相同的种子
print(f"第二次使用种子42后的随机数: {random.random()}") # 会得到与第一次相同的值
三角函数
math 模块也包含了各种三角函数,它们通常接受弧度作为参数,并返回弧度值(反三角函数)或特定角的三角比。
import math
angle_radians = math.pi / 2 # 90度用弧度表示
print(f"sin({angle_radians} 弧度): {math.sin(angle_radians)}") # sin(90度)
print(f"cos({angle_radians} 弧度): {math.cos(angle_radians)}") # cos(90度)
print(f"tan({math.pi / 4} 弧度): {math.tan(math.pi / 4)}") # tan(45度)
# 反三角函数 (返回弧度)
asin_val = math.asin(1) # arcsin(1)
print(f"反正弦 asin(1): {asin_val} 弧度 ({math.degrees(asin_val)} 度)")
# 弧度与角度转换
angle_degrees = 180
rad_from_deg = math.radians(angle_degrees)
print(f"{angle_degrees} 度转换为弧度: {rad_from_deg}")
rad_to_deg = math.degrees(math.pi)
print(f"{math.pi} 弧度转换为角度: {rad_to_deg}")
# 欧几里得范数 (斜边长度)
side1 = 3
side2 = 4
hypotenuse = math.hypot(side1, side2)
print(f"直角边为 {side1} 和 {side2} 的斜边长: {hypotenuse}")
数学常量
math 模块还提供了两个重要的数学常量:
math.pi: 圆周率 π (约 3.14159)math.e: 自然常数 e (约 2.71828)
import math
print(f"圆周率 (pi): {math.pi}")
print(f"自然常数 (e): {math.e}")