Błąd w grze nożycami do papieru w Pythonie

Sep 30 2020

Próbuję stworzyć grę w papierowe nożyce do zadań klasowych w Pythonie, ale nie mogę uzyskać wyniku.

Gra ma się rozpocząć od 1) wejścia użytkownika, 2) pokazania losowo wybranego komputera, 3) wyniku (wygrywasz, przegrywasz lub remisu z wygraną lub przegraną), 4) następnie zapytaj, czy chcesz Zagraj jeszcze raz i 5) w końcu uciec.

Udało mi się na pierwszych 2 częściach, ale nie mogę zrozumieć, dlaczego 3, 4, 5 nie drukuje ...

Wynik po wyświetleniu tego, co grał komputer (2), mówi „Brak”, a następnie wraca do (1) pobierania danych wejściowych od użytkownika.

Poniżej znajduje się kod. Proszę o poradę, jak je naprawić. Dziękuję bardzo!!

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")

Odpowiedzi

2 Jay Sep 30 2020 at 02:51

Twoja funkcja powinna znajdować się poza twoją pętlą while i nie musisz jej wywoływać w instrukcji print ...

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