Ошибка конкатенации строк
Я новичок в питоне. Я написал игру морской бой, но в изменении массива происходит ошибка Код:
import random
userField = ["~", "~", "~", "~", "~"]
compField = ["~", "~", "~", "~", "~"]
compShip = random.randint(1, 5)
print("Ваше поле")
print(userField)
userShip = int(input("Поставьте корабль "))
userField[userShip] = "♥"
print("Ваше поле")
print(userField)
compShot = 0
userShot = 0
while compShot != userShot or userShot != compShip:
print("Поле компа" + "\n" + str(compField))
userShot = input("Стреляй ")
if userShot == compShip:
print("Победа!!!")
compField[userShot] = "X"
print("Поле бота " + "\n" + str(compField))
break
else:
print("Мимо!")
compField[str(userShot)] = "*"
print("Поле бота " + "\n" + str(compField))
print("Выстрел бота")
print("Мое поле " + "\n" + str(userField))
compShot = random.randint(1, 5)
while userField[compShot] == "*":
compShot = random.randint(1, 5)
if compShot == userShip:
userField[compShot] = "X"
print(str(userField))
print("Ты проиграл!")
break
else:
userField[compShot] = "*"
print(str(compField))
print("Бот промахнулся")
Ошибка:
Traceback (most recent call last):
File "C:/Users/Admin/PycharmProjects/Projects/WorldWar.py", line 30, in <module>
compField[str(userShot)] = "*"
TypeError: list indices must be integers or slices, not str
Буду очень благодарен за любую помощь
Ответы (1 шт):
Автор решения: Evgeniy
→ Ссылка
В ошибке же ответ: индексы списка должны быть целыми числами(integers) или слайсами(slice), но не строками(str)
В строке 30 у вас compField[str(userShot)] = "*", а должно быть compField[int(userShot)] = "*"