Python的数据类型转换——软件接口测试实战详解(9)

发表于:2021-5-26 09:48

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:于涌 马林 张林丰    来源:51Testing软件测试网原创

  2.2.3  数据类型转换
  上一节介绍了字符串、整型、浮点型、布尔类型数据,相信读者对这些数据类型已经很熟悉了。我们在实际工作中可能经常遇到这样一些情况,例如,通过计算得到了一个数值,需要将这个数值展现在网页上。然而,数值是不可以和字符串直接拼接到一起的。
  如图2-22所示,这里我们想创建一个HTML文件,故先拼接完整的HTML页面,但是如果将字符串和数值拼接到一起,将产生一个异常,提示“TypeError: can only concatenate str (not "int") to str”。这句话的意思是,“类型错误:只能拼接字符串(非整型)与字符串”,即整型数字不能和字符串拼接到一起。那么,有没有什么办法将它们拼接到一起呢?当然有,可以将2222这个数字先转换为字符串,而后再和前后两个字符串进行拼接。这就用到了str()函数,这个函数可以将传入的参数转换为字符串。这里只需要将该脚本变为f='<html><body><h1>result:'+str(2222)+'</h1></body></html>',再通过print(f)将其内容输出即可。实际执行结果如图2-23所示。
图2-22  由于数据类型不匹配而产生错误的脚本及其执行结果

图2-23  应用str()函数进行字符串拼接的脚本及其执行结果

  同样,还可以通过int()、float()函数将一个字符串转换为整型或者浮点型。
  请给出如下脚本的执行结果。
1   a=567
2   print(type(a))
3   print(type(str(a)))
4   b=123.56
5   print(type(b))
6   print(type(str(b)))
7   c='789.67'
8   print(type(c))
9   print(type(float(c)))
10  d='789.65abc'
11  print(type(d))
12  print(type(float(d)))
13  e='888'
14  print(type(e))
15  print(type(int(e)))
16  f='888ffff'
17  print(type(f))
18  print(type(int(f)))

  接下来,我们一起来分析上面的脚本。
  第1~3行代码先对变量a进行赋值,而后输出变量a的类型,变量a的类型自然应该为整型,即<class 'int'>。读者可能有疑问的地方是第3行代码。其中先执行str(a),执行结果自然是“567”这个字符串,于是第3行代码变成了print(type('567')),因此其输出结果应该是字符串类型,即<class 'str'>。
  第4~6行代码与第1~3行代码类似,只不过变量b的数据类型为浮点类型,即<class 'float'>,这里不再详述。
  第7~9行代码先定义了一个字符串c,其值为'789.67',print(type(c))的输出应该为<class 'str'>,print(type(float(c)))的输出应为<class 'float'>。
  我们要重点说明的是第10~12行代码,变量d的值是字符串'789.65abc',故其类型自然是字符串类型,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  类型转换异常的脚本及其执行结果

  同时,我们还发现一旦脚本语句出现了异常,其后面的代码就停止执行。
  从出现异常的第12行代码开始,其后面的代码均未执行。

  2.2.4  缩进
  缩进在Python程序中起着重大的作用,它可以使Python代码的层次结构变得清晰,提高了可读性,在一定程度上也提高了可维护性。但是如果由于自己的疏忽使缩进的位置发生了变化,那么Python程序所做的事很有可能就和当时预期的结果有天壤之别了。
  这里通过一段简单的代码进行演示。
a=10
b=11
if (a>b):
   print("b大于a!")
print('程序执行结束')

  接下来,我们对这段Python代码做一个分析,变量a的值为10,变量b的值为11,所以a>b为假,故不输出“b大于a!”,最终的输出应该为“程序执行结束”,如图2-25所示。
图2-25  符合我们意愿的缩进代码的输出结果

  上面的代码是我们想要实现的,但是如果我们在编写代码的时候,使print('程序执行结束')语句前面多缩进了4个空格,那么执行结果就完全变了,如图2-26所示。
图2-26  不符合我们意愿的缩进代码及其执行结果

  这段代码中因为if语句为假,所以永远不会输出“程序执行结束”。
  从上面这两段代码,我们能看到由于缩进而引起的问题,由此可见缩进在Python代码中的重要意义。
  缩进在Python中是用来标识不同的代码块的,通过不同的缩进来判断代码之间的关系。

  2.2.5  内置函数
  内置函数是Python为方便程序设计人员快速编写程序而提供的函数,在使用时直接调用即可,如print()函数就是一个内置函数。
  除了print()函数外,Python还提供了哪些内置函数呢?可以通过dir(_ _builtins_ _)这条语句来获得Python提供的内置函数列表,如图2-27所示。
  有很多读者可能要问:“这些内置函数的作用是什么啊?”这是一个非常好的问题,我们可以使用Python提供的另外一个内置函数help()来查看对应函数的说明。这里以查看print()函数的说明为例,如图2-28所示。
图2-27  Python提供的内置函数列表

图2-28  print()函数的说明

  如图2-28所示,help()函数十分简单,只需要将要查看帮助的函数名称以参数的形式传给help()函数,就可以看到其对应的帮助信息了。以help(print)为例,可以看到在输入该指令后,输出了print()函数的相关信息,这对于初学者来讲非常有帮助。

查看《软件接口测试实战详解》全部连载章节
版权声明:51Testing软件测试网获得人民邮电出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号