第一个Python小程序_自动化学习笔记
上一篇 /
下一篇 2015-12-03 08:48:52 / 天气: 阴雨
/ 心情: 平静
/ 个人分类:Python
最近在学习Python,想捣鼓点东西出来,顺便写点学习笔记,督促一下自己。Python目前有2.7和3.4两个版本,有一定差别,一些2.7的程序可能在3.4上运行不起来,但是由于2.7目前还是主流,所以也就先从2.7入手学习。
就从一道习题开始吧,以下代码请注意Python应有的缩进。
现有一个公司的部门结构如下,请使用Python列出列表里所有的元素:
Org=['SW','MED','HWD',['VAL',['VPM','VQ','Auto',['APP',['WAD','LS']]]]]
如何理出列表里的元素呢?
方法:直接打印
print(Org)
['SW', 'MED', 'HWD', ['VAL', ['VPM', 'VQ', 'Auto', ['APP', ['WAD', 'LS']]]]]
但是这样看起来有个问题,列出的元素里还有列表,如何去掉这些列表?
方法一:多次打印
['VAL', ['VPM', 'VQ', 'Auto', ['APP', ['WAD', 'LS']]]]
方法二:试试For循环
['VAL', ['VPM', 'VQ', 'Auto', ['APP', ['WAD', 'LS']]]]
依然有列表,怎么办?多次循环?好吧,试一下:
if isinstance(each_item, list):
for each_item1 in each_item:
if isinstance(each_item1, list):
for each_item2 in each_item1:
if isinstance(each_item2, list):
for each_item3 in each_item2:
if isinstance(each_item3, list):
for each_item4 in each_item3:
恩,不错,每个包含在多层嵌套里的元素都被打印出来了,可是代价太大了,足足用了18行代码,要知道Java那么多代码但只有其中的
9行代码价值180亿美金,并不是代码越多越好,而且现在的嵌套只有4层,那如何对付5层6层甚至更多曾嵌套呢,难道也是用for循环一层一层写下去么?
我们观察到,在这几层循环中有一些代码是重复的,比如下面:
for each_item3 in each_item2:
if isinstance(each_item3, list):
for each_item4 in each_item3:
print(each_item4)
else:
print(each_item3)
是否可以把这些重复的语句想办法合并一下,要知道计算机可是最喜欢干也最擅长干重复的事情了,那么下面就把重复的代码定义为一个模块,起个名字叫做print_list:
def print_list(your_list):
for each_item in your_list:
if isinstance(each_item, list):
print_list(each_item) #这里是问题关键,这个模块引用了自己作为模块的一部分!
Look,print_list这个模块已经写好,他有一个参数“your_list”,其实这个模块就是一个函数,函数的名称是print_list,他有一个参数“your_list”。那么我们来运行一下这个函数:
没错,你成功了,只要6行代码!
事实上,上面的解决办法运用了递归函数,使得原本复杂的代码变得极为简洁。
相关阅读:
- python正则表达式初探 (mimilog, 2015-11-09)
- python进程,线程的一点小总结1 (mimilog, 2015-11-16)
- selenium+python环境搭建(转载) (tshmylife, 2015-11-17)
- 【python】文件对比脚本 (bll4545, 2015-11-17)
- python 整理ab性能脚本 (南瓜demi, 2015-11-19)
- python log日志整理 (南瓜demi, 2015-11-19)
- QTP测试delphi程序 (haozjz, 2015-11-23)
- QTP六脉神剑之调用Java程序 (haozjz, 2015-11-23)
- [原创]python版 selenium 轻量级WEB自动化测试框架 (joy3mao, 2015-12-01)
- 修改LR自带的示例程序端口号,Cannot create GUI process-program not found(转载) (wjtest, 2015-12-01)
收藏
举报
TAG:
Python
测试
程序
自动化