Python 表格打印

发布时间:2019-08-24 09:20:52编辑:auto阅读(1666)

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

    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)
    

关键字