Python 如何修复此错误?它表示列表索引超出范围?
我想知道为什么这个错误不断出现。我尽了最大的努力。我只想用星号打印我的名字。你能帮帮我吗?我是个初学者。 错误是第55行,在:Python 如何修复此错误?它表示列表索引超出范围?,python,Python,我想知道为什么这个错误不断出现。我尽了最大的努力。我只想用星号打印我的名字。你能帮帮我吗?我是个初学者。 错误是第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 = [[
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()
str1=“MARC”
打印_M=[“”表示范围(7)中的i]表示范围(7)中的j]
打印_A=[“”表示范围(7)中的i]表示范围(5)中的j]
print_R=[“”表示范围(7)中的i]表示范围(5)中的j]
打印_C=[“”表示范围(7)中的i]表示范围(5)中的j]
#M的代码
对于范围(7)中的行:
对于范围(7)中的列:
如果(列==0或列==6)或(行==列且列<4)或(行+
列==6和列>3):
打印(“*”,end=“”)
其他:
打印(“,end=”“)
打印()
#暂时
str1=“”
对于范围(7)中的行:
对于范围(5)中的列:
如果((列==0或列==4)和行!=0)或((行==0或行==0)
3) 和(col>0和col<4)):
str1=str1+“*”
其他:
str1=str1+“”
str1=str1+“\n”
打印(str1)
#对于R
对于范围(7)中的行:
对于范围(5)中的列:
如果列==0或(列==4和(行!=0和行!=3))或(行==
0或行==3)和(0 0)):
打印(“*”,end=“”)
其他:
打印(end=”“)
打印()
对于范围(7)中的i:
对于范围(7)内的j:
print(print_M[i][j],end=”“)
打印(end=”“)
对于范围(5)内的j:
print(print_A[i][j],end=”“)
打印(end=”“)
对于范围(5)内的j:
print(print_R[i][j],end=”“)
打印(end=”“)
对于范围(5)内的j:
print(print_C[i][j],end=”“)
打印()
这将创建一个包含5个元素的列表,每个元素都是7项列表(实际上每次都是相同的)
您可以(最多)执行以下操作:
但这是一个错误的形状:
print_A[6][4]
这里(假设您想要缩进,因为您发布的内容无效)是如何循环的:
for i in range(7):
for j in range(5):
print(print_A[i][j], end=" ")
因此,您试图查找超出此(矩形)形状范围的索引--打印A[i]
在i
为6时失败(因此未达到[j]
查找)
你可能是说:
for i in range(5):
for j in range(7):
print(print_A[i][j], end=" ")
(或交换i
和j
循环,具体取决于要为每个内循环和外循环使用的循环变量)
类似地,对于
print\u R
和print\u C
。print\u M
可以,因为它是方形的。您已经切换了下标。字母弧都是5x7字符映射,但打印循环是:
for i in range(7):
...
for j in range(5):
print(print_A[i][j], end=" ")
print(end=" ")
如果值超过4,则不能运行i
,因为该维度只有5长
以循环范围或下标顺序切换
i
和j
。请提供预期的值。显示中间结果与您预期的不同之处。不需要转储50行代码来说明您的问题。还要注意,您发布的代码无法运行;请验证它是否真的重现了问题。哦,好的,我很抱歉,请更正缩进
for i in range(5):
for j in range(7):
print(print_A[i][j], end=" ")
for i in range(7):
...
for j in range(5):
print(print_A[i][j], end=" ")
print(end=" ")