簡體   English   中英

我該如何解決這個錯誤,它說列表索引超出范圍?

[英]How can i fix this error it says the list index is out of range?

我想知道為什么這個錯誤一直顯示。 我盡我所能。 我只想用星號打印我的名字。 你能幫我么? PS。 我是初學者。 錯誤是第 55 行,在:

print(print_A[i][j], end=" ")
IndexError: list index out of range

這是我的完整代碼

str1 = "MARC"
print_M = [[" " for i in range(7)] for j in range(7)]
print_A = [[" " for i in range(7)] for j in range(5)]
print_R = [[" " for i in range(7)] for j in range(5)]
print_C = [[" " for i in range(7)] for j in range(5)]

# code for M
for row in range(7):
for col in range(7):
    if (col == 0 or col == 6) or (row == col and col < 4) or (row + 
col == 6 and col > 3):
        print("* ", end="")
    else:
        print("  ", end="")
print()

# for A
str1 = ""
for row in range(7):
for col in range(5):
    if ((col == 0 or col == 4) and row != 0) or ((row == 0 or row == 
3) and (col > 0 and col < 4)):
        str1 = str1 + "*"
    else:
        str1 = str1 + " "
str1 = str1 + "\n"
print(str1)

# for R
for row in range(7):
for col in range(5):
    if col == 0 or (col == 4 and (row != 0 and row != 3)) or ((row == 
0 or row == 3) and (0 < col < 4)):
        print("*", end="")
    else:
        print(end=" ")
print()
# for C
for row in range(7):
for col in range(5):
    if (col == 0) or ((row == 0 or row == 6) and (col > 0)):
        print("*", end="")
    else:
        print(end="")
print()

for i in range(7):
for j in range(7):
    print(print_M[i][j], end=" ")
print(end="  ")
for j in range(5):
    print(print_A[i][j], end=" ")
print(end="  ")
for j in range(5):
    print(print_R[i][j], end=" ")
print(end="  ")
for j in range(5):
    print(print_C[i][j], end=" ")
print()

這將創建一個包含 5 個元素的列表,每個元素都是一個 7 項列表(實際上每次都相同)。

print_A = [[" " for i in range(7)] for j in range(5)]

你可以做(最多):

print_A[4][6]

但這是錯誤的形狀:

print_A[6][4]

這里(假設您想要的縮進,因為您發布的內容無效)是您循環它的方式:

for i in range(7):
    for j in range(5):
        print(print_A[i][j], end=" ")

因此,您正在嘗試查找超出此(矩形)形狀范圍的索引——當i為 6 時print_A[i]失敗(因此未達到[j]查找)。

你可能的意思是:

for i in range(5):
    for j in range(7):
        print(print_A[i][j], end=" ")

(或交換ij循環,這取決於您打算為每個內部和外部循環使用哪個循環變量)。

對於print_Rprint_C也是如此。 print_M沒問題,因為它是方形的。

你有你的下標切換。 字母 ARC 都是 5x7 字符映射,但您的打印循環是:

for i in range(7):
    ...
    for j in range(5):
        print(print_A[i][j], end=" ")
    print(end="  ")

您不能運行i超過 4 的值,因為該維度只有 5 長。

以循環范圍或下標順序切換ij

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM