Первая проблема заключается в том, что вы делаете неправильный выбор для компьютера. Списки в Python, как массивы в подавляющем большинстве языков программирования, начинаются с 0. В вашем случае вы генерируете число в диапазоне от 1 до 3, то есть оно никогда не получит первый элемент t
и потерпит неудачу, когдачисло равно 3, поскольку список заканчивается на 2.
. Для этой части вы можете сгенерировать число от 0 до 2 или использовать метод choice()
из модуля random
. Обратите внимание, что вам нужно сначала импортировать его.
Кроме того, я бы предпочел использовать while True
с некоторыми break
с, а не со старомодной переменной состояния. Вот рабочая версия вашего кода, сделанная таким же рефакторингом:
from random import choice
#create a list of play options
t = ["Rock", "Paper", "Scissors"]
while True:
computer = choice(t)
player = input("Rock, Paper, Scissors?")
if player == computer:
print("Tie!")
elif player == "Rock":
if computer == "Paper":
print("You lose!", computer, "covers", player)
else:
print("You win!", player, "smashes", computer)
break
elif player == "Paper":
if computer == "Scissors":
print("You lose!", computer, "cut", player)
else:
print("You win!", player, "covers", computer)
break
elif player == "Scissors":
if computer == "Rock":
print("You lose...", computer, "smashes", player)
else:
print("You win!", player, "cut", computer)
break
else:
print("That's not a valid play. Check your spelling!")