Heim  >  Artikel  >  Backend-Entwicklung  >  Verwendung von else-Anweisungen in Pythons for- und break-Schleifenstrukturen

Verwendung von else-Anweisungen in Pythons for- und break-Schleifenstrukturen

高洛峰
高洛峰Original
2017-03-02 16:09:172756Durchsuche

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&#39;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&#39;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&#39;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!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn