Wie kann ich eine while-Schleife stoppen?

Ich schrieb eine while loop in einer Funktion, aber weiß nicht, wie man es stoppt. Wenn es seine endgültige Bedingung nicht erfüllt, geht die Schleife einfach ewig. Wie kann ich es aufhalten?

 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 

  • Beim Ausführen des unten genannten Codes bekomme ich diese 'TypeError: img ist kein numerisches Tupel'
  • Wie benutzt man scrapy.Request, um ein Element von einer anderen Seite in ein Element zu laden
  • Probleme beim Mischen von Fäden / Prozessen in Python
  • Wie man html aus einer URL in Python 3 liest
  • Imitieren eines anderen Benutzers in SoftLayer
  • Python K-bedeutet Clustering auf Dokument
  • Wie konvertiert man eine Dezimalzahl in eine Liste von Bytes in Python
  • Escaping '<' und '>' in xml bei der Verwendung von xml.dom.minidom
  • Python-Unterprozess: Rückruf, wenn cmd beendet wird
  • Rückruf Python aus Fortran
  • Richtig analysieren String mit Zeitzone Informationen
  • Wie mache ich die Textverpackung mit der aktuellen Einrückungsstufe in vim?
  • 4 Solutions collect form web for “Wie kann ich eine while-Schleife stoppen?”

    Geben Sie einfach Ihren Code richtig ein:

     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: return period if period>12: #i wrote this line to stop it..but seems its doesnt work....help.. return 0 else: return period 

    Sie müssen verstehen, dass die break Anweisung in Ihrem Beispiel die Endlosschleife beendet, die Sie mit while True . Wenn also die Pause-Bedingung True ist, beendet das Programm die Endlosschleife und geht weiter zum nächsten eingerückten Block. Da es keinen folgenden Block in deinem Code gibt, endet die Funktion und gibt nichts zurück. Also habe ich deinen Code behoben, indem du die break Anweisung durch eine return Anweisung ersetzt.

    Im Anschluss an Ihre Idee, eine Endlosschleife zu verwenden, ist dies der beste Weg, um es zu schreiben:

     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 if period>12: #i wrote this line to stop it..but seems its doesnt work....help.. period = 0 break return period 
     def determine_period(universe_array): period=0 tmp=universe_array while period<12: tmp=apply_rules(tmp)#aplly_rules is a another function if numpy.array_equal(tmp,universe_array) is True: break period+=1 return period 

    Der Operator in Python macht wahrscheinlich nicht was man erwartet An Stelle von:

      if numpy.array_equal(tmp,universe_array) is True: break 

    Ich würde es so schreiben:

      if numpy.array_equal(tmp,universe_array): break 

    Der Operator prüft die Objektidentität, was ganz anders ist als die Gleichheit.

    Ich würde es mit einer for-Schleife verwenden, wie unten gezeigt:

     def determine_period(universe_array): tmp = universe_array for period in xrange(1, 13): tmp = apply_rules(tmp) if numpy.array_equal(tmp, universe_array): return period return 0 
    Python ist die beste Programmiersprache der Welt.