有人可以解释为什么这会导致索引超出范围错误吗?

时间:2019-10-11 17:16:06

标签: python

我试图理解为什么会发出此错误,我尝试重新格式化代码并检查是否有任何错误,但我仍然无法获得正确的答案

 n=int(input("Enter the number of rows: "))
    m=[]
    for i in range(2*n-1):
        m.append([])
        m[i].append(1)
        for j in range (1,i):
            m[i].append(m[i-1][j-1]+m[i-1][j])
        if n != 0:
            m[i].append(1)
    pTr = []
    for i in range(n):
        row = []
        for j in range(i,n+1):
            row.enter code hereappend(m[j][i])
        pTr.append(row)
    print("The pascal matrix is as shown below")
    for i in range(n):
        for j in range(n):
            print("{0:6}".format(pTr[i][j]), end=" ")
        print()

1 个答案:

答案 0 :(得分:0)

您正在尝试打印n行Pascal三角形。 但是,您的输出循环坚持要在三角形的每一行中找到n个元素。一旦碰到较短的行,它就会崩溃。

简单的print跟踪显示错误:

print("The pascal matrix is as shown below", pTr)

n = 4的输出(分成几行):

[
 [1, 1, 1, 1, 1],
 [1, 2, 3, 4],
 [1, 3, 6],
 [1, 4]
]

当您坚持只打印只有3个元素的列表中的4个元素时,您的代码就会崩溃。