Seite 1 von 1

For-Schleife mit mehreren Variablen

Verfasst: Donnerstag 29. Oktober 2020, 14:24
von Accy
Hallo,

ich bin ganz neu im programmieren und habe schon einige Tutorials zu den Basics von Python durch.

Doch jetzt hänge ich vor einer simplen Aufgabe und komme nicht auf das Ergebnis.

Undzwar möchte ich alle Paare von ganzen Zahlen (i,j) mit [ i^2 + j^2 < 10 ] auflisten.

Folgenden Code habe ich bisher geschrieben:

Code: Alles auswählen

for i in range(-100, 100):          # >> 'i' wird in einer for-Schleife ausgeführ in einer Reichweite von -100 bis 100
    m = i**2 + i**2                 # >> 'm' wird berechnet
    if m < 10:                      # >> prüfe ob 'm' kleiner als 10 ist
        print(i)                    # >> falls wahr - gibt die Zahl aus
    continue                        # >> falls falsch - brich hier ab und setze die Schleife fort
print('finish')                     # >> ende der Schleife

Das funktioniert auch ganz gut, allerdings möchte ich mit zwei Variablen rechnen:

Code: Alles auswählen

for i, j in range(-100, 100):       # >> 'i' wird in einer for-Schleife ausgeführ in einer Reichweite von -100 bis 100
    m = i**2 + j**2                 # >> 'm' wird berechnet
    if m < 10:                      # >> prüfe ob 'm' kleiner als 10 ist
        print(i, j)                 # >> falls wahr - gibt die Zahl aus
    continue                        # >> falls falsch - brich hier ab und setze die Schleife fort
print('finish')                     # >> ende der Schleife
Dabei erhalte ich allerdings eine Fehlermeldung

Code: Alles auswählen

Traceback (most recent call last):
  line 12, in <module>
    for i, j in range(-100, 100):       # >> 'i' wird in einer for-Schleife ausgeführ in einer Reichweite von -100 bis 100
TypeError: cannot unpack non-iterable int object
Wie kann ich das lösen? Oder bin ich bei der Aufgabe komplett auf dem falschen Weg?

Vielen Dank.

Beste Grüße. :)

Re: For-Schleife mit mehreren Variablen

Verfasst: Donnerstag 29. Oktober 2020, 18:56
von Sirius3
Wenn Du zwei unabhängige Variablen brauchst, dann brauchst Du auch zwei for-Schleifen.
Das `continue` ist ziemlich uneffektvoll.
Wenn Du nur m < 10 willst, dann sind Zahlen von i oder j größer als 3 nicht sinnvoll.

Re: For-Schleife mit mehreren Variablen

Verfasst: Donnerstag 29. Oktober 2020, 23:02
von narpfel
`itertools.product` ist eine Möglichkeit, wie man mehrere verschachtelte `for`-Schleifen vermeiden kann.

Re: For-Schleife mit mehreren Variablen

Verfasst: Mittwoch 4. November 2020, 18:07
von Rckstr
Und um noch mal den Fehler zu erklären, damit du verstehst was bei deiner Logik schief gegangen ist:

range(-100,100) gibt pro Interation einen Wert zurück. Also zb -100 bei der ersten Iteration. -99 bei der Zweiten usw.

In deinem ersten Bsp

Code: Alles auswählen

for i in range(-100, 100): 
speicherst du diesen Wert in i ab. So weit so gut. In deinem zweiten Code schreibst du:

Code: Alles auswählen

for i, j in range(-100, 100):
 
du willst also zwei Werte speichern. Einmal in i und einmal in j. Wie oben beschrieben gibt range() aber nur einen Wert zurück. Daher kommt die Fehlermeldung.

Du kannst for loops ineinander verschachteln. Als Hinweis für den Lösungsansatz ;-)

/Rckstr