Python表格打印-创新互联

Python编程快速上手实践项目题目,欢迎指证与优化!
编写一个名为 printTable()的函数, 它接受字符串的列表的列表,将它显示在组
织良好的表格中, 每列右对齐。假定所有内层列表都包含同样数目的字符串。例如,
该值可能看起来像这样:
tableData = [['apples', 'oranges', 'cherries', 'banana'],
['Alice', 'Bob', 'Carol', 'David'],
['dogs', 'cats', 'moose', 'goose']]
你的 printTable()函数将打印出:
Python 表格打印
思路一:
1.计算列表中(包括内部列表)最长元素的长度;
2.以最长元素的长度值作为全局右对齐的值打印列表
代码:

创新互联公司从2013年开始,是专业互联网技术服务公司,拥有项目网站制作、成都网站制作网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元安岳做网站,已为上家服务,为安岳各地企业和个人服务,联系电话:028-86922220
import copy
tableData = [['apples', 'oranges', 'cherries', 'banana'],
['Alice', 'Bob1111111111111', 'Carol', 'David'],
['dogs', 'cats', 'moose', 'goose']]
def count_width(the_list):
    #定义函数:计算列表字符串最长值
    new_list=copy.deepcopy(the_list)
    #复制列表保存到独立的新列表
    colWidths = [0] * len(new_list)
    #创建一个列表,数目等同于tableData
    i=0
    while i < len(new_list):
        new_list[i].sort(key = lambda i:len(i),reverse = True)
        '''重新按照字符长度逆序(从大到小),lamba表示匿名函数,key = lambda i:len(i)代表
           以元素i的len()值作为比较
        '''
        colWidths[i]=new_list[i][0]
      #  print (colWidths[i])
        i=i+1
    #将tableData[i]降序排序,取大值(第一个),得到一个每个内层列表中最长的字符串的列表
    colWidths.sort(key = lambda i:len(i),reverse = True)
    width=len(colWidths[0])
    #将colWidths降序排序,取大值(第一个)并计算其字符宽度
    #print (width)
    #print (the_list)
    #print (new_list)
    return width

def list_rjust(the_list,width):
    for j in range (len(the_list[0])):
        for i in range (len(the_list)):
            print(the_list[i][j].rjust(width),end=" ")
        print("\r")
list_rjust(tableData,count_width(tableData))

思路二:
1.计算列表(数组,没有嵌套数组)最长元素的值;
2.按照列表最长元素的值打印列表(每列的最长值可能不同)
代码:

tableDate=[['apples', 'oranges', 'cherries', 'banana'],
           ['Alice', 'Bob', 'Carol', 'David'],
           ['dogs', 'cats', 'moose', 'goose']]
def findmaxlen(Dates):
    '''
    计算一个数组中最长元素的长度
    '''
    maxlen=0
    for i in range(len(Dates)):
        if len(Dates[i])>maxlen:
            maxlen=len(Dates[i])
    return maxlen
#print(findmaxlen(tableDate[0]))

def printTable(the_list):
    for j in range (len(the_list[0])):#打印内部数组的第j个
        for i in range (len(the_list)):#打印数组的第i个
            print(the_list[i][j].rjust(findmaxlen(the_list[i])),end=' ')
            #打印第i个数组的第j个内部数组时,按照第i个数组中的元素最长值右对齐
        print("\r")
printTable(tableDate)

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享标题:Python表格打印-创新互联
标题URL:http://pwwzsj.com/article/hcspp.html