我正在创建一个战舰游戏,这部分代码的方向是:
编写一个函数addShips(grid, numShips)
,该函数循环直到将numShips
ships添加到网格。对于循环中的每一次,它都应该使用createShip()
创建一个ship,然后在给定的网格上为该ship创建checkShip
。如果返回的not_clear
列表为空,则可以放置装运
到目前为止,我的职能是:
def addShips(grid, numShips):
createdShips = []
x = 0
while x < numShips:
createdShips.append(x)
x = x + 1
for ship in createdShips:
not_clear = checkShip(grid, ship)
if not not_clear:
for loc in ship:
grid[loc[0]][loc[1]] == 2
return grid
它运行正常,直到到达行not_clear = checkShip(grid, ship)
,然后调用checkShip(grid,ship)
:
def checkShip(grid, ship):
arr = []
for loc in ship:
if grid[loc[0]][loc[1]] != 1:
arr.append(loc)
return arr
我得到:
TypeError: 'int' object is not iterable
在for loc in ship:
行上。函数checkShip(grid, ship)
本身运行良好,但是当我必须从addShips
调用它时,我会得到错误。我能怎么办?有人能帮我修复代码而不是仅仅解释错误的含义吗?(我理解错误,只是不知道如何修复,这是我的问题)
创建的ships是一个填充int的数组(由
createdShips.append(x)
行完成)行
for loc in ship
然后尝试遍历每一个ship,但是如前所述,每一个ship都只是一个数字你不能迭代一个数字,你需要一个列表,哪个船不是
在这句话中
checkShip(grid, ship)
您将传递给函数def checkShip(grid, ship):
,该函数希望迭代for loc in ship:
中的一个数字,这是不可能的在对数据进行迭代时,它应该始终是一种可编辑的数据类型,如列表、数组或字典。在您的情况下,检查的数据类型ship,并根据需要进行转换
相关问题 更多 >
编程相关推荐