la rupture de la boucle while de la fonction?
Je suis en train de faire une fonction qui a un if/elif déclaration en elle, et je veux la si pour briser une boucle while.. La fonction est un jeu d'aventure texte, et est une question oui/non. Voici ce que j'ai jusqu'à présent..
def yn(x, f, g):
if (x) == 'y':
print (f)
break
elif (x) == 'n'
print (g)
name = raw_input('What is your name, adventurer? ')
print 'Nice to meet you, '+name+'. Are you ready for your adventure?'
while True:
ready = raw_input('y/n ')
yn(ready, 'Good, let\'s start our adventure!',
'That is a real shame.. Maybe next time')
Maintenant, je ne suis pas sûr si je suis à l'aide de la fonction à droite, mais quand je l'ai essayer, on me dit que je ne peut pas avoir de rupture dans la fonction. Donc si quelqu'un pouvait m'aider avec ce problème, et si vous pouviez m'aider si la fonction et l'appel de la fonction elle-même est mal formaté, ce serait très apprécié.
Entendez-vous d'avoir les lignes au sein de la fonction en retrait?
J'ai mis à jour mon explication, n'hésitez pas à fouiner moi si vous avez d'autres questions.
J'ai mis à jour mon explication, n'hésitez pas à fouiner moi si vous avez d'autres questions.
OriginalL'auteur Ryan Hosford | 2013-04-18
Vous devez vous connecter pour publier un commentaire.
Vous pouvez travailler avec une exception:
Cette boucle de la
while
en boucle, mais à l'intérieur de layn()
fonction une exception est levée, ce qui rompt la boucle. Afin de ne pas imprimer un traceback, l'exception doit être capturés et transformés.n
. Je suppose qu'il veut dans le jeu pour continuer après l'entréey
.OriginalL'auteur glglgl
Vous aurez besoin de changer la pause à l'intérieur de votre fonction pour un retour, et vous devez avoir une
else
déclaration dans le cas où l'utilisateur n'a pas vous fournir la bonne entrée. Enfin, vous devez activer l'appel dans votrewhile loop
dans une instruction if.Cela vous permettra de briser l'instruction while si le joueur entre dans la commande désirée, si non il va demander à nouveau. J'ai aussi mis à jour votre
yn
fonction de permettre à l'utilisateur d'utiliser les minuscules et majuscules, ainsi que le oui et le non.L'idée derrière cela est assez simple. Le
yn
fonction a trois états. L'utilisateur a répondu par oui, non ou non valide. Si la réponse de l'utilisateur est soit oui ou non, la fonction retourne 1 pour oui et 2 pour non. Et si l'utilisateur ne fournit pas d'entrée valide, par exemple, un vide de l'espace , il sera de retour 0.À l'intérieur de la
while True:
boucle de nous envelopper le yn('....', '....') fonction avec unif statement
qui vérifie si leyn
fonction retourne un nombre plus grand que 0. Parce queyn
renvoie 0 si l'utilisateur nous fournit une entrée valide, et 1 ou 2 pour les entrées valides.Une fois que nous avons une réponse valide à partir de
yn
nous appelons pause, qui arrête lewhile loop
et nous avons fini.yn()
retourner un booléen comme valeur...J'ai dit à Ryan que je lui donnerait une réponse quand je me suis réveillé. Je garde mes promesses, et je ne la traiter différemment, par l'ajout d'une
else
déclaration et de le rendre insensible à la casse. stackoverflow.com/questions/16071394/...ah, le
else
partie est en effet quelque chose de très bon.OriginalL'auteur eandersson
Vous avez besoin de sortir de la boucle while dans la boucle elle-même, et non dans une autre fonction.
Quelque chose comme ce qui suit pourrait être plus proche de ce que vous voulez:
Moore, Vous devrez probablement changer à
return True
etreturn False
pour améliorer la lisibilité.OriginalL'auteur Duane Moore
Une approche possible serait d'avoir
yn
renvoyer une valeur booléenne qui serait ensuite utilisé pour sortir de la boucle. Sinon unbreak
dans une fonction ne peut pas sortir d'une boucle dans la fonction appelante.OriginalL'auteur Ed Plese
À l'aide de pause , vous pouvez sortir de la boucle, même si la condition pour la fin de la boucle n'est pas remplie. Vous ne pouvez pas avoir de pause parce que 'if /elif" n'est pas une boucle, c'est juste une instruction conditionnelle.
OriginalL'auteur dharag
Il se casse la boucle while de l'instruction if si elle est appelée à l'intérieur de la boucle while.
OriginalL'auteur John H