第一个Python小程序_自动化学习笔记

上一篇 / 下一篇  2015-12-03 08:48:52 / 天气: 阴雨 / 心情: 平静 / 个人分类:Python

最近在学习Python,想捣鼓点东西出来,顺便写点学习笔记,督促一下自己。
Python目前有2.7和3.4两个版本,有一定差别,一些2.7的程序可能在3.4上运行不起来,但是由于2.7目前还是主流,所以也就先从2.7入手学习。
Python的安装可以参考如下网址:Python安装

就从一道习题开始吧,以下代码请注意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']]]]]
但是这样看起来有个问题,列出的元素里还有列表,如何去掉这些列表?
方法一:多次打印
print(Org[0])
print(Org[1])
print(Org[2])
print(Org[3])
>>> 
SW
MED
HWD
['VAL', ['VPM', 'VQ', 'Auto', ['APP', ['WAD', 'LS']]]]
方法二:试试For循环
for each_item in Org:
    print(each_item)
>>> 
SW
MED
HWD
['VAL', ['VPM', 'VQ', 'Auto', ['APP', ['WAD', 'LS']]]]
依然有列表,怎么办?多次循环?好吧,试一下:
for each_item in Org:
    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:
                                    print(each_item4)
                            else:
                                print(each_item3)
                    else:
                        print(each_item2)
            else:
                print(each_item1)
    else:
        print(each_item)
>>> 
SW
MED
HWD
VAL
VPM
VQ
Auto
APP
WAD
LS
恩,不错,每个包含在多层嵌套里的元素都被打印出来了,可是代价太大了,足足用了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)  #这里是问题关键,这个模块引用了自己作为模块的一部分!
        else:
            print(each_item)
Look,print_list这个模块已经写好,他有一个参数“your_list”,其实这个模块就是一个函数,函数的名称是print_list,他有一个参数“your_list”。那么我们来运行一下这个函数:
>>> 
SW
MED
HWD
VAL
VPM
VQ
Auto
APP
WAD
LS
没错,你成功了,只要6行代码!

事实上,上面的解决办法运用了递归函数,使得原本复杂的代码变得极为简洁。

TAG: Python 测试 程序 自动化

 

评分:0

我来说两句

我的栏目

日历

« 2024-05-10  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 3457
  • 日志数: 1
  • 图片数: 1
  • 建立时间: 2012-05-07
  • 更新时间: 2015-12-11

RSS订阅

Open Toolbar