2014-05-21 43 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

相關問題