在编程中,经常使用数字来记录游戏得分、表示可视化数据、存储Web应用信息等。Python根据数字的用法以不同的方式处理它们。鉴于整数使用起来最简单,下面就先来看看Python是如何管理它们的。
2.2.1 运算优先级(Operator Precedence)
操作符(Operator) | 说明(Description) |
---|---|
() | Parentheses (grouping) 最高优先级 |
f() | 函数调用 |
(expressions…), [expressions…], {key: value…}, {expressions…} | Binding or tuple display, list display, dictionary display, set display |
x[index], x[index:index], x(arguments), x.attribute | Subscription, slicing, call, attribute reference |
await x | Await expression |
** | Exponentiation |
+x, –x, ~x | Positive, negative, bitwise NOT |
*, @, /, //, % | Multiplication, division, remainder |
+, – | Addition, subtraction |
<<, >> | Bitwise shifts |
& | Bitwise AND |
^ | Bitwise XOR |
| | Bitwise OR |
in, not in, is, is not, <, <=, >, >=, <>, !=, == |
Comparisons, membership, identity |
not x | Boolean NOT |
and | Boolean AND |
or | Boolean OR |
if- else | Conditional expression |
lambda | Lambda Expression最低优先级 |
2.3.2 整数(Integers)
在Python中,可对整数执行加(+)减(-)乘()除(/)整除(//)幂(*)运算。
以下为在IPython终端中的输入和输出:
In [1]: 1 + 1 # 1加上1
Out [1]: 2
In [2]: 1 - 1 # 1减去1
Out [2]: 0
In [3]: 2 * 2 # 2乘以2
Out [3]: 4
In [4]: 3 / 2 # 3除以2
Out [4]: 1.5
In [5]: 3 ** 2 # 3的2次方
Out [5]: 9
In [6]: 3 // 2 # 3整除2
Out [6]: 1
注:空格不影响Python计算表达式的方式,它们的存在旨在让你阅读代码时,能迅速确定先执行哪些运算。Python的标准规范里面建议,运算符的两边应当各自留下一个空格。
2.3.3 浮点数(Float Numebrs)
Python将带小数点的数字都称为浮点数。大多数编程语言都使用了这个术语,它指出了这样一个事实:小数点可出现在数字的任何位置。每种编程语言都须细心设计,以妥善地处理浮点数,确保不管小数点出现在什么位置,数字的行为都是正常的。
从很大程度上说,使用浮点数时都无需考虑其行为。你只需输入要使用的数字,Python通常都会按你期望的方式处理它们:
In [1]: 1.1+1.2 # 1.1加上1.2
Out [1]: 2.3
In [2]: 1.2-1.1 # 1.2减去1.1
Out [2]: 0.1
In [3]: 2.5*2.5 # 2.5乘以2.5
Out [3]: 6.25
In [4]: 3.0/1.5 # 3.0除以1.5
Out [4]: 2.0
但需要注意的是,结果包含的小数位数可能是不确定的:
In [5]: 0.2 + 0.1
Out [5]: 0.30000000000000004
In [6]: 3 * 0.1
Out [6]: 0.30000000000000004
所有语言都存在这种问题,没有什么可担心的。Python会尽力找到一种方式,以尽可能精确地表示结果,但鉴于计算机内部表示数字的方式,这在有些情况下很难。就现在而言,暂时忽略多余的小数位数即可。
使用函数str()避免类型错误
你经常需要在消息中使用变量的值。例如,假设你要祝人生日快乐,可能会编写类似于下面的代码birthday.py:
age = 23
message = "Happy " + age + "rd Birthday to Six!"
print(message)
你可能认为,上述代码会打印一条简单的生日祝福语:Happy 23rd birthday to Six!。但如果你运行这些代码,将发现它们会引发错误:
Traceback (most recent call last):
File “birthday.py”, line 2, in
message = “Happy “ + age + “rd Birthday to Six!”
TypeError: can only concatenate str (not “int”) to str
这是一个类型错误(Type Error),意味着Python无法识别你使用的信息。在这个示例中,Python发现你使用了一个值为整数(int)的变量,但它不知道该如何解读这个值。Python知道,这个变量表示的可能是数值23,也可能是字符2和3。像上面这样在字符串中使用整数时,需要显式地指出你希望Python将这个整数用作字符串。为此,可调用函数str(),它让Python将非字符串值表示为字符串:
age = 23
message = "Happy " + str(age) + "rd Birthday to Six!"
print(message)
这样就没有问题了,可以输出:
Happy 23rd Birthday to Six!
大多数情况下,在Python中使用数字都非常简单。如果结果出乎意料,请检查Python是否按你期望的方式将数字解读为了数值或字符串。因此,能够阅读Python的错误提示对于写出正确的代码非常有帮助!
_