2021-07-01

python编程第六章
字符串操作
项目实践表格打印

"""表格打印
written by Snowball
date:2021-7-1"""

def print_table(tabledata):
    colwidths=[0]*len(tabledata)
    n=''
    for x in range(len(tabledata)):
        t=''
        for y in range(len(tabledata[0])):
            t=t + str(len(tabledata[x][y]))
            #print(t,end=',')
        #print('\n',end='')
        colwidths[x]=int(max(t))
    #print(colwidths)

    for i in range(len(colwidths)):
        n=n+str(colwidths[i])
    num=max(n)
    #print(num)    


    for y in range(len(tabledata[0])):
        for x in range(len(tabledata)):
            print(tabledata[x][y].rjust(int(num)),end='')
        print('\n',end='')

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

tabledata2=[['dogs', 'cats', 'moose', 'goose'],
           ['Alice', 'Bob', 'Carol', 'David'],
           ['apples', 'oranges', 'cherries', 'banana']]          
print_table(tabledata1)
print('\n',end='')
print_table(tabledata2)

代码中有几个print函数用于跟踪数据,查看处理过程,为不影响输出结果,现已经注释掉
输出结果如下:
在这里插入图片描述
加深对作用域理解

间距发生变更

"""表格打印,间距发生变化
written by Snowball
date:2021-7-1"""

def print_table(tabledata):

    colwidths=[0]*len(tabledata)
    for y in range(len(tabledata[0])):
        t=''
        for x in range(len(tabledata)):
            t=t+str(len(tabledata[x][y]))
            colwidths[x]=max(t)
            print(tabledata[x][y].rjust(int(colwidths[x])),end='')
        print('\n',end='')

tabledata=[['apples', 'oranges', 'cherries', 'banana'],
           ['Alice', 'Bob', 'Carol', 'David'],
           ['dogs', 'cats', 'moose', 'goose']]
print_table(tabledata)

代码优化
对colwidth数字列表排序,数字由大到小排列

"""表格打印,间距固定
written by Snowball
date:2021-7-1"""

def print_table(tabledata):
    colwidths=[0]*len(tabledata)
    n=''
    for x in range(len(tabledata)):
        t=''
        for y in range(len(tabledata[0])):
            t=t + str(len(tabledata[x][y]))
            #print(t,end=',')
        #print('\n',end='')
        colwidths[x]=int(max(t))
    #print(colwidths)

    """for i in range(len(colwidths)):
        n=n+str(colwidths[i])
    num=max(n)
    #print(num)"""    
    colwidths.sort(reverse=True)

    for y in range(len(tabledata[0])):
        for x in range(len(tabledata)):
            print(tabledata[x][y].rjust(int(colwidths[0])),end='')
        print('\n',end='')

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

tabledata2=[['dogs', 'cats', 'moose', 'goose'],
           ['Alice', 'Bob', 'Carol', 'David'],
           ['apples', 'oranges', 'cherries', 'banana']]          
print_table(tabledata1)
print('\n',end='')
print_table(tabledata2)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值