Python 数
Python 数
在Python中,数字是编程中不可或缺的一部分。Python支持多种类型的数字,包括整数、浮点数等。下面我们将详细介绍这些数字类型以及它们之间的运算和格式化。
整数
整数是Python中最基本的数字类型之一,用于表示没有小数部分的数字。在Python中,整数可以是正数、负数或零。整数在Python中没有大小限制(实际上受限于可用内存),可以表示非常大的数字。
# 整数示例
a = 10
b = -5
c = 0
浮点数
浮点数用于表示带有小数部分的数字。在Python中,浮点数通常使用64位双精度格式存储,这意味着它们可以提供大约15-17位有效数字。
# 浮点数示例
d = 3.14
e = -2.718
数据类型转整数/浮点数
Python提供了内置的函数来将其他数据类型(如字符串)转换为整数或浮点数。
- int(): 将数字或字符串转换为整数。
- float(): 将数字或字符串转换为浮点数。
# 转换为整数
f = int('123') # 结果为整数 123
g = int(4.6) # 结果为整数 4
# 转换为浮点数
h = float('3.14') # 结果为浮点数 3.14
i = float(3) # 结果为浮点数 3.0
请注意,如果尝试将不能转换为数字的字符串转换为整数或浮点数,将引发ValueError。
算数运算符
在Python中,算数运算符用于执行基本的数学运算。以下是Python中常见的算数运算符及其含义:
| 运算符 | 含义 |
|---|---|
| + | 加法 |
| - | 减法 |
| * | 乘法 |
| / | 除法 |
| // | 整除(取整) |
| % | 取模(求余数) |
| ** 或 pow(a, b) | 幂运算 |
# 加法
add_1 = 3 + 4 # 结果为整数 7
add_2 = 3.14 + 5 # 结果为浮点数 8.14
add_3 = 3.14 + 4.6 # 结果为浮点数 7.74
# 减法
sub_1 = 4 - 7 # 结果为整数 -3
sub_2 = 3.14 - 1 # 结果为浮点数 2.14
sub_3 = 3.54 - 3.02 # 结果为浮点数 0.52
# 乘法
mult_1 = 3 * 4 # 结果为整数 12
mult_2 = 3.14 * 2 # 结果为浮点数 6.28
mult_3 = 3.14 * 0.3 # 结果为浮点数 0.942
# 除法(结果均为浮点数)
divi_1 = 10 / 2 # 结果为浮点数 5.0
divi_2 = 10.22 / 2 # 结果为浮点数 5.11
divi_3 = 6.6 / 3.3 # 结果为浮点数 2.0
# 整除(取整)
int_divi_1 = 10 // 3 # 结果为整数 3
int_divi_2 = 10.22 // 2 # 结果为浮点数 5.0
int_divi_3 = 10.6 // 2.2 # 结果为浮点数 4.0
# 取模(求余数)
mod_1 = 10 % 3 # 结果为整数 1
# 幂运算
pow_1 = 3 ** 2 # 结果为整数 9
pow_2 = 3.5 ** 2 # 结果为浮点数 12.25
# 值得注意的是,进行浮点数运算时,有时会遇到一些看似不精确的结果
add_4 = 3.14 + 4 # 结果为 7.140000000000001
sub_4 = 3.14 - 3 # 结果为 0.14000000000000012
mult_4 = 3 * 0.1 # 结果为 0.30000000000000004
divi_4 = 9.9 / 3 # 结果为 3.3000000000000003
int_divi_4 = 99 // 0.1 # 结果为 989.0,正确值应为 990.0
mod_2 = 10.22 % 2 # 结果为 0.22000000000000064
pow_3 = 3.3 ** 2 # 结果为 10.889999999999999
当你进行混合运算(即整数和浮点数之间的运算)时,结果通常是浮点数。
数字精度处理
在进行浮点数计算时,可能会涉及到精度问题。Python 使用 IEEE 754 浮点数标准,因此浮点数计算可能会产生舍入误差。为了处理精度问题,你可以使用 decimal 模块,它提供了一种高精度的十进制数值类型。
from decimal import Decimal
x = Decimal("0.1")
y = Decimal("0.2")
dec_result = x + y # 结果为 Decimal("0.3"), 数据类型为 <class 'decimal.Decimal'>
sum_result = float(dec_result) # 结果为 0.3, 数据类型为 <class 'float'>
使用 decimal 模块可以更精确地控制数字的精度和舍入方式。
比较运算符
在Python中,比较运算符用于比较两个值的大小或是否相等,并返回一个布尔值(True 或 False)。
| 运算符 | 含义 |
|---|---|
| == | 等于 |
| != | 不等于 |
| > | 大于 |
| < | 小于 |
| >= | 大于等于 |
| <= | 小于等于 |
# 等于
print(3 = 3) # 结果为 True
print(1 = 2) # 结果为 False
# 不等于
print(3 != 3) # 结果为 False
print(1 != 2) # 结果为 True
# 大于
print(3.14 > 3) # 结果为 True
print(1 > 2) # 结果为 False
# 小于
print(3.14 < 3) # 结果为 False
print(1 < 2) # 结果为 True
# 大于等于
print(3.14 >= 3.14) # 结果为 True
print(3.14 >= 3) # 结果为 True
# 小于等于
print(3.14 <= 3.14) # 结果为 True
print(3.14 <= 3) # 结果为 False
复合赋值运算符
在Python中,复合赋值运算符(Compound Assignment Operators)结合了简单的赋值运算符(=)和算术运算符或位运算符,用于在单个表达式中完成值的计算和赋值。这些运算符使得代码更简洁、易读,并且可以减少编写冗余代码的需要。
| 运算符 | 含义 |
|---|---|
| += | 加等于 |
| -= | 减等于 |
| *= | 乘等于 |
| /= | 除等于 |
| //= | 整除等于 |
| %= | 取模等于 |
| **= | 幂等于 |
# 加等于
a = 1
a += 2 # 等价于 a = a + 2
print(a) # 结果为 3
# 减等于
b = 5
b -= 1 # 等价于 b = b - 1
print(b)
# 乘等于
c = 3
c *= 3 # 等价于 c = c * 3
print(c) # 结果为 9
# 除等于
d = 10
d /= 2 # 等价于 d = d / 2
print(d) # 结果为 5.0
# 整除等于
e = 20
e //= 3 # 等价于 e = e // 3
print(e) # 结果为 6
# 取模等于
f = 10
f %= 3 # 等价于 f = f % 3
print(f) # 结果为 1
# 幂等于
g = 2
g **= 3 # 等价于 g = g ** 3
print(g) # 结果为 8
数学函数
| 函数 | 含义 |
|---|---|
| abs(x) | 绝对值 |
| round() | 四舍五入浮点数 |
| max(a, b, ...), min(a, b, ...)(max 和 min 还可以接受可迭代对象) | 最大值与最小值 |
| math.sqrt(x) | 平方根 |
| math.pow(x, y) | 幂函数 |
| math.log(x, base) 或 math.log10(x) 或 math.log2(x) | 对数 |
| math.sin(x), math.cos(x), math.tan(x) 等 | 三角函数 |
| math.radians(degrees), math.degrees(radians) | 弧度与角度转换 |
| math.factorial(n) | 阶乘 |
位运算(针对整数)
Python中的位运算符是针对整数的二进制表示进行操作的。
| 运算符 | 含义 |
|---|---|
| & | 按位与 |
| | | 按位或 |
| ^ | 按位异或 |
| ~ | 按位取反 |
| << | 左移 |
| >> | 右移 |
按位与(&):对于两个整数的二进制表示,只有当两个相应的二进制位都为1时,结果位才为1,否则为0。
a = 60 # 60的二进制是0011 1100
b = 13 # 13的二进制是0000 1101
c = a & b # 结果是0000 1100,即12
按位或(|):对于两个整数的二进制表示,只要两个相应的二进制位中有一个为1,结果位就为1,否则为0。
a = 60 # 60的二进制是0011 1100
b = 13 # 13的二进制是0000 1101
c = a | b # 结果是0011 1101,即61
按位异或(^):对于两个整数的二进制表示,如果两个相应的二进制位相同则结果为0,不同则结果为1。
a = 60 # 60的二进制是0011 1100
b = 13 # 13的二进制是0000 1101
c = a ^ b # 结果是0011 0001,即49
按位取反(~):对一个整数的二进制表示的每个位进行取反操作,即1变为0,0变为1。
a = 60 # 60的二进制是0011 1100
b = ~a # 结果是-61,因为在Python中整数采用补码表示,取反后得到的补码需要转换为原码来理解其真实数值。
左移(<<):将一个整数的二进制表示向左移动指定的位数,右侧用0填充。
a = 5 # 5的二进制是0000 0101
b = a << 2 # 结果是0001 0100,即20
右移(>>):将一个整数的二进制表示向右移动指定的位数,左侧用符号位填充(算术右移)。
a = 5 # 5的二进制是0000 0101
b = a >> 1 # 结果是0000 0010,即2
注意:Python的移位操作与其他一些语言可能有所不同,因为它会保留数的符号(算术右移)。
数中的下划线
从Python 3.6开始,你可以在整数和浮点数中使用下划线_作为千位分隔符,以提高可读性。这种下划线在数字中是纯装饰性的,不会影响其值。
# 使用下划线的数字示例
large_int = 1_000_000 # 整数,等于 1000000
large_float = 1_000.0_001 # 浮点数,等于 1000.001
在编写涉及大量数字的代码时,使用下划线可以使数字更易读。但是,请注意不要在数字的开头或结尾使用下划线,也不要在数字中连续使用多个下划线。
参考资料
《Python编程 从入门到实践》
https://blog.csdn.net/GitHub_miao/article/details/135345292
Python 数的更多相关文章
- python数于字符串
python数于字符串 1.了解数的类型 2.什么事字符串 3.引号的使用与区别 4.转义符 5.自然字符串 6.字符串的重复 7.子字符串 #了解数的类型 1.python中数的类型主要有五种,分为 ...
- Python数模笔记-NetworkX(3)条件最短路径
1.带有条件约束的最短路径问题 最短路径问题是图论中求两个顶点之间的最短路径问题,通常是求最短加权路径. 条件最短路径,指带有约束条件.限制条件的最短路径.例如,顶点约束,包括必经点或禁止点的限制:边 ...
- Python数模笔记-StatsModels 统计回归(4)可视化
1.如何认识可视化? 图形总是比数据更加醒目.直观.解决统计回归问题,无论在分析问题的过程中,还是在结果的呈现和发表时,都需要可视化工具的帮助和支持. 需要指出的是,虽然不同绘图工具包的功能.效果会有 ...
- Python数模笔记-StatsModels 统计回归(1)简介
1.关于 StatsModels statsmodels(http://www.statsmodels.org)是一个Python库,用于拟合多种统计模型,执行统计测试以及数据探索和可视化. 2.文档 ...
- Python数模笔记-Scipy库(1)线性规划问题
1.最优化问题建模 最优化问题的三要素是决策变量.目标函数和约束条件. (1)分析影响结果的因素是什么,确定决策变量 (2)决策变量与优化目标的关系是什么,确定目标函数 (3)决策变量所受的限制条件是 ...
- Python数模笔记-Sklearn(1) 介绍
1.SKlearn 是什么 Sklearn(全称 SciKit-Learn),是基于 Python 语言的机器学习工具包. Sklearn 主要用Python编写,建立在 Numpy.Scipy.Pa ...
- Python数模笔记-Sklearn(2)样本聚类分析
1.分类的分类 分类的分类?没错,分类也有不同的种类,而且在数学建模.机器学习领域常常被混淆. 首先我们谈谈有监督学习(Supervised learning)和无监督学习(Unsupervised ...
- Python数模笔记-Sklearn(4)线性回归
1.什么是线性回归? 回归分析(Regression analysis)是一种统计分析方法,研究自变量和因变量之间的定量关系.回归分析不仅包括建立数学模型并估计模型参数,检验数学模型的可信度,也包括利 ...
- Python数模笔记-(1)NetworkX 图的操作
1.NetworkX 图论与网络工具包 NetworkX 是基于 Python 语言的图论与复杂网络工具包,用于创建.操作和研究复杂网络的结构.动力学和功能. NetworkX 可以以标准和非标准的数 ...
- Python数模笔记-Sklearn(3)主成分分析
主成分分析(Principal Components Analysis,PCA)是一种数据降维技术,通过正交变换将一组相关性高的变量转换为较少的彼此独立.互不相关的变量,从而减少数据的维数. 1.数据 ...
随机推荐
- flask+APScheduler定时任务的使用
目录 APScheduler简介 安装 add_job参数详解 结合flask使用 用uwsgi启动项目 用gunicorn+gevent启动flask项目 APScheduler简介 APSched ...
- 我的neovim配置
init.vim " Vim with all enhancements "文件管理器,我想试一下ranger syntax enable syntax on let maplea ...
- Spring MVC 3.2 技术预览(二):实时更新技术
原文地址:http://blog.springsource.org/2012/05/08/spring-mvc-3-2-preview-techniques-for-real-time-updates ...
- Ollma本地部署Qwen2.5 14B(不使用docker)
部署机器硬件情况: 内存 :32GB 显卡 :3060 为什么不使用docker: 1.网上教程大多以docker为主 2.安装docker的时间太长,在等待的时候顺便尝试一下不用docker的部署 ...
- SSL免费证书之Let’s Encrypt
官网:https://letsencrypt.org/zh-cn 官网建议使用Certbot的方式进行安装,所以首先我们需要安装Certbot Certbot) 官网:Certbot (eff.org ...
- m4 mac mini本地部署ComfyUI,测试Flux-dev-GGUF的workflow模型10步出图,测试AI绘图性能,基于MPS(fp16),优点是能耗小和静音
m4 mac mini已经发布了一段时间,针对这个产品,更多的是关于性价比的讨论,如果抛开各种补贴不论,价位上和以前发布的mini其实差别不大,真要论性价比,各种windows系统的mini主机的价格 ...
- 从Delphi到Lazarus——安装最新版的Lazarus
0.前言 在这篇文章里将会介绍以下内容: 下载最新版的Lazarus安装程序 安装Lazarus 安装整合IDE界面的软件包 编译运行你的第一个测试程序 结束语 1.下载最新版的Lazarus安装程序 ...
- 中电金信:The Financial-Grade Digital Infrastructure
01 Product Introduction The Financial-Grade Digital Infrastructure is a digitally-enabled foundati ...
- Superpower:一个基于 C# 的文本解析工具开源项目
推荐一个文本解析开源工具:Superpower,方便我们解析文本,比如解析日志文件.构建自己的编程语言还是其他需要精确解析和错误报告的场景. 01 项目简介 Superpower 的核心功能是将字符序 ...
- 【前端】白天/黑夜主题切换:JS读取XML预设主题实现黑白主题切换
上扩展实现多主题选择,切换主题) 先看一下XML文档 id值不能重复,一套主题的name要相同,亮色type1,暗色type0 <?xml version="1.0" enc ...