Это не срезы, которые идут не так, это конструкция строки. Вы должны отступить блок else:
немного больше. Для справки попробуйте print()
-ing x
перед вводом команды.
Что произошло
Петли Python for
могут иметь предложение else:
. Они выполняются, если цикл не завершается break
или return
. Следовательно, ваш цикл только что-то делал на первой итерации, в то время как x был пустой строкой, а затем предложение else изменило бы вашу строку на option
, все еще привязанный к последней итерации вашего цикла.
Edit
Возможно, я немного привык к Code Review, но я бы посоветовал сделать конструкцию иначе, примерно так:
player_move = input(f"Choose {', '.join(options[:-1])} or {options[-1]}")
Обратите внимание, что это будет толькоработать на 3+ длины для вариантов. Чтобы получить подходящую нить для меньшего количества вариантов, требуется более ... элегантная конструкция.