我在下面的任务中遇到了一些问题:用户输入一些单元格,如“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 3
index=5,单元格为`,但在最后for
中,坐标为3 3
的元素被替换,而不是坐标为2 3
的元素。我需要用用户输入的坐标替换元素
我会保持简单,并在这里使用基本的字符串操作:
这张照片是:
看起来在上一个else语句中,需要再次枚举矩阵。这对我有用
相关问题 更多 >
编程相关推荐