
2.2.3 数据类型转换
2.2.2节介绍了字符串、整型、浮点型、布尔类型等数据类型,相信大家对这些数据类型已经很明确了。在实际工作中我们可能经常遇到这样的情况:我们通过计算得到了一个数值,并且需要将这个数值显示在网页上,数值是不可以和字符串直接拼接到一起的,数据类型不匹配会导致错误产生,如图2-22所示。

图2-22 数据类型不匹配会导致错误产生
我们想创建一个HTML文件,但是发现如果将字符串和数值拼接到一起,将产生异常,提示TypeError: can only concatenate str (not "int") to str
,这表示数值不能和字符串拼接到一起。那么有没有什么办法将它们拼接到一起呢?当然有,方法就是先将2222这个数字转换为字符串,之后再和前后的两个字符串进行拼接。这里需要用到str()函数,str()函数可以将传入的参数作为字符串返回。将图2-22中的脚本语句修改为f='<html><body> <h1>result:'+ str(2222) +'</h1></body></html>'
,执行结果如图2-23所示。

图2-23 使用str()函数拼接数值和字符串
同样,可以通过int()、float()函数将字符串转换为整型或浮点型。
阅读如下脚本,您能给出输出结果吗?
a=567
print(type(a))
print(type(str(a)))
b=123.56
print(type(b))
print(type(str(b)))
c='789.67'
print(type(c))
print(type(float(c)))
d='789.65abc'
print(type(d))
print(type(float(d)))
e='888'
print(type(e))
print(type(int(e)))
f='888ffff'
print(type(f))
print(type(int(f)))
下面让我们一起进行分析。
a=567
print(type(a))
print(type(str(a)))
以上三行代码先将变量a
设置为567,而后输出变量a
的类型。变量a
的类型自然应该为整型,也就是<class 'int'>,相信大家都应该很清楚这一点。大家有疑问的主要地方可能是print (type(str(a)))
这条语句。这条语句先执行str(a)
,结果自然是生成'567'这个字符串,于是这条语句变成print(type('567'))
,输出的结果也应该是字符串类型,也就是<class 'str'>
。
b=123.56
print(type(b))
print(type(str(b)))
以上三行代码与前面的类似,只不过变量b
的数据类型为浮点型,也就是<class'float'>
,这里不再赘述。
c='789.67'
print(type(c))
print(type(float(c)))
以上三行代码先定义了一个字符串变量c
,值为'789.67'。语句print(type(c))
的输出结果应为字符串类型,也就是<class 'str'>
;语句print(type(float(c)))
的输出结果应为浮点型,也就是<class 'float'>
。
d='789.65abc'
print(type(d))
print(type(float(d)))
以上三行代码是我们想要重点说明的。变量d
的值为字符串'789.65abc',因此变量d
自然是字符串类型,语句print(type(d))
的输出结果自然为<class 'str'>
,但是执行语句print(type(float (d)))
时会不会出错呢?因为'789.65abc'并不是一个真正的数字字符串,其中还包含英文字符,让我们看一下实际的输出结果,如图2-24所示。可以看到,当执行到语句print(type(float(d)))
时,系统报告ValueError: could not convert string to float: '789.65abc'
错误消息,这表示不能将字符串'789.65abc'转换为浮点数。

图2-24 发生了转换异常
同时我们还发现,一旦语句出现异常,后面的代码就会停止执行。