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 数的更多相关文章

  1. python数于字符串

    python数于字符串 1.了解数的类型 2.什么事字符串 3.引号的使用与区别 4.转义符 5.自然字符串 6.字符串的重复 7.子字符串 #了解数的类型 1.python中数的类型主要有五种,分为 ...

  2. Python数模笔记-NetworkX(3)条件最短路径

    1.带有条件约束的最短路径问题 最短路径问题是图论中求两个顶点之间的最短路径问题,通常是求最短加权路径. 条件最短路径,指带有约束条件.限制条件的最短路径.例如,顶点约束,包括必经点或禁止点的限制:边 ...

  3. Python数模笔记-StatsModels 统计回归(4)可视化

    1.如何认识可视化? 图形总是比数据更加醒目.直观.解决统计回归问题,无论在分析问题的过程中,还是在结果的呈现和发表时,都需要可视化工具的帮助和支持. 需要指出的是,虽然不同绘图工具包的功能.效果会有 ...

  4. Python数模笔记-StatsModels 统计回归(1)简介

    1.关于 StatsModels statsmodels(http://www.statsmodels.org)是一个Python库,用于拟合多种统计模型,执行统计测试以及数据探索和可视化. 2.文档 ...

  5. Python数模笔记-Scipy库(1)线性规划问题

    1.最优化问题建模 最优化问题的三要素是决策变量.目标函数和约束条件. (1)分析影响结果的因素是什么,确定决策变量 (2)决策变量与优化目标的关系是什么,确定目标函数 (3)决策变量所受的限制条件是 ...

  6. Python数模笔记-Sklearn(1) 介绍

    1.SKlearn 是什么 Sklearn(全称 SciKit-Learn),是基于 Python 语言的机器学习工具包. Sklearn 主要用Python编写,建立在 Numpy.Scipy.Pa ...

  7. Python数模笔记-Sklearn(2)样本聚类分析

    1.分类的分类 分类的分类?没错,分类也有不同的种类,而且在数学建模.机器学习领域常常被混淆. 首先我们谈谈有监督学习(Supervised learning)和无监督学习(Unsupervised ...

  8. Python数模笔记-Sklearn(4)线性回归

    1.什么是线性回归? 回归分析(Regression analysis)是一种统计分析方法,研究自变量和因变量之间的定量关系.回归分析不仅包括建立数学模型并估计模型参数,检验数学模型的可信度,也包括利 ...

  9. Python数模笔记-(1)NetworkX 图的操作

    1.NetworkX 图论与网络工具包 NetworkX 是基于 Python 语言的图论与复杂网络工具包,用于创建.操作和研究复杂网络的结构.动力学和功能. NetworkX 可以以标准和非标准的数 ...

  10. Python数模笔记-Sklearn(3)主成分分析

    主成分分析(Principal Components Analysis,PCA)是一种数据降维技术,通过正交变换将一组相关性高的变量转换为较少的彼此独立.互不相关的变量,从而减少数据的维数. 1.数据 ...

随机推荐

  1. flask+APScheduler定时任务的使用

    目录 APScheduler简介 安装 add_job参数详解 结合flask使用 用uwsgi启动项目 用gunicorn+gevent启动flask项目 APScheduler简介 APSched ...

  2. 我的neovim配置

    init.vim " Vim with all enhancements "文件管理器,我想试一下ranger syntax enable syntax on let maplea ...

  3. Spring MVC 3.2 技术预览(二):实时更新技术

    原文地址:http://blog.springsource.org/2012/05/08/spring-mvc-3-2-preview-techniques-for-real-time-updates ...

  4. Ollma本地部署Qwen2.5 14B(不使用docker)

    部署机器硬件情况: 内存 :32GB 显卡 :3060 为什么不使用docker: 1.网上教程大多以docker为主 2.安装docker的时间太长,在等待的时候顺便尝试一下不用docker的部署 ...

  5. SSL免费证书之Let’s Encrypt

    官网:https://letsencrypt.org/zh-cn 官网建议使用Certbot的方式进行安装,所以首先我们需要安装Certbot Certbot) 官网:Certbot (eff.org ...

  6. m4 mac mini本地部署ComfyUI,测试Flux-dev-GGUF的workflow模型10步出图,测试AI绘图性能,基于MPS(fp16),优点是能耗小和静音

    m4 mac mini已经发布了一段时间,针对这个产品,更多的是关于性价比的讨论,如果抛开各种补贴不论,价位上和以前发布的mini其实差别不大,真要论性价比,各种windows系统的mini主机的价格 ...

  7. 从Delphi到Lazarus——安装最新版的Lazarus

    0.前言 在这篇文章里将会介绍以下内容: 下载最新版的Lazarus安装程序 安装Lazarus 安装整合IDE界面的软件包 编译运行你的第一个测试程序 结束语 1.下载最新版的Lazarus安装程序 ...

  8. 中电金信:The Financial-Grade Digital Infrastructure

    01 Product Introduction   The Financial-Grade Digital Infrastructure is a digitally-enabled foundati ...

  9. Superpower:一个基于 C# 的文本解析工具开源项目

    推荐一个文本解析开源工具:Superpower,方便我们解析文本,比如解析日志文件.构建自己的编程语言还是其他需要精确解析和错误报告的场景. 01 项目简介 Superpower 的核心功能是将字符序 ...

  10. 【前端】白天/黑夜主题切换:JS读取XML预设主题实现黑白主题切换

    上扩展实现多主题选择,切换主题) 先看一下XML文档 id值不能重复,一套主题的name要相同,亮色type1,暗色type0 <?xml version="1.0" enc ...