For schleife in for schleife

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
thomashuber123
User
Beiträge: 1
Registriert: Dienstag 12. März 2013, 20:53

Code: Alles auswählen

for n in range(2, 10):
    for x in range(2, n):
        print (x,n)
Hallo liebe Python Gemeinde.

Ich versteh irgendwie diesen extrem einfachen Code nicht. Ich habe einfach 2 for schleifen und hätte angenommen das er mir in etwa 2,2,3,3,4,4 und so weiter auswirft. Tatsächlich erhalte ich aber 2,3,2,4,3,4,2,5 und verstehe überhaupt nicht wie man darauf kommen soll.

Ich würde mich über die Lösung des Rätsels sehr freun :P
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hallo und willkommen im Forum!

Wenn du einen Programmablauf mal nicht verstehst, dann ist es hilfrich, sich per Hand alle Schritte auf Papier zu verdeutlichen und einfach ein paar mehr Ausgaben einzubauen:
thomashuber123 hat geschrieben:

Code: Alles auswählen

for n in range(2, 10):
    print("n =", n)
    for x in range(2, n):
        print("x =", x)
        print(x,n)
Außerdem solltest du immer die tatsächliche Ausgabe hier ins Forum kopieren (oder ggf. eine Fehlermeldung inklusive des Tracebacks) und nicht irgendwie selber abschreiben und "interpretieren".
Das Leben ist wie ein Tennisball.
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

Hallo thomashuber123,

versuche mal, jede einzelne Zeile Schritt für Schritt durchzugehen und Dir die Fragen zu stellen,
was passiert in dieser Zeile?
welche Werte haben die Variablen?
Entscheidend dabei ist die Frage: was macht range(2,n)? Welche Werte nimmt n an? Und welche x?
Im Python-Interpreter kann man gut einzelne Befehle ausprobieren. Was macht nur eine for Schleife?
Von wo bis wo zählt range(a,b)?
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

thomashuber123 hat geschrieben:Tatsächlich erhalte ich aber 2,3,2,4,3,4,2,5 und verstehe überhaupt nicht wie man darauf kommen soll.
Nimm mal nur die innere Schleife. Den äußeren Wert setzen wir manuell.

Code: Alles auswählen

n = 2
for x in range(2, n):
    print (x, n)
Hier bekommst du jetzt gar keine Ausgabe weil range(2, 2) eine leere Liste (oder unter Python 3 einen Iterator) zurückliefert.

Nächster Schritt:

Code: Alles auswählen

n = 3
for x in range(2, n):
    print (x, n)
range(2, 3) liefert dir nur die 2. Damit bekommst du eine einzige Ausgabe mit x=2 und n=3.

Nächster Schritt:

Code: Alles auswählen

n = 4
for x in range(2, n):
    print (x, n)
range(2, 4) liefert die Werte 2 und 3. Damit bekommst du für den ersten Schleifendurchlauf eine Ausgabe mit x=2 und n=4. Der Durchlauf mit dem zweiten Wert liefert dir x=3 und n=4.

Und so geht es dann weiter.


Wenn du deinen Code gerne bei der Arbeit beobachten möchtest, dann lass ihn mal auf http://www.pythontutor.com/visualize.html laufen.
Antworten