Python - finde Ziffern in einem String

7
%Vor%

Oben ist der Code, den ich verwendet habe, und das Problem ist, dass es nur die erste Ziffer der Strings zurückgibt. Dafür muss ich sowohl die for-Schleife als auch die return-Anweisung beibehalten. Weiß jemand, wie man es repariert?

Danke.

    
Kevvv 17.08.2012, 12:12
quelle

6 Antworten

7

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%     
Benjamin Wohlwend 17.08.2012, 12:16
quelle
18

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%

Ein Ratschlag

Teste die Dinge immer selbst, wenn Leute "schnellere" Methoden zeigen:

%Vor%     
Tarantula 17.08.2012 12:19
quelle
3

Das liegt daran, dass Ihre return -Anweisung innerhalb der for-Schleife liegt, also nach der ersten wahren if -Kondition zurückkehrt und stoppt.

%Vor%     
Ashwini Chaudhary 17.08.2012 12:15
quelle
2

Ihr Code war fast in Ordnung, außer die return Anweisung musste auf die Ebene Ihres for -loop verschoben werden.

%Vor%

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).

    
Levon 17.08.2012 12:15
quelle
1

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:

%Vor%     
Some programmer dude 17.08.2012 12:16
quelle
1

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.

%Vor%

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:

%Vor%     
DhruvPathak 17.08.2012 12:15
quelle

Tags und Links