《Python编程快速上手——让繁琐工作自动化》实践项目——打印表格

本文介绍了如何编写一个名为printTable的Python函数,接收嵌套的字符串列表,根据内嵌列表中元素的最大长度实现右对齐和左对齐,以美观地打印表格。
摘要由CSDN通过智能技术生成

题目:
编写一个名为 printTable()的函数,它接受字符串的列表的列表,将它显示在组织良好的表格中,每列右对齐。假定所有内层列表都包含同样数目的字符串。例如,该值可能看起来像这样:

tableData = [['apples', 'oranges', 'cherries', 'banana'],
 			 ['Alice', 'Bob', 'Carol', 'David'], 
 			 ['dogs', 'cats', 'moose', 'goose']] 

你的 printTable()函数将打印出:

  apples Alice dogs 
 oranges Bob   cats 
cherries Carol moose
  banana David goose

个人思路:看打印可以看出第1列是右对齐,第2、3列是左对齐,且每一列都是内嵌列表的,但是我们打印一行是不同列表同位置的元素。因此我们可以先获取每个内嵌列表中元素的最大长度。再对每一行中进行不同的格式化。

首先获取每个列表最大的长度。用来当rjust和ljust的参数。

def printTable(L):
    colWidth = []
    for i in range(len(L)):
        colWidth.append(max(len(j) for j in L[i]))  # 这里获取每个内置列表的最大字符串长度

然后分别处理要打印的第一、第二、第三个元素。

    for i in range(len(L[0])):
        for j in range(len(L)):  # 这里根据输出要求进行调整,第一行输出apples、Alice、dogs,在输出的时候再调用rjust,他们的缩进都不一样所以得使用if语句判定
            if j == 0:  # 第一个列表中最大长度度,且不换行
                s = L[j][i].rjust(colWidth[j])
                print(s, end=' ')
            elif j == 1:  # 第二个,不换行
                s = L[j][i].ljust(colWidth[j])
                print(s, end=' ')

            else:

                s = L[j][i].ljust(colWidth[j])
                print(s, )  # 第三个,且换行

完整代码如下:

def printTable(L):
    colWidth = []
    for i in range(len(L)):
        colWidth.append(max(len(j) for j in L[i]))  # 这里获取每个内置列表的最大字符串长度

    for i in range(len(L[0])):
        for j in range(len(L)):  # 这里根据输出要求进行调整,第一行输出apples、Alice、dogs,在输出的时候再调用rjust,他们的缩进都不一样所以得使用if语句判定
            if j == 0:
                s = L[j][i].rjust(colWidth[j])
                print(s, end=' ')
            elif j == 1:
                s = L[j][i].ljust(colWidth[j])
                print(s, end=' ')

            else:

                s = L[j][i].ljust(colWidth[j])
                print(s, )


if __name__ == '__main__':
    tableData = [['apples', 'oranges', 'cherries', 'banana'],
                 ['Alice', 'Bob', 'Carol', 'David'],
                 ['dogs', 'cats', 'moose', 'goose']]
    printTable(tableData)

结果:

  apples Alice dogs 
 oranges Bob   cats 
cherries Carol moose
  banana David goose

如有错误,欢迎指出。如果有疑问,我会在评论区回答。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值