J'essaie d'implémenter une fonction qui prend un entier n et simule n ronds de Rock, Paper, Scissors entre les joueurs Player 1 et Player 2. Le joueur qui gagne le plus de rounds gagne le jeu n-rond, avec des liens possibles. La fonction devrait imprimer le résultat du jeu comme indiqué.Simuler plusieurs tours de roche, de papier et de ciseaux
>>> simul(1)
Player 1
>>> simul(1)
Tie
>>>simul(100)
Player 2
Je pense que je dois aborder cela de façon modulaire. En d'autres termes, j'ai besoin de combiner au moins 2 fonctions, mon problème est que je n'arrive pas à comprendre comment faire cela. Comment puis-je activer le résultat d'une fonction intégrée lors de l'appel de la fonction simul()
?
J'ai donc créé une fonction qui simule le jeu Rock, Paper, Scissors en exécutant la fonction rps(p1, p2)
. Le code est le suivant:
def rps(p1,p2):
#tie
if (p1==p2):
return 0
# player 1 wins
elif p1+p2 in ['PR','RS','SP']:
return -1
else:
return 1
# player 2 wins
C'est où je suis un peu coincé. J'ai besoin d'activer cette fonction lors de l'exécution de la fonction simul()
- comment puis-je faire cela? Ce que j'ai jusqu'ici est le suivant:
def rps(p1,p2):
#tie
if (p1==p2):
return 0
# player 1 wins
elif p1+p2 in ['PR','RS','SP']:
return -1
else:
return 1
# player 2 wins
def choose_rps():
import random
random.choice('RPS')
def simul(n):
p1_wins, p2_wins = 0, 0
for i in range(n):
p1 = choose_rps()
p2 = choose_rps()
result = rps(p1, p2)
if result == -1:
p1_wins += 1
elif result == 1:
p2_wins += 1
if p1_wins > p2_wins:
return 'Player 1'
elif p1_wins == p2_wins:
return 'Tie'
else:
return 'Player 2'
Merci, mais comment puis-je fusionner les deux fonctions Code sage - autrement dit, comment puis-je écrire les fonctions en un seul code? RPS doit être le premier droit? – Snarre
hmm, je gues je n'ai jamais vu une fonction de choix :) – Snarre
@Snarre: Laissez-moi éditer la réponse pour traiter votre première question. Mais vraiment, cela devrait être couvert dans n'importe quel tutoriel ou classe vous avez assez loin pour écrire tout cela ... – abarnert