如何修复代码中的错误“TypeError:“int”对象不可编辑”?

2024-10-04 01:22:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在创建一个战舰游戏,这部分代码的方向是: 编写一个函数addShips(grid, numShips),该函数循环直到将numShipsships添加到网格。对于循环中的每一次,它都应该使用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调用它时,我会得到错误。我能怎么办?有人能帮我修复代码而不是仅仅解释错误的含义吗?(我理解错误,只是不知道如何修复,这是我的问题)


Tags: 函数代码infor错误notlocgrid
3条回答

创建的ships是一个填充int的数组(由createdShips.append(x)行完成)

for loc in ship然后尝试遍历每一个ship,但是如前所述,每一个ship都只是一个数字

你不能迭代一个数字,你需要一个列表,哪个船不是

在这句话中checkShip(grid, ship)您将传递给函数def checkShip(grid, ship):,该函数希望迭代for loc in ship:中的一个数字,这是不可能的

在对数据进行迭代时,它应该始终是一种可编辑的数据类型,如列表、数组或字典。在您的情况下,检查的数据类型ship,并根据需要进行转换

相关问题 更多 >