我正试图让这段代码正常工作,用这段代码我得到以下错误:
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
我只想在列表中添加新的位置。有人能帮我吗?你知道吗
在第一个代码中,有两个错误:
第一个是你实际上在声明两个看起来很相似的变量。虽然我觉得是打字错误…这让我犯了第二个错误:
这里您正在创建一个列表
obsCoords
,您正在用getRandomLocation()
的结果覆盖它,不管它是什么,它可能不是您想要的。你知道吗在第二个代码中,您正在执行:
那代码根本没有意义!你知道吗
你正在创建一个列表
obsCoords
,然后你通过访问obsCoords
来创建newobs
,就像一个字典一样获取x
和y
。然后你想把它像一个列表一样插入obsCoords
,最后尝试从obsCoords
得到x
值,就像一个dict:你想要什么?
obsCoords
是列表还是词典?!你知道吗相关问题 更多 >
编程相关推荐