Question de débutant: renvoyant une valeur booléenne à partir d'une fonction en Python
Je vais essayer d'obtenir cette roche papier ciseaux jeu soit de renvoyer une valeur Booléenne, comme dans le jeu de player_wins
True ou False selon si le joueur gagne, ou de revoir ce code entièrement, afin de ne pas utiliser une boucle while.
Je suis en provenance du sysadmin côté du monde, de sorte s'il vous plaît être doux si c'est écrit dans le mauvais style.
J'ai essayé quelques petites choses, et je comprends TIMTOWTDI, et voudrais juste une entrée.
Grâce.
import random
global player_wins
player_wins=None
def rps():
player_score = 0
cpu_score = 0
while player_score < 3 and cpu_score < 3:
WEAPONS = 'Rock', 'Paper', 'Scissors'
for i in range(0, 3):
print "%d %s" % (i + 1, WEAPONS[i])
player = int(input ("Choose from 1-3: ")) - 1
cpu = random.choice(range(0, 3))
print "%s vs %s" % (WEAPONS[player], WEAPONS[cpu])
if cpu != player:
if (player - cpu) % 3 < (cpu - player) % 3:
player_score += 1
print "Player wins %d games\n" % player_score
else:
cpu_score += 1
print "CPU wins %d games\n" % cpu_score
else:
print "tie!\n"
rps()
Je suis en train de faire quelque chose comme ceci:
print "%s vs %s" % (WEAPONS[player], WEAPONS[cpu])
if cpu != player:
if (player - cpu) % 3 < (cpu - player) % 3:
player_score += 1
print "Player wins %d games\n" % player_score
if player_score == 3:
return player_wins==True
else:
cpu_score += 1
print "CPU wins %d games\n" % cpu_score
if cpu_score == 3:
return player_wins==False
else:
print "tie!\n"
Quelle valeur booléenne doit être retourné pour une cravate?
Parce que c'est à l'intérieur d'une boucle while, liens juste dump vous de retour au début. Le match retour!
Je le prends, ce n'est pas un bon projet d'acquérir une bonne compréhension de la programmation?
matt, essayez de faire des projets qui vous font réfléchir davantage sur le processus. Essayez les problèmes au Projet Euler (projecteuler.net) à la place.
"Je comprends que TIMTOWTDI" - vous devez être déroutant, Python, Perl 😉 "Il devrait y avoir un, et de préférence seulement une façon évidente de le faire. Bien que cette façon peut-être pas évident à première vue, sauf si vous êtes en néerlandais." (PEP 20 aka Le Zen De Python) 😉
Parce que c'est à l'intérieur d'une boucle while, liens juste dump vous de retour au début. Le match retour!
Je le prends, ce n'est pas un bon projet d'acquérir une bonne compréhension de la programmation?
matt, essayez de faire des projets qui vous font réfléchir davantage sur le processus. Essayez les problèmes au Projet Euler (projecteuler.net) à la place.
"Je comprends que TIMTOWTDI" - vous devez être déroutant, Python, Perl 😉 "Il devrait y avoir un, et de préférence seulement une façon évidente de le faire. Bien que cette façon peut-être pas évident à première vue, sauf si vous êtes en néerlandais." (PEP 20 aka Le Zen De Python) 😉
OriginalL'auteur matt | 2010-11-12
Vous devez vous connecter pour publier un commentaire.
Ignorant le refactoring des questions, besoin de vous pour comprendre les fonctions et les valeurs de retour. Vous n'avez pas besoin d'un mondial. Jamais. Vous pouvez faire ceci:
Puis, il suffit d'affecter une valeur à la variable en dehors de cette fonction comme suit:
Elle sera affectée la valeur de retour (Vrai ou Faux) de la fonction que vous venez appelé.
D'après les commentaires, j'ai décidé d'ajouter que idiomatique, ce serait mieux exprimé ainsi:
Cette assigne la valeur booléenne de
player_wins
(à l'intérieur de la fonction) pour lepw
variable en dehors de la fonction.Ce code me fait mal au yeux... il devrait être
return player_wins
Bien sûr, Rafe, mais qui ne serait pas aussi clair pour les besoins de l'illustration.
Il serait plus clair pour éliminer
if expression: return True
.Ok, j'ai ajouté le idiomatiques Python. Je pense toujours que c'est moins clair, car il nécessite plus de compréhension de
return
que vous pouvez le supposer à quelqu'un qui ne l'a jamais utilisé.OriginalL'auteur asthasr
Votre essayé d'utiliser le "retour" mot-clé?
OriginalL'auteur Cpt. eMco