Ihre Einrückung ist ein bisschen ausgebrochen (Einzug in Python ist ziemlich wichtig). Besser:
%Vor%Eine kürzere und schnellere Lösung mit Generatorausdrücken :
%Vor%Wie die anderen schon sagten, haben Sie ein semantisches Problem in Ihrer Einrückung, aber Sie müssen keine solche Funktion schreiben, um dies zu tun, eine pythischere Art das zu tun ist:
%Vor%Über den Dolmetscher:
%Vor%Teste die Dinge immer selbst, wenn Leute "schnellere" Methoden zeigen:
%Vor% Das liegt daran, dass Ihre return
-Anweisung innerhalb der for-Schleife liegt, also nach der ersten wahren if
-Kondition zurückkehrt und stoppt.
Ihr Code war fast in Ordnung, außer die return
Anweisung musste auf die Ebene Ihres for
-loop verschoben werden.
so, jetzt:
%Vor%ergibt:
%Vor%Erklärung :
Zuvor gab Ihre Funktion nur die erste Ziffer zurück, weil bei der Suche die if
-Anweisung ausgeführt wurde, ebenso wie die return
(wodurch Sie von der Funktion zurückkommen, die Sie gemeint hat) nicht weiter durch die string).
Whitespace / Einrückung wirklich zählt in Python, wie Sie sehen können (im Gegensatz zu vielen anderen Sprachen).
Natürlich gibt es nur die erste Ziffer zurück, Sie sagen Python ausdrücklich, dass es zurückkehrt, sobald Sie eine Ziffer haben.
Ändern Sie den Einzug der return
-Anweisung und es sollte funktionieren:
es gibt ein Einrückungsproblem, das zurückkommt, wenn es die erste Ziffer findet, wie bei der aktuellen Einrückung, wird es als eine Anweisung in if
Anweisung interpretiert,
Es muss parallel zur for
-Anweisung stehen
außerhalb von for
statement berücksichtigt werden.
Eine geschweifte Klammer, die Ihrem falschen Code entspricht, lautet:
%Vor% Und wenn der Code korrigiert wird, um die return-Anweisung in Ausrichtung mit for
zu verschieben, lautet das Äquivalent:
Tags und Links python