Chinaunix首页 | 论坛 | 博客
  • 博客访问: 659736
  • 博文数量: 98
  • 博客积分: 3145
  • 博客等级: 中校
  • 技术积分: 1902
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-15 12:52
文章分类
文章存档

2021年(1)

2020年(1)

2016年(8)

2015年(3)

2014年(1)

2013年(5)

2012年(4)

2011年(9)

2010年(12)

2009年(42)

2008年(12)

我的朋友

分类: 系统运维

2016-10-25 12:07:07

实践要求:
   编写一个printTable函数,输入值为一个table,假设内嵌的列表都含有相同的数目,输入实例如下:
tableData = [['apple','orage','cherries','banana'],['alice','bob','carol','david'],['dogs','cats','moose','goose']]
输出要求:每列右对齐(可以参考rjust())
输出:
   apple    alice    dogs
   orage     bob     cats
cherries   carol  moose
 banana  david   goose

编写分析:
 首先需要打印的出来的结果和输入的列表是一个转置的关系,因此我们可以先造一个转置的列表newtable。
 再次由于输出需要右对齐,rjust()需要传输一个字符串的对齐长度,因此我们需要获取输出的每列的最大字符串长度给rjust()函数。
 其次打印时,一列的数据应该在一行上,我们需要当换行时候,打印也换行。
 从以上三个方面分析我们可以简单的写下面的代码。


点击(此处)折叠或打开

  1. #!/usr/bin/env python
  2. #coding:utf-8
  3. #获取数字列表中的最大数
  4. def maxlen(lenlist):
  5.     x=0
  6.     for i in lenlist:
  7.         if i > x:
  8.             x = i
  9.     return x
  10. #打印列表函数
  11. def printTable(table):
  12.     #转置列表
  13.     newtable=[]
  14.     #长度列表
  15.     lentable=[]
  16.     #最大字符串长度列表
  17.     maxrlen=[]
  18.     #列表初始化
  19.     for i in range(len(table[0])):
  20.         newtable.append([])
  21.     for i in range(len(table)):
  22.         lentable.append([])
  23.     #获取转置列表和长度列表
  24.     for i in range(len(table)):
  25.         for j in range(len(table[i])):
  26.             lentable[i].append(len(table[i][j]))
  27.             newtable[j].append(table[i][j])
  28.     #获取最大字符串长度列表
  29.     for i in lentable:
  30.         maxrlen.append(maxlen(i))
  31.     #打印列右对齐列表
  32.     for i in newtable:
  33.         for j in range(len(i)):
  34.             if j<(len(i)-1):
  35.                 print i[j].rjust(maxrlen[j]),
  36.             else:
  37.                 print i[j].rjust(maxrlen[j])
  38.     #返回转置列表
  39.     return newtable


  40. #主执行函数
  41. if __name__ == '__main__':
  42.     tableData = [['apple','orage','cherries','banana'],['alice','bob','carol','david'],['dogs','cats','moose','goose']]
  43.     maxrlen = printTable(tableData)



阅读(4352) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~