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. Python通过requests模块处理form-data请求格式

    1.安装 requests_toolbelt 模块,引入该模块下的 MultipartEncoder 2.在 请求体 中使用该模块函数,请求头中增加对应参数值 from requests_toolbe ...

  2. 网站安全锁-SSL证书

    为了安全起见,现在开发微信服务号和IOS客户端等访问服务器端都要求使用https加密传输. SSL证书是数字证书的一种,类似于驾驶证.护照和营业执照的电子副本.因为配置在服务器上,也称为SSL服务器证 ...

  3. 基于 MongoTemplate 实现MongoDB的复杂查询

    MongoDB是典型的非关系型数据库,但是它的功能越来越复杂,很多项目中,我们为了快速拓展,甚至直接使用Mongo 来替代传统DB做数据持久化.虽然MongoDB在支持具体业务时没有问题,但是由于它是 ...

  4. 使用 JsonSchema 校验 JSON数据

    有时候JSON 数据格式需要校验是否合法,我们可以使用 JsonSchema 来校验数据是否合法. 引入 pom.xml https://json-schema.org/ <dependency ...

  5. HASHCTF2024

    第一届山东大学HASHCTF部分Misc题解 下面是我在本次比赛出的题目的WriteUp Secret of Keyboard 签到脚本题,有些同学的脚本解出来大小写不正确可能是由于脚本无法识别shi ...

  6. 2023 秋季学期 六周集训 Misc方向

    by 高鹏鸿.密语 写在前面,记录和交流是一个很好的习惯,建议可以自己先搭建一个博客用于存储自己的做题记录以及方便交流.还有,对于Misc方向,灵活应对十分重要,一定要善用搜索引擎. 还有一点,给大家 ...

  7. Git因换行符不一致导致反复有修改记录

    前情 Git(读音为/gɪt/)是一个开源的分布式版本控制系统,可以有效.高速地处理从很小到非常大的项目版本管理,我公司目前都是基于Git来管理项目代码. 坑位 最近刚刚入职一家新公司,本地环境都配好 ...

  8. 【Amadeus原创】本地安装gitlab,初始化管理员密码

    注册还是无法登录,最后发现,需要初始化root密码. docker exec进去,然后执行gitLab-rails,修改密码, 然后登录即可. [root@ecs-9684 ~]# docker ex ...

  9. MYSQL数据库设计操作规范 ❤️【建议收藏】

    1.背景及其意义 MySQL数据库与 Oracle. SQL Server 等数据库相比,有其内核上的优势与劣势.我们在使用MySQL数据库的时候需要遵循一定规范,扬长避短.本文档旨在帮助或指导数据中 ...

  10. Qt开发经验小技巧196-200

    关于Qt延时的几种方法. void QUIHelperCore::sleep(int msec) { if (msec <= 0) { return; } #if 1 //非阻塞方式延时,现在很 ...