Die Definition der continue
Aussage lautet:
Die
continue
Anweisung wird mit der nächsten Iteration der Schleife fortgesetzt.
Ich kann keine guten Beispiele für Code finden.
Könnte jemand einige einfache Fälle vorschlagen, in denen dies continue
notwendig ist?
continue
tut, aber es ist nicht übermäßig nützlich, wenn Sie tun könntenif letter != 'D': print 'Current Letter:', letter
Ich verwende Continue gerne in Loops, in denen viele Bedingungen zu erfüllen sind, bevor Sie "zur Sache" kommen. Also anstelle von Code wie diesem:
Ich bekomme folgenden Code:
Auf diese Weise vermeide ich sehr tief verschachtelten Code. Es ist auch einfach, die Schleife zu optimieren, indem zuerst die am häufigsten auftretenden Fälle eliminiert werden, so dass ich mich nur mit den seltenen, aber wichtigen Fällen befassen muss (z. B. Divisor ist 0), wenn es keinen anderen Showstopper gibt.
quelle
continue
auf diese Weise ähnelt der VerwendungGOTO
. Dies ist jedoch der richtige WegGOTO
.Normalerweise ist die Situation, in der fortfahren notwendig / nützlich ist, wenn Sie den verbleibenden Code in der Schleife überspringen und die Iteration fortsetzen möchten.
Ich glaube nicht wirklich, dass es notwendig ist, da Sie immer if-Anweisungen verwenden können, um dieselbe Logik bereitzustellen, aber es könnte nützlich sein, die Lesbarkeit von Code zu verbessern.
quelle
if <condition>: continue
eher verwendet alsif not <condition>: ...
vermieden wird.continue
Anweisung verwenden, im Wesentlichen aus einem Abschnitt mit bedingten Tests herausspringen und die Iteration der Schleife fortsetzen können zur nächsten Iteration? Mir ist nicht klar, wie das besser wäre als zu benutzenelse
. Geht es nur um verbesserte Lesbarkeit und Laufzeitleistung?continue ist eine äußerst wichtige Kontrollanweisung. Der obige Code zeigt eine typische Anwendung an, bei der das Ergebnis einer Division durch Null vermieden werden kann. Ich benutze es oft, wenn ich die Ausgabe von Programmen speichern muss, aber ich möchte die Ausgabe nicht speichern, wenn das Programm abgestürzt ist. Um das obige Beispiel zu testen, ersetzen Sie die letzte Anweisung durch print 1 / float (x). Andernfalls erhalten Sie Nullen, wenn ein Bruch vorhanden ist, da randint eine Ganzzahl zurückgibt. Ich habe es aus Gründen der Klarheit weggelassen.
quelle
Einige Leute haben sich zur Lesbarkeit geäußert und gesagt: "Oh, das hilft der Lesbarkeit nicht so sehr, wen interessiert das?"
Angenommen, Sie benötigen eine Überprüfung vor dem Hauptcode:
Beachten Sie, dass Sie dies tun können, nachdem der Hauptcode geschrieben wurde, ohne diesen Code trotzdem zu ändern. Wenn Sie den Code unterscheiden, wird nur die hinzugefügte Zeile mit "Weiter" hervorgehoben, da keine Abstandsänderungen am Hauptcode vorgenommen werden.
Stellen Sie sich vor, Sie müssen einen Breakfix des Produktionscodes erstellen, der sich einfach als Hinzufügen einer Zeile mit continue herausstellt. Es ist leicht zu erkennen, dass dies die einzige Änderung ist, wenn Sie den Code überprüfen. Wenn Sie den Hauptcode in if / else einschließen, hebt diff den neu eingerückten Code hervor, es sei denn, Sie ignorieren Abstandsänderungen, was insbesondere in Python gefährlich ist. Ich denke, wenn Sie nicht in der Situation waren, in der Sie kurzfristig Code einführen müssen, werden Sie dies möglicherweise nicht vollständig zu schätzen wissen.
quelle
quelle
continue
Aussage hinzufügen hier? Es könnte durch Verwendung beseitigt werdenelement not in colors
, und der Code wäre genauso lesbar.Angenommen, wir möchten alle Zahlen drucken, die keine Vielfachen von 3 und 5 sind
quelle
if x %3 == 0 or x % 5 == 0:
,pass
,else:
,print x
continue
. Mein Fazit ist, dass es nie einen Bedarf gibt , aber in einigen Fällen (wie diesem) ist der Code mit besser lesbarcontinue
. Es ist ein sehr gutes Beispiel.Dies ist nicht unbedingt erforderlich, da es mit IFs durchgeführt werden kann, aber es ist besser lesbar und zur Laufzeit auch kostengünstiger.
Ich benutze es, um eine Iteration in einer Schleife zu überspringen, wenn die Daten einige Anforderungen nicht erfüllen:
Ausgabe:
Wie Sie sehen können, hat es der falsche Wert nach der
continue
Anweisung nicht geschafft.quelle
if
kann nur tun, wascontinue
passiert, wenn der gesamte Code in einem Block enthalten ist.continue
Überspringt Code, der sich sogar außerhalb desif
Blocks befindet.Zum Beispiel, wenn Sie je nach Wert einer Variablen verschiedene Dinge tun möchten:
Wenn ich im obigen Beispiel
break
den Interpreter verwende, wird die Schleife übersprungen. Damit werdencontinue
jedoch nur die if-elif-Anweisungen übersprungen und direkt zum nächsten Element der Schleife gewechselt.quelle
my_var
von0
.continue
.elif
sollte ein seinif
. Der Code sieht einfach nicht so aus, als ob Sie wissen, was Sie tun.continue
Überspringt einfach den Rest des Codes in der Schleife bis zur nächsten Iterationquelle