2017-04-24 8 views
-2

Ich bin sehr neu in Python und ich habe Schwierigkeiten, meinen Kopf um Funktionen zu wickeln. Ich schrieb das heute und ich kann nicht herausfinden, warum es nicht funktioniert.Einfache Loop-Funktion mit unerwarteter Ausgabe

x = [1,2,3,4,5,6,7,8] 

def test(): 
    y = [] 
    for num in x: 
     if num > 4: 
      y.append(num) 
      return y 

print(test()) 

So, wie ich es verstehe, die for Schleife fahren durch die jedes Element von x, testen, um zu sehen, ob es größer als 4 ist Wenn ja, dann sollte dieses Element in der leeren Liste hinzugefügt werden, y . Die erwartete Ausgabe sollte daher sein:

[5,6,7,8] 

Aber was ich bin immer nur dies: [5],

darauf hinweist, dass die for Schleife ist nicht ... na ja, Looping. Es weist [1,2,3,4] für nicht größer als 4 zurück. Das ist in Ordnung. Es erkennt, dass 5 größer als 4 ist und addiert es zu y. Das ist auch in Ordnung. Aber dann hört es einfach auf ... hört auf. Wie ich es verstehe, sollte die Funktion 6, 7 und 8 zu y auch hinzufügen, weil sie alle die Kriterien von mehr als 4 passen.

Ich bin total fest. Wenn mir jemand helfen könnte, herauszufinden, warum das passiert, würde ich es sehr schätzen.

+3

Ihre 'Rückkehr y' ist in der' denn es ist die 'für loop' – MooingRawr

+1

Leer Angelegenheiten in Python aus bewegen loop'. Bewegen Sie Ihr 'return y' außerhalb der for-Schleife. –

+0

* Facepalm! * Ah! So offensichtlich. Ich schwöre, ich hätte diesen Fehler nicht gemacht, wenn es kein Montag gewesen wäre! Vielen Dank Leute :-) – Nellington

Antwort

1

Sie stoppen die Ausführung nach dem ersten Anhängen.

Try this:

x = [1,2,3,4,5,6,7,8] 
def test(): 
    y = [] 
    for num in x: 
     if num > 4: 
      y.append(num) 
    return y 

print(test())