[英]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=" ")
(或交換i
和j
循環,這取決於您打算為每個內部和外部循環使用哪個循環變量)。
對於print_R
和print_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 長。
以循環范圍或下標順序切換i
和j
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.