《Python核心编程》第二版第六章练习题答案-第六部分

6–17.方法.实现一个叫myPop()的函数,功能类似于列表的pop()方法,用一个列表作为输入,
移除列表的最新一个元素,并返回它.

解答:

#  -*- coding:utf-8 -*- 
#!/usr/bin/python
#Filename:6-17.py
'''
Created on 2012-7-30

@author: wanglei
'''
def mypop(alist):
    list_len=len(alist)
    if list_len==0:
        print "列表为空!"
        return
    popitem=alist[list_len-1]
    alist.remove(alist[list_len-1])
    return popitem
alist=['abc','def','xyz']
print mypop(alist)
print alist

测试数据:

xyz
['abc', 'def']

6–19.多列输出.有任意项的序列或者其他容器,把它们等距离分列显示.由调用者提供数据和
输出格式.例如,如果你传入100 个项并定义3 列输出,按照需要的模式显示这些数据.这种情况下,应
该是两列显示33 个项,最后一列显示34个.你可以让用户来选择水平排序或者垂直排序.

解答:

 

#  -*- coding:utf-8 -*- 
#!/usr/bin/python
#Filename:6-19.py
'''
Created on 2012-7-30

@author: wanglei
'''
def leveloutput(alist,linenum):
    list_len=len(alist)
    item_eachline=list_len/linenum
    linecount=1
    linebreak=0 #变量增加到给定值,则输出一个换行
    for i in alist:
        if linecount<linenum: #未到最后一行
            print '%4d'%i,
            linebreak +=1
            if linebreak==item_eachline:
                print '\n'
                linebreak=0
                linecount +=1
        else:
            print '%4d'%i,
def verticaloutput(alist,linenum):
    list_len=len(alist)
    item_eachline=list_len/linenum
    linebreak=0
    total=0 #记录前面的列输出到列表的第几项了
    for linecount in range(1,linenum+1):#第一行到倒数第二行
        for i in range(linecount-1,item_eachline*linenum,linenum):
            print "%3d"%i, 
            total +=1
            linebreak +=1
            if linebreak==item_eachline and linecount!=linenum: #对最后一行进行的处理
                print '\n'
                linebreak=0
    for j in range(total,list_len):
        print "%3d"%j,
alist=[x for x in range(100)]
verticaloutput(alist,15)
#leveloutput(alist,15)

 

测试数据:

水平输出:

   0    1    2    3    4    5 

   6    7    8    9   10   11 

  12   13   14   15   16   17 

  18   19   20   21   22   23 

  24   25   26   27   28   29 

  30   31   32   33   34   35 

  36   37   38   39   40   41 

  42   43   44   45   46   47 

  48   49   50   51   52   53 

  54   55   56   57   58   59 

  60   61   62   63   64   65 

  66   67   68   69   70   71 

  72   73   74   75   76   77 

  78   79   80   81   82   83 

  84   85   86   87   88   89   90   91   92   93   94   95   96   97   98   99

 垂直输出:

  0  15  30  45  60  75 

  1  16  31  46  61  76 

  2  17  32  47  62  77 

  3  18  33  48  63  78 

  4  19  34  49  64  79 

  5  20  35  50  65  80 

  6  21  36  51  66  81 

  7  22  37  52  67  82 

  8  23  38  53  68  83 

  9  24  39  54  69  84 

 10  25  40  55  70  85 

 11  26  41  56  71  86 

 12  27  42  57  72  87 

 13  28  43  58  73  88 

 14  29  44  59  74  89  90  91  92  93  94  95  96  97  98  99

 

 

 



posted on 2012-07-30 15:27  温柔的暴力  阅读(1084)  评论(0编辑  收藏  举报

导航