waban

导航

Python中的数字

在编程中,经常使用数字来记录游戏得分、表示可视化数据、存储Web应用信息等。Python根据数字的用法以不同的方式处理它们。鉴于整数使用起来最简单,下面就先来看看Python是如何管理它们的。

1.整数

在Python中,可对整数执行加(+)减(-)乘(*)除(/)运算。

>>> 2 + 3
5
>>> 3 - 2
1
>>> 2 * 3
6
>>> 3 / 2
1.5

乘方运算用两个乘号表示

>>> 3 ** 2
9
>>> 3 ** 3
27
>>> 10 ** 6
1000000

也支持运算优先级处理

>>> 2 + 3*4
14
>>> (2 + 3) * 4
20

空格不影响运算过程

2.浮点数

所有带小数点的数字都可以认为是浮点数,通常情况下的运行是正常的。

>>> 0.1 + 0.1
0.2
>>> 0.2 + 0.2
0.4
>>> 2 * 0.1
0.2
>>> 2 * 0.2
0.4

但是,计算结果包含的小数位数是不确定的(由于计算机处理运算方式为二进制的原因)

>>> 0.2 + 0.1
0.30000000000000004
>>> 3 * 0.1
0.30000000000000004

所以,需要忽略多余的小数位数。

3.使用str()避免类型错误

数字和字符串的拼接经常会带来错误,例如

age = 23
message = "Happy " + age + "rd Birthday!"

print(message)

运行上面的代码将会报错

Traceback (most recent call last):
  File "birthday.py", line 2, in <module>
    message = "Happy " + age + "rd Birthday!"
TypeError: Can't convert 'int' object to str implicitly

Python知道,这个变量表示的可能是数值23,也可能是字符2和3。像上面这样在字符串中使用整数时,需要显式地指出你希望Python将这个整数用作字符串。为此,可调用函数str(),它让Python将非字符串值表示为字符串:

age = 23
message = "Happy " + str(age) + "rd Birthday!"

print(message)

修改后的输出结果

Happy 23rd Birthday!

4.Python2中的整数

在Python 2中,将两个整数相除得到的结果稍有不同:

>>> python2.7
>>> 3 / 2
1

上方代码的运行结果与Python3中存在差异。在Python 2中,整数除法的结果只包含整数部分,小数部分被删除。请注意,计算整数结果时,采取的方式不是四舍五入,而是将小数部分直接删除。 在Python 2中,若要避免这种情况,务必确保至少有一个操作数为浮点数,这样结果也将为浮点数:

>>> 3 / 2
1
>>> 3.0 / 2
1.5
>>> 3 / 2.0
1.5
>>> 3.0 / 2.0
1.5

从Python 3转而用Python 2或从Python 2转而用Python 3时,这种除法行为常常会令人迷惑。使用或编写同时使用浮点数和整数的代码时,一定要注意这种异常行为。

posted on 2022-12-05 22:48  lovingbird  阅读(55)  评论(0编辑  收藏  举报