2014-05-21 15 views
1

我试图让这个代码工作,并与此代码,我得到这个错误:添加新的坐标不是为我工作列表

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 

我想要做的就是将新位置添加到列表中。任何人都可以帮助我吗?

+0

使用字典而不是列表,请参阅https://docs.python.org/2/tutorial/datastructures.html – jgrgurica

+0

您的代码不清楚。你想做什么?此外,您的代码似乎与生成错误的代码不同。 –

回答

0

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

obsCoords = [] 
obscoords = getRandomLocation() 

第一个是,你实际上声明看起来很像两个不同的变量。虽然我认为这是一个错字......这使我的第二个错误:

obsCoords = [] 
obsCoords = getRandomLocation() 

在这里,你要创建一个列表obsCoords你与getRandomLocation()的结果覆盖,不管它是什么,这可能不是什么你要。

然后在你的第二个代码,你正在做的:

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

的代码没有任何意义可言!

你创建列表obsCoords,那么你通过访问obsCoords像一本字典来获得xy创建newobs。然后你要插入,在obsCoords喜欢它是一个列表,终于设法得到obsCoordsx值像字典:

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是一个列表还是字典?

+0

非常感谢你,我现在明白了 – user3645934

+0

我试图把一个对象放到屏幕上,当字母q被压在蛇的后面时,我需要创建一个坐标列表,以便它们会留在这些地方会因此而变得ob so不安,所以我不确定我知道我想要什么,而且我对自己在做的事情没有太过自信,因为你可以说出来! DEF drawObs(obsCoords): X = obsCoords [ 'X'] * CELLSIZE Y = obsCoords [ 'Y'] * CELLSIZE ObsRect = pygame.Rect(X,Y,CELLSIZE,CELLSIZE) pygame.draw。 rect(DISPLAYSURF,ORANGE,ObsRect) – user3645934

+0

好的,请不要问另一个问题作为对你问的另一个问题的答案的评论。我明白要开始并不容易,但您应该先掌握基本知识。你应该通过python教程来首先了解不同的类型,以及它们如何帮助你做你想做的事情。 – zmo

相关问题