'我对Python很有经验,我非常困惑为什么我得到了一个对象错误,尽管我相当确定我正确地示例化了2D数组。任何见解都非常感谢。
我还想问一下,是否有人知道如何将2D数组中的特定字符替换为另一个字符。
row, col = (10, 10)
playerOneBoard = [[0]*row]*col
playerTwoBoard = [[0]*row]*col
playerOneFound = [["_"]*row]*col
playerTwoFound = [["_"]*row]*col
def placeDestroyer(Player):
if Player == 1:
for a in playerOneBoard:
print(a)
print("\nWhat is the x cooridnate of the destroyer?")
x = int(input(" "))
print("\nWhat is the y coordnate of the destroyer? (Please use integer values)")
y = int(input(" "))
x-= 1
y-= 1
playerOneBoard.insert[x, "D"]
for a in playerOneBoard:
print(a)
enter image description here
程序的目标是在二维数组的指定点插入字母“D”。
1条答案
按热度按时间6kkfgxo01#
对于错误,您只有一个打字错误:错误消息告诉您查看第21行。在第21行,它应该是
insert(x, "D")
而不是insert[x, "D"]
我还想问一下,是否有人知道如何将2D数组中的特定字符替换为另一个字符。
如果我想替换
board[row][column]
处的当前字符,我会这样做:board[row][column] = 'D'
另外,我注意到您有一个非常常见且隐蔽的错误:
playerOneBoard = [[0]*row]*col
不是你想要的。请尝试以下示例:
你会看到你已经改变了2D矩阵的多个地方,这是因为这样做一个2D矩阵不会产生3个不同的行,它只会产生一个由3个相同行组成的矩阵。
您可能会希望改为执行
[[0]*row] for _ in range(col)]
。参见:List of lists changes reflected across sublists unexpectedly