Erro no jogo de tesoura de papel de pedra com Python

Sep 30 2020

Estou tentando criar um jogo de pedra, papel e tesoura para uma tarefa de classe com Python, mas não consigo tirar o resultado.

O jogo deve começar com 1) entrada do usuário, 2) mostrar qual computador escolheu aleatoriamente, 3) o resultado (você venceu, perdeu ou empatou com a forma como ganhou ou perdeu), 4) depois pergunte se deseja Jogue novamente e 5) finalmente escape.

Tive sucesso nas 2 primeiras partes, mas não consigo descobrir por que 3, 4, 5 não está imprimindo ...

O resultado depois de mostrar o que o computador reproduziu (2), ele diz 'Nenhum' e então retorna para (1) obtendo a entrada do usuário.

Abaixo está o código. Por favor, me aconselhe sobre como corrigi-los. Muito obrigado!!

import random
while True : 
     player = input("Enter a number (0 for rock, 1 for paper, 2 for scissors) >>")
     RPS = [0,1,2]
     computer = random.choics(RPS)
     RPS_dict = {0:'Rock', 1:'Paper', 2:'Scissors'}
     print("The computer played", RPC_dict.get(computer))

     def game(player, computer):
          RPS_dict = {0:'Rock', 1:'Paper', 2:'Scissors'}
          if player == computer:
              print("Tie!")
          elif player == 0:
               if computer == 1:
                  print("You lose!", RPS_dict.get(computer), 'covers', RPS_dict.get(player))
               else: 
                  print("You win!", RPS_dict.get(player), 'cut', RPS_dict.get(computer))
          elif player == 1:
             if computer == 2:
                  print("You lose!", RPS_dict.get(computer), 'cut', RPS_dict.get(player))
             else:
                  print("You win!", RPS_dict.get(player), 'covers', RPS_dict.get(computer))
     game(player, computer)
     print(game(player, computer))
again = input("Play again? 0 for no, 1 for yes\n")

Respostas

2 Jay Sep 30 2020 at 02:51

Sua função deve estar fora do seu loop while e você não precisa chamá-la dentro de uma instrução de impressão ...

import random



def game(player, computer):
    if player == computer:
        print('game tied')
    else:
        if (player == 1 and computer == 3) or (player == 2 and computer == 1) or (player == 3 and computer == 2):
            print('you win')
        else:
            print('computer wins')

def choice(x):
    y = None
    if x == 1:
        y = 'rock'
    elif x == 2:
        y = 'paper'
    elif x == 3:
        y = 'scissors'
    return y
               
playing = True
while playing == True:
    player_input = int(input("Enter 1 for rock, 2 for paper, 3 for scissors"))
    print('You chose:'+ choice(player_input))
    computer_input = random.choice([1,2,3])
    print('Computer chose:'+ choice(computer_input))
    game(player_input, computer_input)
    restart = int(input("Enter 1 to play again or 2 to quit"))
    if restart == 2:
        playing = False