软件自动化测试实战:基于开源测试工具
上QQ阅读APP看书,第一时间看更新

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 发生了转换异常

同时我们还发现,一旦语句出现异常,后面的代码就会停止执行。