2016-03-31 19 views
1

Der folgende Python-Code:Listenindizes müssen ganze Zahlen sein, nicht str. BATTLESHIP

def CheckIfSunk(Board): 
    Row, Column = GetRowColumn() 

    if Board[Row][Column] == "A": 
    Ships = "Aircraft Carrier" 
    elif Board[Row][Column] == "B": 
    Ships = "Battleship" 
    elif Board[Row][Column] == "S": 
    Ships = "Submarine" 
    elif Board[Row][Column] == "D": 
    Ships = "Destroyer" 
    elif Board[Row][Column] == "P": 
    Ships = "Patrol Boat" 
    elif Board[Row][Column] == "P": 
    Ships = "Patrol Boat" 
    elif Board[Row][Column] == "N": 
    Ships = "NEW" 


    Board[-1][Ships] -= 1 
    if Board[-1][Ships] == 0: 
    print Ships + " Sunk" 

erhalte ich diesen Fehler:

Board[-1][Ships] -= 1 TypeError: string indices must be integers, not str

Wie ich dieses Problem beheben kann, wäre jede Hilfe sehr

Antwort

0

Ships geschätzt werden ist eine Zeichenfolge. Ihre Board enthält Zeichenfolgen, so dass Sie versuchen, Element der Zeichenfolge von str nicht von index zu erhalten.

Interpreter sagte genau das gleiche:

TypeError: string indices must be integers, not str 
+0

Danke für die schnelle Antwort, im nicht die besten in Python so im immer noch ein wenig verwirrt –

+0

Brett in Position -1 ist eine Zeichenfolge, kein Diktat. Sie können also nicht auf die Zeichenfolge mit einer anderen Zeichenfolge zugreifen. Du solltest etwas wie Board [-1] = {'Battleship': 10, ...} haben. Stattdessen haben Sie etwas wie Board [-1] = "oh my" – Schore

0

Im letzten dritten Zeile des Codes

Board [-1] [Schiffe] - = 1

To refer the elements in 2-dimensional array i.e in PYTHON a list containing 2 lists we use integer values as index.

Die Variable Schiffe ist ein Stringoderkeine wenn eine der oben genannten Bedingungen nicht erfüllt sind, also entweder Schiffe ist keine ganze Zahl.

 
TypeError: string indices must be integers, not str 

So sehen Sie die Liste zugreifen müssen (Arrays) mit ganzen Zahlen

Verwandte Themen