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