Создание цикла while в игре Rock Paper Scissors для Python - PullRequest
0 голосов
/ 07 ноября 2019

Я очень новичок в программировании и ищу помощь в назначении домовладельца. Назначение выглядит следующим образом:

Напишите программу, использующую функции Python по умолчанию, которая позволяет пользователю играть в игру «Камень, Ножницы, бумага» против компьютера. Программа должна работать следующим образом:

  1. Когда программа запускается, генерируется случайное число в диапазоне от 1 до 3. Если число равно 1, то компьютер выбрал рок. Если число равно 2, то компьютер выбрал бумагу, если число равно 3, то компьютер выбрал ножницы.

  2. Пользователь вводит на клавиатуре свой выбор: «камень», «бумага» или «ножницы».

  3. Отображается выбор компьютера.

  4. Победитель выбирается в соответствии со следующими правилами.

Игра должна заканчиваться, когда компьютер или пользователь выиграл один раунд, и продолжаться, когда результат ничья. Любая помощь с благодарностью.

 from random import randint

 #create a list of play options
 t = ["Rock", "Paper", "Scissors"]

 #assign a random play to the computer
 computer = t[randint(1,3)]

 #set player to False
 player = False

 while player == False:
 #set player to True
     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)
     elif player == "Paper":
         if computer == "Scissors":
             print("You lose!", computer, "cut", player)
         else:
             print("You win!", player, "covers", computer)
     elif player == "Scissors":
         if computer == "Rock":
             print("You lose...", computer, "smashes", player)
         else:
             print("You win!", player, "cut", computer)
     else:
         print("That's not a valid play. Check your spelling!")
      #player was set to True, but we want it to be False so the loop continues
     player = False
     computer = t[randint(1,3)]

1 Ответ

2 голосов
/ 07 ноября 2019

Первая проблема заключается в том, что вы делаете неправильный выбор для компьютера. Списки в 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!")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...