индексы списка должны быть целыми числами, а не str. линкор

Следующий код Python:

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" 

Я получаю эту ошибку:

Board[-1][Ships] -= 1 TypeError: строковые индексы должны быть целыми числами, а не str

Как я могу это исправить, любая помощь будет очень признательна


person Community    schedule 31.03.2016    source источник


Ответы (2)


Ships — это строка. Ваш Board содержит строки, поэтому вы пытаетесь получить элемент строки с помощью str, а не с помощью index.

То же самое сказал переводчик:

TypeError: string indices must be integers, not str
person xiº    schedule 31.03.2016
comment
Спасибо за быстрый ответ, я не лучший в python, поэтому я все еще немного запутался. - person ; 31.03.2016
comment
Board в позиции -1 — это строка, а не словарь. Таким образом, вы не можете получить доступ к строке с другой строкой. У вас должно получиться что-то вроде Board[-1] = {'Морской бой': 10, ...}. Вместо этого у вас есть что-то вроде Board[-1] = 'о боже' - person Schore; 31.03.2016

В последней третьей строке вашего кода

Доска[-1][Корабли] -= 1

Чтобы сослаться на элементы в двумерном массиве, т.е. в PYTHON список, содержащий 2 списка, мы используем целочисленные значения в качестве индекса.

Переменная Ships представляет собой String или None, если какое-либо из вышеуказанных условий не выполняется, поэтому в любом случае < strong>Ships не является целым числом.

TypeError: string indices must be integers, not str

Итак, вам нужно получить доступ к списку (массивы), используя целые числа.

person Shubham Choudhary    schedule 31.03.2016