Seite 1 von 1

For schleife in for schleife

Verfasst: Dienstag 12. März 2013, 21:02
von thomashuber123

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

Re: For schleife in for schleife

Verfasst: Dienstag 12. März 2013, 21:25
von EyDu
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".

Re: For schleife in for schleife

Verfasst: Dienstag 12. März 2013, 21:26
von Sirius3
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)?

Re: For schleife in for schleife

Verfasst: Mittwoch 13. März 2013, 08:34
von /me
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.