所以这个问题是作为课堂测验的结束而给出的。我没有时间测试它,所以我尝试重新编写和测试。但是由于某些原因它不能按照我想要的方式工作,我不知道为什么。
所以你有一个以列表形式给出的nxn网格。具有作为元组给出的初始起点的机器人。并且机器人将在列表中以“N”,“S”,“E”,“W”的形式行进的路径。
所以输入就像是
make_grid(starting_point, path, size_of_grid)
make_grid((0,0),["S","E","S","S"],4)
输出如
[".","_","_","_"],[".",".","_","_"],["_",".""_""_"],["_",".""_""_"]
其中“。”是机器人的起点和行进路径。 “_”是网格的未被划分的区域。如果它撞到边界,它将保持在完全相同的位置。 我的问题是结果是它将整个列标记为具有句点
的行进路径def check(coord ,size):
if ((coord<0) or (coord>size)):
return True
else:
return False
def make_grid(start, path, size):
n = 0
row = []
while (n < size):
row.append("_")
n += 1
n = 1
grid = [row]
while ( n < size):
grid.append(row)
n +=1
x = start[0]
y = start[1]
grid[x][y] = "."
n = 0
while (n < len(path)):
if (path[n] == "N"):
x -= 1
if (check(x,size)):
x += 1
elif (path[n] == "E"):
y += 1
if (check(y,size)):
y -= 1
elif (path[n] == "S"):
x +=1
if (check(x,size)):
x -=1
elif (path[n] == "W"):
y -=1
if (check(y,size)):
y += 1
grid[x][y] = "."
n += 1
n = 0
while (n < size):
print grid[n]
n += 1
答案 0 :(得分:0)
您对网格中每一行的初始化是将每一行设置为相同的列表。因此,对网格中元素的任何更改都将更改每一行(因为它们都是相同的列表)。您需要将网格的每个元素设置为单独的对象。类似的东西:
grid = []
for i in range(size):
grid.append([])
for j in range(size):
grid[i].append('_')
我确信一位经验丰富的Python程序员可以提供更紧凑的初始化。