如何返回包含替换字符串元素的列表?python

2024-05-16 22:57:50 发布

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

我在下面的任务中遇到了一些问题:用户输入一些单元格,如“XXXOO\uuuuo”。然后我像这样打印出来(类似于矩阵/电路板):

---------
| X X X |
| O O _ |
| _ O _ |
---------

然后用户输入从1到3的两个坐标,例如2 3。之后,我做了一些检查,如果单元格是“u”,我用“X”替换它,然后用替换的元素再次打印电路板

print("Enter cells:")
cells = input()
print("---------")
print("|", cells[0], cells[1], cells[2], "|")
print("|", cells[3], cells[4], cells[5], "|")
print("|", cells[6], cells[7], cells[8], "|")
print("---------")

while True:
    coord = input("Enter the coordinates:").split()
    strng = "".join(coord)

    is_0_3 = 0
    if strng.isdigit() == True:
        for c in coord:
            if int(c) > 3 or int(c) <= 0:
                is_0_3 = 1
    if strng.isdigit() == True and len("".join(coord)) == 2:
        index = (((int(coord[0]) - 1) * 3) + (int(coord[1]) + 2)) - 3 #turning usser`s coordinates #into list index
        print("index", index)
        mtrx = []
        for y in range(len(cells)):
            mtrx.append(cells[y])
        is_occupied = 0
        for i, cell in enumerate(mtrx):
            if i == index:
                print("i==index", i)
                if mtrx[index] == "X" or mtrx[index] == "O":
                    is_occupied = 1


    if strng.isdigit() == False:
        print("You should enter numbers!")
    elif len("".join(coord)) != 2:
        print("You should enter 2 numbers!")
    elif is_0_3 == 1:
        print("Coordinates should be from 1 to 3!")
    elif is_occupied == 1:
        print("This cell is occupied! Choose another one!")

    else:
        print("ma[i] before", mtrx[index])
        mtrx[i] = mtrx[index].replace("_", "X")
        print(mtrx[i])
        print("i", i)
        new_mtrx = []
        print("---------")
        for i in range(0, 8, 3):
            row = [mtrx[i], mtrx[i + 1], mtrx[i + 2]]
            new_mtrx.append(row)
            print(f"| {mtrx[i]} {mtrx[i + 1]} {mtrx[i + 2]} |")
        print("---------")
        break 

问题是,最后一个i中的else始终为8,并且无论用户输入什么坐标,坐标为3 3的元素始终被替换。我不明白为什么。。。你能解释一下我怎么修吗?对于用户的输入2 3index=5,单元格为`,但在最后for中,坐标为3 3的元素被替换,而不是坐标为2 3的元素。我需要用用户输入的坐标替换元素


Tags: 用户intrue元素forindexifis
2条回答

我会保持简单,并在这里使用基本的字符串操作:

def print_board(inp):
    print("    -")
    lines = re.findall(r'.{3}', inp)
    lines_out = ["| " + x[0] + " " + x[1] + " " + x[2] + " |" for x in lines]
    for line_out in lines_out:
        print(line_out)
    print("    -")

inp = "XXXOO__O_"
print_board(inp)

这张照片是:

    -
| X X X |
| O O _ |
| _ O _ |
    -

看起来在上一个else语句中,需要再次枚举矩阵。这对我有用

else:
        for i, cell in enumerate(mtrx):
            index == i
        print("ma[i] before", mtrx[i])
        mtrx[index] = mtrx[index].replace("_", "X")
        print(mtrx[i])
        print("i", i)
        new_mtrx = []
        print("    -")
        for i in range(0, 8, 3):
            row = [mtrx[i], mtrx[i + 1], mtrx[i + 2]]
            new_mtrx.append(row)
            print(f"| {mtrx[i]} {mtrx[i + 1]} {mtrx[i + 2]} |")
        print("    -")
        break 

相关问题 更多 >