向不适用于m的列表添加新坐标

2024-10-08 22:30:02 发布

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

我正试图让这段代码正常工作,用这段代码我得到以下错误:

  File "E:\Snacks.py", line 93, in runGame
    obsCoords.insert(0, newobs)
AttributeError: 'dict' object has no attribute 'insert'

这是因为我在列表后面设置了一个位置:

obsCoords = []
obscoords = getRandomLocation()

if (event.key == K_q) and len(wormCoords) >= 4:
    del wormCoords[-1]  
    obsCoords['x'] = wormBody['x']
    obsCoords['y'] = wormBody['y']
    newobs = {'x': obsCoords['x'], 'y': obsCoords['y']}
    obsCoords.insert(0, newobs)

if wormCoords[HEAD]['x'] == obsCoords['x'] and wormCoords[HEAD]['y'] == obsCoords['y']:
            return

所以我把它去掉:

obsCoords = []

if (event.key == K_q) and len(wormCoords) >= 4:
    del wormCoords[-1]  
    obsCoords['x'] = wormBody['x']
    obsCoords['y'] = wormBody['y']
    newobs = {'x': obsCoords['x'], 'y': obsCoords['y']}
    obsCoords.insert(0, newobs)

if wormCoords[HEAD]['x'] == obsCoords['x'] and wormCoords[HEAD]['y'] == obsCoords['y']:
            return

最后出现这样的错误:

TypeError: list indices must be integers, not str

我只想在列表中添加新的位置。有人能帮我吗?你知道吗


Tags: andkey代码event列表lenif错误
1条回答
网友
1楼 · 发布于 2024-10-08 22:30:02

在第一个代码中,有两个错误:

obsCoords = []
obscoords = getRandomLocation()

第一个是你实际上在声明两个看起来很相似的变量。虽然我觉得是打字错误…这让我犯了第二个错误:

obsCoords = []
obsCoords = getRandomLocation()

这里您正在创建一个列表obsCoords,您正在用getRandomLocation()的结果覆盖它,不管它是什么,它可能不是您想要的。你知道吗

在第二个代码中,您正在执行:

obsCoords = []
…
newobs = {'x': obsCoords['x'], 'y': obsCoords['y']}
obsCoords.insert(0, newobs)
…
obsCoords['x']

那代码根本没有意义!你知道吗

你正在创建一个列表obsCoords,然后你通过访问obsCoords来创建newobs,就像一个字典一样获取xy。然后你想把它像一个列表一样插入obsCoords,最后尝试从obsCoords得到x值,就像一个dict:

obsCoords = []               #     obsCoords -> []
obsCoords['x']               #     obsCoords is an empty list.
obsCoords['y']               #     for this to work it should be : {'x': …, 'y': …}
                             #     suppose it did not fail, here's what's next:
obsCoords.insert(0, newobs)  #     obsCoords -> [{'x': …, 'y': …}]
obsCoords['x']               #     again you're accessing like a dict!

你想要什么?obsCoords是列表还是词典?!你知道吗

相关问题 更多 >

    热门问题