Heim >Backend-Entwicklung >Python-Tutorial >Verwendung von else-Anweisungen in Pythons for- und break-Schleifenstrukturen
Normalerweise ist die Verwendung von else-Anweisungen in if-Strukturen eine Selbstverständlichkeit. Der leistungsstarke syntaktische Zucker von Python ermöglicht jedoch die Verwendung der else-Anweisung in for- und while-Schleifen Beispiele. Tipps zur Verwendung von else-Anweisungen in Strukturen
Es kann auch eine else-Klausel nach einer Weile oder einer for-Schleife in Python geben. Die Funktion besteht darin, dass die else-Anweisung dies tut, wenn die Bedingung in der for-Schleife nicht erfüllt ist am Ende ausgeführt werden.
for i in range(5): if i == 1: print 'in for' else: print 'in else' print 'after for-loop' # in for # in else # after for-loop
Aber wir haben festgestellt, dass die if-Bedingung während der Schleife erstellt wurde und der Inhalt in der else-Anweisung schließlich ausgeführt wurde. Warum ist das so?
Okay, schauen wir uns jetzt das folgende Programm an:
for i in range(5): if i == 1: print 'in for' break else: print 'in else' print 'after for-loop' # in for # after for-loop
Wir haben eine Pause in „if, this is Because else is“ eingefügt wird nach for ausgeführt, aber die else-Anweisung wird nur ausgeführt, wenn die for-Schleife normal beendet wird (die Schleife wird nicht durch break beendet). Wenn die Schleife durch eine break-Anweisung unterbrochen wird, wird else nicht ausgeführt.
for/else entspricht dem folgenden Code. Sie können ein Flag ähnlich der C-Sprache hinzufügen:
found = False for i in range(5): if i == 1: found = True print 'in for' if not found: print 'not found' print 'after for-loop' # in for # after for-loop
und for-Anweisung Ebenso ist die Verwendung der else-Klausel in der while-Anweisung dieselbe. Der else-Block wird ausgeführt, wenn die Schleife normal endet und die Schleifenbedingung nicht erfüllt ist.
Wir sind bereits mit der bedingten Anweisung if-else vertraut, aber in Python wird for-else zur Behandlung von Durchlauffehlern verwendet.
Zum Beispiel möchten wir eine solche Funktion implementieren: Finden Sie die größte perfekte Quadratzahl in (81, 99) und geben Sie sie aus. Wenn sie nicht gefunden werden kann, geben Sie eine Eingabeaufforderung aus.
Bei Implementierung mit einer C++-for-Schleife müssen Sie manuell bestimmen, ob der For-Schleifendurchlauf fehlschlägt:
#include <iostream> #include<math.h> using namespace std; int main() { int i; float n; for(i=99;i>81;i--) { n=sqrt((float)i); if(n==int(n)) { cout<<i; break; } } if(i==81) //边界判断 cout<<"didn't find it!"<<endl; return 0; }
Diese Funktion kann einfach mit Pythons for-else implementiert werden:
from math import sqrt for n in range(99,81,-1): root = sqrt(n) if root == int(root): print n break else: print"Didn't find it!"
Führen Sie else erst aus, nachdem die for-Schleife vollständig abgeschlossen ist. Wenn es aus der Pause in der Mitte herausspringt, springt es zusammen mit anderen heraus.
Was besondere Aufmerksamkeit erfordert, ist, dass, wenn es eine if-Anweisung in for gibt, die Einrückung von else mit for ausgerichtet werden muss. Wenn es mit if ausgerichtet ist, wird es zu einer if-else-Anweisung, die erzeugt wird unerwartete Fehler wie folgt:
from math import sqrt for n in range(99,81,-1): root = sqrt(n) if root == int(root): print n break else: print"Didn't find it!"
Obwohl die Verwendung von for-else zwei Codezeilen spart und das Lesen erleichtert, kann es leicht zu Verwechslungen kommen wenn-sonst. Es scheint, dass es in der Praxis nicht häufig verwendet wird, sondern eher manuell gehandhabt wird.
Weitere Artikel zur Verwendung von else-Anweisungen in Pythons for- und break-Schleifenstrukturen finden Sie auf der chinesischen PHP-Website!