当前位置:首页 > 技术 > 正文内容

Python数值类型及其常用操作

访客 技术 2026年5月26日 3

Python中的数值类型

在Python编程语言中,数字是基础数据类型之一,用于表示各种数值。Python内置了三种主要的数值类型:整数(int)、浮点数(float)和复数(complex)。

1. 整数 (int)

整数类型表示不带小数点的正数或负数。Python的整数没有固定的大小限制,只受限于可用内存。除了十进制,整数还可以用其他进制表示:

  • 二进制(以0b0B开头,例如 0b101
  • 八进制(以0o0O开头,例如 0o755
  • 十六进制(以0x0X开头,例如 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
  • 科学计数法(使用eE表示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)

复数由实部和虚部组成,虚部以jJ结尾。例如 a + bj,其中 a 是实部,b 是虚部,ab 均为浮点数。

# 复数示例
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): 返回 xy 次幂(等同于 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}")

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。