简简单单五分钟,教你搞定Python中数值类型的基础细节

230

**前面介绍了程序的流程控制,除此之外,你还需要在程序中表达数据,而为了表达数据,Python提供了各种数据类型。**本文将介绍内置类型-Number,它用于表示数值类型,比如整数或实数。

简简单单五分钟,教你搞定Python中数值类型的基础细节

本文将从以下几个方面来介绍Python中的数值类型:

如何定义数值类型的变量

数值类型的转换

数值类型的操作

简简单单五分钟,教你搞定Python中数值类型的基础细节

如何定义数值类型的变量

Python内置了许多数值类型,这些类型中,常用的数值类型有int和float。你可以通过以下方式创建一个数值变量:

var1 = 1
var2 = 10.0

var1是int类型的变量,它对应数学中的整数,它的范围是(-inf, inf),即无穷大,下面的例子说明了这一点:

>>> a = 100
>>> type(a)
<class 'int'>

>>> b = 10**1000
>>> b
10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
>>> type(b)
<class 'int'>

其中a和b均是整数,然而后者是一个非常大的整数。10**1000是指10的1000次方。也就是说Python中的int试图在模拟数学中的整数。

var2是float类型的变量,它对应数学中的实数,你可以通过运行下面指令来查看它的范围:

>>> sys.float_info
sys.float_info(max=1.7976931348623157e+308, max_exp=1024, max_10_exp=308, min=2.2250738585072014e-308, min_exp=-1021, min_10_exp=-307, dig=15, mant_dig=53, epsilon=2.220446049250313e-16, radix=2, rounds=1)

以上输出包含了max和min信息,如果你输入一个比前者大的值,则输出结果会变成inf,示例如下所示:

>>> af = 1.7976931348623157e+309
>>> af
inf
>>> af = 1.7976931348623157e+308
>>> af
1.7976931348623157e+308

另外,float类型的变量是有精度限制的(最多16位),因此如果你需要使用更高精度的实数,那么可以考虑使用Python自带的decimal模块。

简简单单五分钟,教你搞定Python中数值类型的基础细节

除了以上数字类型之外,还有一个比较常见的数值类型:bool,它常常用于条件语句,虽然它的输出类型是bool,但是实际上它的内部数据是整型:

>>> baf = True
>>> type(baf)
<class 'bool'>
>>> baf + 2
3

以上就是Python中常用的数值类型,它们分别是int,float和bool,这些类型几乎会出现在各种编程场景,因此也是必须掌握的。

数值类型的转换

有时,你需要将数值类型转换成其它类型,比如str,或者数值类型之间想要相互转换。Python也提供了这些能力。

以下是数值类型转换成str类型的示例:

>>> str1 = str(3)
>>> str2 = str(3.14)
>>> str1
'3'
>>> str2
'3.14'
>>> type(str1)
<class 'str'>

以下是str类型转换成数值类型的示例:

>>> var1 = int('1')
>>> var2=float('10.0')
>>> var1
1
>>> type(var1)
<class 'int'>

以下是float类型与int类型互转的示例:

>>> var1 = int(10.02)
>>> var2 = float(var1)
>>> type(var1)
<class 'int'>
>>> type(var2)
<class 'float'>

数值类型的操作

定义了数值类型的变量之后,接下来就可以对这些变量进行操作了,比如加,减,乘,除,取模等等。

以下是对2个数值类型进行相加的操作:

>>> var1 = 1 + 2
>>> var2 = 1 + 2.0
>>> type(var1)
<class 'int'>
>>> type(var2)
<class 'float'>
>>> var1
3
>>> var2
3.0

需要注意的是,2个不同类型相加,其中范围更小的类型会自动向范围更大的类型转换。比如上面的例子,var1可以由float来表示,因此该变量由int类型转换成float类型,然后再与2.0相加。

也可以使用比较操作符来比较2个数值类型的变量,比如,下面的例子说明了这一点:

>>> a = 2
>>> b = 3.0
>>> is_a_great_than_b = a > b
>>> print("a > b") if is_a_great_than_b else  print("a <= b")
a <= b
>>> type(is_a_great_than_b)
<class 'bool'>

这句指令is_a_great_than_b = a > b比较了a和b,比较的结果是True。

除此之外,你还可以使用逻辑运算符来作用到数值类变量,具体例子如下所示:

>>> a = 3
>>> b = 6.9
>>> a_and_b = a and b
>>> a_or_b = a or b

>>> a_and_b
6.9
>>> type(a_and_b)
<class 'float'>

>>> a_or_b
3
>>> type(a_or_b)
<class 'int'>

从上面的输出结果可知,and和or运算符并不是简单地输出True或False,而是把原来的变量值返回。

结论

以上内容便是Python中数值类型的基础,所以你必须学会如何定义和使用数值类型变量。数值类型的变量允许我们能够以计算机的方式刻画现实世界中的物体,比如我们想在计算机里定义一个人,那么这个人至少需要使用一个属性,比如年龄(Age)来表示,在计算机里,我们可以定义一个int类型的变量,叫Age来表示一个人的年龄。除此之外,每个人都有对应的名字,那么在计算机里如何表示一个名字呢?这就是接下来要介绍的字符串类型。