这一节中我们讲解一下如何 在使用 Python 程序中编写数字文字。
目录
5-1 数字文字
5-2 四則运算相关的运算符
5-3 BIT位运算符
5-4 运算符的优先顺序
5-5 将字符串转换为数字后,使用数字进行操作
5-6 使用布尔值(True, False)
数字文字
Python 具有三种数值类型:整数、浮点数和复数。
整数是没有小数点的数字。在编写程序时,请按原样写入整数值。
134
0
-19
整数以十进制表示,但也可以用二进制、八进制和十六进制表示。二进制数写成0b1011,八进制数写成0o624,十六进制数写成0x7F。
0b1011
0o624
0x7F
※ 伦理型是整数类型的派生类型。
浮点数是具有小数点的数字。写一个带小数点的数值,就像写一个整数一样。
15.325
-9.59
浮点数还允许对非常大和非常小的数字进行指数表示法。
4.5e+5
2.65e-4
请注意,4.5e+5 表示 4.5×100000=850000。而 2.65e-4 表示 2.65×0.0001=0.000234。
复数是由实部+虚部表示的数值,在虚部上加上j或J,记作如下。
(3.6 + 4j)
复数在现实世界中的使用可能很少见,因此在真正需要复数之前不要担心复数。
示例代码
请看下面的示例。
print(19.123)
>> 19.123
print(123)
>> 123
print(2.19e+3)
>> 2190.0
print 函数的参数中指定的数字文字被打印到屏幕上。
打印函数是 Python 的内置函数之一。
四則运算相关的运算符
与四种算术运算相关的运算符列表。适用于整数、浮点数和复数。
x + y x 和 y 的总和
x - y x 和 y 之差
x * y x 乘以 y
x / y x 和 y 的商
x // y x 和 y 的商向下舍入
x % y x / y 余数
-x x的符号反转
+x x原样
x **y x 的 y 次方
例如,执行加法:
15 + 8 # 23
3.1 + 2.226 # 5.326
7 + 3.5 # 10.5
示例代码
请看下面的示例。
print("5 + 6 = " + str(5 + 6))
>> 5 + 6 = 11
print("4 * 5 = " + str(4 * 5))
>> 4 * 5 = 20
print("15 / 3 = " + str(15 / 3))
>> 15 / 3 = 5
print("17 // 2 = " + str(17 // 2))
>> 17 // 2 = 8
print("17 % 2 = " + str(17 % 2))
>> 17 % 2 = 1
[ // ]运算符仅获取商的整数部分。舍入方法是向负无穷大舍入。例如,商 7.56 的结果为 7 ,-4.785 的结果为 -5 。
看另一个例子。
print("5.2 + 7.485 = " + str(5.2 + 7.485))
>> 5.2 + 7.485 = 12.685
print("8.21 * 3.5 = " + str(8.21 * 3.5))
>> 8.21 * 3.5 = 28.735000000000003
print("15.78 / 2.4 = " + str(15.78 / 2.4))
>> 15.78 / 2.4 = 6.575
print("15.78 // 2.4 = " + str(15.78 // 2.4))
>> 15.78 // 2.4 = 6.0
print("15.78 % 2.4 = " + str(15.78 % 2.4))
>> 15.78 % 2.4 = 1.38
[ // ] 运算符仅获取商的整数部分。但是,在对浮点数进行运算的情况下,结果是一个浮点数。舍入方法与整数相同,向负无穷大舍入。例如,7.56 的商结果为 7.0,-4.785 为 -5.0。
对不同数值类型的操作
除了整数到整数和浮点数到浮点数的运算之外,整数到浮点数的运算也是可能的。当对不同的数值类型执行操作时,它们会在执行操作之前转换为限制较少的数值类型。限制较少的顺序是 complex > float > integer,因此例如整数和 float 运算作为 float 执行,而 float 和 complex 运算作为复数执行。
示例代码
请看下面的示例
print("5 + 6.485 = " + str(5 + 6.485))
>> 5 + 6.485 = 11.485
print("7.21 * 5 = " + str(7.21 * 5))
>> 8.21 * 5 = 35.050000000000004
print("17 / 3.5 = " + str(17 / 3.5))
>> 17 / 3.5 = 4.857142857
整数和浮点运算转换为限制较少的浮点数,运算结果也是浮点数
在Python提供的可与数值类型值一起使用的运算符中,我们将对与位运算相关的运算符进行说明。
BIT运算符
与位运算相关的运算符列表。按位运算仅适用于整数。
x | y x 和 y 的按位或
x ^ y x 和 y 的按位异或
x & y x 和 y 的按位与
x << n x 的 n 位左移
x >> n x 右移 n 位
~x x 的位反转
让我们来看看每个运算符。
bitOR
按位或比较运算符左侧和右侧相同位置的位,如果至少有一位为 1,则结果为 1。
x | y
以 10 和 12 的按(bitOR)为例。
10 | 12
1010 = 10
1100 = 12
------------
1110 = 14
将10和12用二进制显示出来,逐位比较。如果至少一位为 1,则为 1,否则为 0。结果 10 | 12 变为 14。
BitAND
按位与比较运算符左侧和右侧相同位置的位,如果两个位都为 1,则结果为 1。
x & y
以 10 和 12 的按位与为例。
10 & 12
1010 = 10
1100 = 12
------------
1000 = 08
将10和12用二进制显示出来,逐位比较。如果两位都为 1,则为 1,否则为 0。10 和 12 结果为 8。
BitXOR
按位异或比较运算符左右两边相同位置的位,只有一个为1则为1。
x ^ y
以10和12的按位异或为例。
10 ^ 12
1010 = 10
1100 = 12
------------
0110 = 06
将10和12用二进制显示出来,逐位比较。如果只有一位为 1,则为 1,否则为 0。结果 10^12 是 6。
BitNOT
按位 NOT 反转运算符右侧值的位。如果该位为 1,则将其设为 0,如果该位为 0,则将其设为 1。
~x
以 10 位 NOT 为例。
~10
1010 = 10
------------
0101 = 05
用二进制表示 10,其中第 1 位为 0,第 0 位为 1。结果,~10 变成了 5 (-11)。
由于 Python 的整数位数没有限制,因此您可以翻转多少没有限制。所以 Python 中的按位 NOT 是使用二进制补码算法完成的:
~x = -(x + 1)
左移
左移将左侧的值向左移动右侧的值。
x << n
例如,让我们将 11 向左移动 2 位。
11 << 2
001011 = 11
------------
101100 = 44
将每位左移指定的数字。0 存储在由移位腾出的右端。11 << 2 结果为 44。
左移 1 位使值翻倍,左移 2 位则使值翻四倍。
右移
右移将左侧的值向右移动右侧的值。
x >> n
例如,让我们将 11 向右移动 1 位。
11 >> 1
1011 = 11
------------
0101 = 5
将每位右移指定的数字。0存储在移位留下的最左边的空间中。11 >> 1 结果为 5。
右移 1 位使值减半(1/2),右移 2 位使值再减半(1/4)。
示例代码
请看下面的示例。。
print("10 | 12 = " + str(10 | 12))
>> 10 | 12 = 14
print("10 & 12 = " + str(10 & 12))
>> 10 & 12 = 8
print("10 ^ 12 = " + str(10 ^ 12))
>> 10 ^ 12 = 6
print("~10 = " + str(~10))
>> ~10 = -11
print("11 << 2 = " + str(11 << 2))
>> 11 << 2 = 44
print("11 >> 1 = " + str(11 >> 1))
>> 11 >> 1 = 5
这就是每个Bit运算的结果。
Python中可以使用多种类型的运算符,但是当在一个句子中使用多个运算符时,它是按照优先顺序进行运算的
运算符优先级列表
Python中定义的运算符优先级如下:从上到下的优先级别。
演算子 | 説明 |
(expressions…), [expressions…], {key: value…}, {expressions…} | 表达式连接或元组显示、列表显示、字典显示、集合显示 |
x[index], x[index:index], x(arguments…), x.attribute | 下标、切片、调用、属性引用 |
await x | Await 达 |
** | 求幂 |
+x, -x, ~x | 正数、负数、Bit NOT |
*, @, /, //, % | 乘法、矩阵乘法、除法、截断除法、求余 |
+, – | 加减 |
<<, >> | 位置移动演算 |
& | Bit AND |
^ | Bit XOR |
| | Bit OR |
in, not in, is, is not, <, <=, >, >=, !=, == | 比较,包括从属关系和所属关系的测试 |
not x | 伦理值 NOT |
and | 伦理值 AND |
or | 伦理值 OR |
if — else | 条件表达式 |
lambda | lambda 表达式 |
例如,乘法和除法运算符 * 和 / 的优先级高于,加法和当前运算符 + 和 -,即使在相同的算术运算符中也是如此。此外,相同位置的运算符在优先级上没有差异。乘法运算符和除法运算符 * 和 / 位于同一位置,具有相同的优先级。
执行操作的顺序
如果包含多个运算符优先级不同的运算符,则首先执行优先级最高的运算符。看下面的公式:
result = 6 + 3 * 4
加法运算符+和乘法运算符*中,*的优先级较高,所以先进行3 * 4次运算。因此,操作按以下顺序执行。
result = 6 + 3 * 4
result = 6 + 12
result = 18
然后,如果运算符具有相同的优先级,则从左到右执行运算(求幂除外)。看下面的公式:
result = 6 / 2 * 4
由于除法运算符 / 和乘法运算符 * 具有相同的优先级,因此按以下顺序从左到右执行运算。
result = 6 / 2 * 4
result = 3 * 4
result = 12
包含多个运算符的表达式根据这两个规则进行计算。如有必要,请使用括号 () 更改优先顺序,如下所述。
使用括号 () 更改优先级
当您想以与运算符优先级不同的顺序执行操作时,使用圆括号 ()。首先执行括号中的操作。看下面的公式:
result1 = 5 + 3 * 4
result2 = (5 + 3) * 4
乘法运算符 * 的优先级高于加法运算符 +,因此第一个公式首先计算 3 * 4。
result = 5 + 3 * 4
result = 5 + 12
result = 17
另一方面,如果使用括号,如第二个公式,则首先执行括号内的运算。因此,将首先计算 5 + 3。
result = (5 + 3) * 4
result = 8 * 4
result = 32
括号内使用多个运算符时,按照运算符的优先级进行运算。此外,当多次使用括号时,首先计算内括号。
示例代码
请看下面的示例。
print("5 + 3 * 4 = " + str(5 + 3 * 4))
>> 5 + 3 * 4 = 17
print("(5 + 3) * 4 = " + str((5 + 3) * 4))
>> (5 + 3) * 4 = 32
通过使用括号,我能够强制操作以与运算符优先级不同的顺序发生。
要对数字和字符串进行运算,必须先将字符串转换为数字。在这里,我们将解释如何使用 int 函数或 float 函数将字符串转换为数字,然后对数字和字符串进行操作。
数字和字符串操作
即使字符串在 Python 中是表示数字的值,也不能直接对数字和字符串进行操作。例如,添加一个数字和一个字符串如下。
print(11 + "18")
>> Traceback (most recent call last):
>> File "<stdin>", line 1, in <module>
>> TypeError: unsupported operand type(s) for +: 'int' and 'str'
在对数字和字符串进行运算时,需要先将字符串转换为数字。使用内置的 int 函数将字符串转换为整数,使用 float 函数将字符串转换为浮点数。
int函数和float函数的使用方法请参考 (使用int函数/float函数(字符串转数字))
具体写如下。
num = "26"
print(15 + int(num))
要将浮点值字符串作为浮点数进行操作,如下编写。
num = "19.525"
print(4.5 + float(num));
通过以这种方式将字符串转换为整数或浮点数,您可以对数字进行算术运算。
示例代码
请看下面的示例。
num1 = "25"
num2 = "3.155"
print (18 + int(num1))
>> 43
print (4.5 + float(num2))
>> 7.654999999999999
我能够将字符串转换为数字,然后对数字进行算术运算。
这是如何使用布尔值,它是整数类型的派生类型。布尔值只有两个对象,True 和 False
关于真(True)假(False)
布尔值是一个完整的调度类型,只有两个对象,True 和 False。
布尔值 True 对象的计算结果为 true,布尔值 False 对象的计算结果为 false,例如在 if 语句的条件表达式中计算 true 或 false 时。因此,在将 True 或 False 分配给变量并使用条件表达式(如 if 语句)对其进行评估时使用它。
flag = True
if (flag):
print("successed")
else:
print("failed")
>> Succeeded
布尔值是整数类型,也可以用作 1 表示 True 和 0 表示 False。因此,可以执行四则算术。
print(True + 8)
>> 9
print(False + 2)
>> 2
True 相当于 1 , False 相当于 0 ,但当转换为字符串时,它们分别为“True”和“False”。
print(str(True) + " is 1")
>> True is 1
print(str(False) + "is 0")
>> False is 0
布尔值是条件表达式中经常使用的数据类型。在评估一个对象时有很多值可以成为 true 和 false,所以布尔值 True 和 False 是我们在程序中最常用的一种数据类型。