Erreur dans le jeu de ciseaux à papier de roche avec Python
J'essaye de créer un jeu de ciseaux de papier de roche pour un devoir de classe avec Python, mais je ne peux pas obtenir le résultat.
Le jeu est censé commencer par 1) l'entrée de l'utilisateur, 2) montrer quel ordinateur a choisi au hasard, 3) le résultat (vous gagnez, vous perdez ou égalisez avec la façon dont vous avez gagné ou perdu), 4) puis demandez si vous voulez Jouez à nouveau, et 5) échappez-vous enfin.
J'ai réussi sur les 2 premières parties, mais je ne comprends pas pourquoi 3, 4, 5 n'impriment pas ...
Le résultat après avoir montré ce que l'ordinateur a joué (2), il dit «Aucun» puis il revient à (1) obtenir l'entrée de l'utilisateur.
Ci-dessous le code. Veuillez me conseiller sur la façon de les résoudre. Merci beaucoup!!
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")
Réponses
Votre fonction doit être en dehors de votre boucle while et vous n'avez pas besoin de l'appeler dans une instruction d'impression ...
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