Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何修复此错误?它表示列表索引超出范围?_Python - Fatal编程技术网

Python 如何修复此错误?它表示列表索引超出范围?

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 = [[

我想知道为什么这个错误不断出现。我尽了最大的努力。我只想用星号打印我的名字。你能帮帮我吗?我是个初学者。 错误是第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()
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)和(00)):
打印(“*”,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="  ")