Comment puis-je arrêter une boucle While?
J'ai écrit un while loop
dans une fonction, mais vous ne savez pas comment l'arrêter. Quand il ne répond pas à son état final, la boucle juste aller pour toujours. Comment puis-je l'arrêter?
def determine_period(universe_array):
period=0
tmp=universe_array
while True:
tmp=apply_rules(tmp)#aplly_rules is a another function
period+=1
if numpy.array_equal(tmp,universe_array) is True:
break #i want the loop to stop and return 0 if the
#period is bigger than 12
if period>12: #i wrote this line to stop it..but seems it
#doesnt work....help..
return 0
else:
return period
le problème est dans votre question. "quand il ne marche pas répondre à leur état final..". Vous n'êtes pas de test pour une dernière condition, vous dites "while true:". Vrai sera toujours Vrai.
merci pour votre commentaire,j'ai à peu près la moitié de connu sur la boucle while..afin de ne pas vraiment savoir comment poser une bonne question..
merci pour votre commentaire,j'ai à peu près la moitié de connu sur la boucle while..afin de ne pas vraiment savoir comment poser une bonne question..
OriginalL'auteur NONEenglisher | 2008-12-15
Vous devez vous connecter pour publier un commentaire.
juste indenter ton code correctement:
Vous devez comprendre que la
break
déclaration dans votre exemple de sortie de la boucle infinie que vous avez créés avecwhile True
. Ainsi, lorsque la condition d'arrêt est Vrai, le programme va fermer la boucle infinie et de continuer à la prochaine retrait du bloc. Depuis il n'y a pas de bloc suivant dans votre code, la fonction se termine et ne rien retourner. J'ai donc résolu votre code en remplaçant lesbreak
déclaration d'unreturn
déclaration.Suivant votre idée d'utiliser une boucle infinie, c'est la meilleure façon de l'écrire:
oui, parce que vous avez eu un autre bug dans votre code: une instruction break qui était de prévenir votre fonction pour retourner quelque chose. Je l'ai enlevé maintenant.
..encore,il retourne toujours 1
mais il retourne toujours 0 maintenant...merci beaucoup de bien~~~u r so nice
ne pas vérifier si quelque chose() est Vrai: Vérification de l'objet direct, comme dans "si numpy.array_equal(tmp,universe_array):"
OriginalL'auteur Mapad
ne marche pas....de retour de mal reslut..toujours retour 13
Joel code de la boucle jusqu'à ce que la période est de 12 que de s'arrêter en boucle et la période de retour... c'est normal... Joel code n'est pas ce que vous voulez
Ce qui est plus proche. Et oui, je ne l'attends à penser par lui-même quelques-unes.
Joel Coehoorn ,Merci beaucoup:)
OriginalL'auteur Joel Coehoorn
La
is
opérateur en Python ne fait pas probablement ce que vous attendez. Au lieu de cela:Je voudrais écrire comme ceci:
La
is
, l'opérateur vérifie l'identité de l'objet, qui est quelque chose de tout à fait différent de l'égalité.OriginalL'auteur Greg Hewgill
Je voudrais le faire en utilisant une boucle for comme indiqué ci-dessous :
OriginalL'auteur Suraj