首页 > 解决方案 > 在 Python 的打印函数中使用分隔符参数时遇到问题

问题描述

我正在做一个练习程序,我设计了一个函数,该函数需要一张表格并正确打印出来。我的代码不是最好的,我还是一个初学者,所以我还不知道如何让我的代码更短。对于函数的实际打印部分,我在使用sep=''print 函数中的参数时遇到了麻烦。我能够围绕它进行编码,但我想尝试了解我哪里出错了,它不起作用。

这是我的代码(它目前仅适用于 3x3 的列表):

 table = [['Koda','Lucy','Sokka'],
         ['Red','Black','Grey'],
         ['Dog','Dog','Cat']]


lengths = [] # must make global variable so value will be added with each iteration of for loop

for d in range(len(table)): # 3 times
    for a in range(len(table[d])):
        x,y,z = table[d][0:3]
        if len(x) > len(y):
            if len(x) > len(z):
                longest = len(x) # order here does matter. cannot assign function as variable
                break
            elif len(x) < len(z):
                longest = len(z)
                break
            else:
                longest = len(x)
                break
        elif len(x) < len(y):
            if len(y) > len(z):
                longest = len(y)
                break
            elif len(y) < len(z):
                longest = len(z)
                break
            else:
                longest = len(y)
                break
        else:
            if len(x) == len(z):
                longest = len(x)
                break
            elif len(x) < len(z):
                longest = len(z)
                break
            else: 
                longest = len(x)
                break
    lengths.append(longest)
    

for i in range(len(table)):
    a = table[0][i].rjust(lengths[0])
    b = table[1][i].rjust(lengths[1])
    c = table[2][i].rjust(lengths[2])
    print(a+' '+b+' '+c)

最后一个打印行,我尝试输入:

print(a+b+c,sep=' ') 

但它打印:

 Koda  RedDog

其中 a 变量是合理的,并且添加了一个看似空格,但在 b 和 c 之间没有添加空格。

我的语法是否略有偏差,还是与使用索引而不是直整数的流程有关?我能够找到解决方法,但我认为理解它为什么不起作用,特别是如果我做错了什么会非常有帮助。

此外,如果有人有任何提示可以帮助我的代码适用于任何大小的列表,我会欣然接受。

标签: pythonmethodsprinting

解决方案


我认为您想用逗号而不是加号分隔变量。+连接,但,将它们作为单独的参数printprint可以用空格分隔。


推荐阅读