实践要求:
编写一个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()函数。
其次打印时,一列的数据应该在一行上,我们需要当换行时候,打印也换行。
从以上三个方面分析我们可以简单的写下面的代码。
-
#!/usr/bin/env python
-
#coding:utf-8
-
#获取数字列表中的最大数
-
def maxlen(lenlist):
-
x=0
-
for i in lenlist:
-
if i > x:
-
x = i
-
return x
-
#打印列表函数
-
def printTable(table):
-
#转置列表
-
newtable=[]
-
#长度列表
-
lentable=[]
-
#最大字符串长度列表
-
maxrlen=[]
-
#列表初始化
-
for i in range(len(table[0])):
-
newtable.append([])
-
for i in range(len(table)):
-
lentable.append([])
-
#获取转置列表和长度列表
-
for i in range(len(table)):
-
for j in range(len(table[i])):
-
lentable[i].append(len(table[i][j]))
-
newtable[j].append(table[i][j])
-
#获取最大字符串长度列表
-
for i in lentable:
-
maxrlen.append(maxlen(i))
-
#打印列右对齐列表
-
for i in newtable:
-
for j in range(len(i)):
-
if j<(len(i)-1):
-
print i[j].rjust(maxrlen[j]),
-
else:
-
print i[j].rjust(maxrlen[j])
-
#返回转置列表
-
return newtable
-
-
-
#主执行函数
-
if __name__ == '__main__':
-
tableData = [['apple','orage','cherries','banana'],['alice','bob','carol','david'],['dogs','cats','moose','goose']]
-
maxrlen = printTable(tableData)
阅读(4421) | 评论(0) | 转发(0) |