控制台网格打印不正确

2024-10-02 16:20:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我用python做了一个网格,可以打印出来。 它可以正确地显示序列或列和行。但是,当我想更改网格中的某个元素时,它似乎会将其添加到列表中,而不是替换所需的索引。 代码如下:

empty = "X"
wall = "O"

rows = 20
columns = 40
grid = ""

def GetIndexFromPosition(x,y):
    index = 0
    for i in range(0,y):
        index += (columns)
    index += x
    print(index)
    return index


for i in range(0,rows):
    row = ""
    for i in range(0,columns):
        row += empty
    grid += """
""" + row

l = list(grid)

l[GetIndexFromPosition(0,0)] = wall

grid = "".join(l)
print(grid)

网格应该保持在40×20的屏幕上,而不是我更改的21个单位长的行


Tags: columnsin网格元素forindexrange序列
2条回答

我怀疑它是在添加一个新元素而不是替换,并将所有内容移动一个索引。要解决这个问题,只需删除元素,然后添加新元素,即del l[GetIndexFromPosition(0,0)]

代码:

empty = "X"
wall = "O"

rows = 20
columns = 40
grid = ""

def GetIndexFromPosition(x,y):
    index = 0
    for i in range(0,y):
        index += (columns)
    index += x
    print(index)
    return index


for i in range(0,rows):
    row = ""
    for i in range(0,columns):
        row += empty
    grid += "\n" + row

l = list(grid)

#new code beneath
del l[GetIndexFromPosition(0,0)]

l[GetIndexFromPosition(0,0)] = wall

grid = "".join(l)

print grid

功能:

要使其成为函数:

def replace(list, index, new_val):
    del list[index]
    list[index] = new_val

在您的案例中使用它:

replace(l, GetIndexFromPosition(0,0), wall)

GetIndexFromPosition函数不计算换行符 在网格字符串中插入的元素

修正了换行函数:

def GetIndexFromPosition(x,y):
    index = 1
    for i in range(0,y):
        index += (columns + 1)
    index += x
    print(index)
    return index

相关问题 更多 >