Function python矩阵的错误和输出问题?

Function python矩阵的错误和输出问题?,function,python-3.x,matrix,format,Function,Python 3.x,Matrix,Format,我正在构建一个函数,它接受由列表组成的列表(例如:[['a']、['b']、['c']])并将其输出为表。我不能使用pretty table,因为我需要一个行和空格完全相同的特定输出(例如|a | b |) 以下是我的功能: def show_table(table): if table is None: table=[] new_table="" for row in range(table): for val in row: new

我正在构建一个函数,它接受由列表组成的列表(例如:
[['a']、['b']、['c']]
)并将其输出为表。我不能使用pretty table,因为我需要一个行和空格完全相同的特定输出(例如
|a | b |

以下是我的功能:

def show_table(table):
  if table is None:
    table=[]
    new_table=""
    for row in range(table):
       for val in row:
         new_table+= ("| "+val+" ")
    new_table+= "|\n"
  return new_table.strip("\n")
我不断得到错误:

show_table([['a'],['b'],['c']])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 5, in show_table
TypeError: 'list' object cannot be interpreted as an integer
问题在于:

for row in range(table):
range
将1、2或3个整数作为参数。它不需要列表

您要使用:

for row in table:

同时,检查你的缩进;看起来换行符的添加应该更加缩进。

您的回溯告诉您问题发生在第5行:

for row in range(table):
…因此,这一行中的某些内容试图将其他内容解释为整数,但没有成功。如果我们看一下for
范围()
,我们会看到:

范围构造函数的参数必须是整数(内置的
int
或实现
\uuuuuu索引\uuuu
特殊方法的任何对象)

…但
不是整数;这是一张单子。如果您想在列表(或类似的东西)上迭代,您不需要特殊的函数——只需

for row in range:
会很好用的

除了误用
range()
,函数还有另一个问题,那就是代码缩进太多。这:

  if table is None:
    table=[]
    new_table=""
    for row in range(table):
       for val in row:
         new_table+= ("| "+val+" ")
    new_table+= "|\n"
如果
table
None
,则只会执行任何缩进的代码,而如果是这样,您真正想要的只是设置
table=[]
。解决这两个问题会给您带来以下好处:

def show_table(table):
    if table is None:
        table=[]
    new_table = ""
    for row in table:
        for val in row:
             new_table += ("| " + val + " ")
        new_table += "|\n"
    return new_table.strip("\n")

(我还将所有缩进改为四个空格,并在此处和此处添加空格,以改进样式)。

请包含函数给定输入时收到的确切错误消息…“列表不可编辑”不是吗。还要确保你在这里发布的代码与你遇到问题的代码完全一致;如前所述,上述函数将永远不会输出任何内容,因此它无法输出列表中的第一项。我包含了确切的错误,我现在得到@ZeroPiraeusPlease review如何在帮助文件中格式化您的帖子。有关如何正确格式化您的问题(包括代码等)的说明可用。修复了输出!但我考试还是不及格。我在问题中加上了失败的测试。请看一看@Tom ZychYou应该尝试自己解决格式化问题,现在您已经有了可以执行的代码,如果您仍然被卡住,请发布另一个问题。不要在回答的问题上添加更多内容。我正在处理这个问题,因为你已经在回答了。我觉得不值得再问一个问题。你是个天才!这修复了错误问题。它仍然没有通过测试。我想我遗漏了新行…是的,上面的代码仍然没有按预期格式化项目。更新…有没有一种方法可以使用format函数添加到新行中?实际上@Kelsey,现在我看到了它,在一个单一的答案中,格式化问题有点难以解决。现在您已经掌握了程序的基本结构,我建议您提出一个新的问题(提示:询问如何在表输出中对列进行对齐)…并记住通读,以便正确显示您的问题。好的!谢谢大家!
def show_table(table):
    if table is None:
        table=[]
    new_table = ""
    for row in table:
        for val in row:
             new_table += ("| " + val + " ")
        new_table += "|\n"
    return new_table.strip("\n")