在python中交换2D数组中的两个字符?
所以,我是编程新手,这让我很沮丧!我想做的是能够导入一个4x8文本文件,并将文本转换为二维列表,以便可以交换两个字符。例如,如果导入的文本文件如下所示:在python中交换2D数组中的两个字符?,python,2d,swap,Python,2d,Swap,所以,我是编程新手,这让我很沮丧!我想做的是能够导入一个4x8文本文件,并将文本转换为二维列表,以便可以交换两个字符。例如,如果导入的文本文件如下所示: OOOOOOOO OOOXOOOO OOOOOOOO OOOOOOOO 然后,我希望能够在输入用户输入时更改X的位置(行/列位置),以便将O放置在其位置以保留格式。例如,程序将提示用户输入,如果用户输入“up”,那么X将向上移动一个空格 OOOXOOOO OOOOOOOO OOOOOOOO OOOOOOOO 我希望它在每次移动后重复提示进行
OOOOOOOO
OOOXOOOO
OOOOOOOO
OOOOOOOO
然后,我希望能够在输入用户输入时更改X的位置(行/列位置),以便将O放置在其位置以保留格式。例如,程序将提示用户输入,如果用户输入“up”,那么X将向上移动一个空格
OOOXOOOO
OOOOOOOO
OOOOOOOO
OOOOOOOO
我希望它在每次移动后重复提示进行新移动,并每次显示新网格(以便每次输入移动时都可以在新位置看到X)
到目前为止,我只有这些。我知道我需要先找到X,但我真的不知道怎么找到。我被困在这里了。感谢您的帮助
#Global variables for the movements
UP = 8
DOWN = 2
RIGHT = 6
LEFT = 4
#Dimensions of grid
ROWS = 4
COLUMNS = 8
def start():
filename = input("Enter the name of the Start Positions file: ")
textFile = open(filename)
aMaze = [line.strip() for line in textFile]
for r in range(ROWS):
for c in range(COLUMNS):
print(aMaze[r][c], end="")
print()
def moveType():
while (True):
try:
move = input("ENTER YOUR MOVE: ")
except ValueError:
print("unimportant error message")
continue
if ((int(move)) in (DOWN, LEFT, RIGHT, UP)):
playerMove(move)
continue
else:
print("unimportant error message")
continue
return(move)
def playerMove(move):
move = (int(move))
if (move == DOWN):
#need help here
elif (move == UP):
#and here
elif (move == LEFT):
#don't know what i'm doing
elif (move == RIGHT):
#also here
start()
moveType()
这是学习抽象的绝佳机会。要解决您的问题,请考虑您可以(使用函数)解决的子问题,这些子问题将使您的最终问题变得更容易 在您的特定实例中,编写一个程序来查找X所在位置的笛卡尔坐标不是更容易吗?使用(x,y)坐标,您可以创建一个函数,将该坐标(可能存储为元组)转换为二维数组,其中该坐标为x,其他所有坐标均为零 提示1:
x =0
y =0
for row in numrows:
for col in numcols:
if array[row][col] == X
y = row
x = col
提示2:
for row in numrows:
for col in numcols:
if col is x and row is y:
place X
else:
place O
注意:如果这是一个应用程序,您希望检查每一点性能,那么您肯定不需要每次迭代数组来查找X。您可以(而且应该)选择存储X的位置,然后使用两次访问数组来翻转X和O。但鉴于这可能是你正在解决的首要问题之一,这当然不是一个问题
希望这有帮助!祝你好运开始编码 我建议您只需注意上一步并像row一样检查验证,开始位置文件是否总是正好有一个X?如果是这样,不要认为这是一个交换问题。aMaze的大部分内容都是操作系统,所以您不必跟踪它。只需跟踪X的当前位置,比如rowX和colX。playerMove然后根据方向和移动是否可行,递增或递减rowX或colX。