需要帮助调试print语句(矩阵):

时间:2013-03-27 20:10:08

标签: debugging matrix

所以我有这个我正在研究的程序。这是迄今为止的代码:

A = [[2,4], [7,0], [6,3]]
B = [[3,1], [-1,8], [-3, 3]]

def Print(A):
    for i in range(len(A)):
        line = "\t|"+str(A[i][0])
        for j in range(1, len(A[i])):
            line = line + "\t" + str(A[i][j])
        line = line + "|"
        print(line)

def matrix_add(A,B):
    Z = []
    for i in range(len(A)):
        row = []
        for j in range(len(A[0])):
            row.append(A[i][j]+B[i][j])
        Z.append(row)
    return Z

print("A + B:")
Print(matrix_add(A,B))

我得到的印刷声明是:

A + B:
        |5    5|
        |6    8|
        |3    6|

但我需要的印刷声明是:

A + B:
     |5      5|
     |6      8|
     |3      6|

了解矩阵如何更靠近A + B: 我如何修复程序来执行此操作?我无法弄明白。

我尝试向line = "\t|"+str(A[i][0])添加空格,因此它更改为line = " |"+str(A[i][0]),但只是将print语句更改为:

A + B:
    |5   5|
    |6   8|
    |3   6|

我需要它看起来完全一样。

2 个答案:

答案 0 :(得分:1)

在这第一行:

line =“\ t |”+ str(A [i] [0])

您需要将标签(\ t)更改为不会向远处移动的标签。也许有几个空格?

答案 1 :(得分:0)

您可以使用Python拥有的许多字符串格式选项。

http://docs.python.org/2/library/string.html#format-specification-mini-language

def Print(A):
    for i in range(len(A)):
        line = "{0: >6}".format("|"+str(A[i][0]))
        for j in range(1, len(A[i])):
            line = line + "{0: >4}".format(str(A[i][j]))
        line = line + "|"
        print(line)

如果您输入较大的数字,例如10,则缩进会减1。您可以确定要格式化的字符串的长度,并使用长度使其更加通用。