Erro no jogo de tesoura de papel de pedra com Python
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
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