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

posted @ 2024-06-13 13:33  测试小罡  阅读(1002)  评论(0编辑  收藏  举报