《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