这是我要解决的问题代码的非常简化的版本。

我试图使用print(x)调试代码。但是我不明白为什么世界上[6,1]会反复添加到攻击坐标。任何帮助将不胜感激其黄金的重量。

obstaclecoordinates=[]
coordinatesofattack=[]
n=5
x=[1,1]
while x not in obstaclecoordinates:
    coordinatesofattack.append(x)
    x[0]+=1
    print(x)
    if x[0]>n:
        break
    else:
        continue
print(coordinatesofattack)


预期的输出:[[1,1],[2,1],[3,1],[4,1],[5,1],[6,1]]

实际输出:[[6,1],[6,1],[6,1],[6,1],[6,1]]

最佳答案

如评论中所述,您一直在修改添加的列表。您需要在while循环中创建一个副本。

obstaclecoordinates=[]
coordinatesofattack=[]
n=5
x=[1,1]
while x not in obstaclecoordinates:
    coordinatesofattack.append(x[:])
    x[0]+=1
    print(x)
    if x[0]>n:
        break
    else:
        continue
print(coordinatesofattack)

10-08 04:52