Kann mir jemand bei dieser Python-Aufgabe helfen?
Es liegt das folgende Programm vor, welches aus einer for-Schleife und einer Range-Funktion besteht. Sinn dieses Programms ist es, dass alle Tupel-Paare, deren Summe kleiner gleich 5 ist, in der Konsole ausgegeben werden:
for i in range(1,6,1):
for j in range(1,11,1):
if i+j <= 5:
print("(" + str(i) + ", " + str(j) + ")")
else:
break
Als Ausgabe erhält man dann:
(1, 1), (1, 2), (1, 3), (1, 4), (2, 1), (2, 2), (2, 3),
(3, 1), (3, 2), (4, 1)
Nun soll das oben stehenden Programm um einen Parameter k erweitert werden, sodass alle Tripel von Zahlen zwischen 0 und 10 ausgegeben werden, deren Summe genau 10 entspricht.
Derzeit sieht mein Programm dazu so aus:
for i in range(1,11,1):
for j in range(1,11,1):
for k in range(1,11,1):
if i+j+k == 10:
print("(" + str(i) + ", " + str(j) + ", " + str(k) + ")")
else:
break
Das Problem ist nur, dass die Ausgabe in der Konsole noch nicht ganz vollständig ist:
(1, 8, 1)
(2, 7, 1)
(3, 6, 1)
(4, 5, 1)
(5, 4, 1)
(6, 3, 1)
(7, 2, 1)
(8, 1, 1)
Der dritte Index bleibt nämlich die ganze Zeit nur bei 1, weshalb noch nicht alle möglichen Tripel angezeigt werden.
Wie kann ich mein bisheriges Programm so modifizieren, dass wirklich alle möglichen Tripel ausgegeben werden?
2 Antworten
Deine Abbruchbedingung passt nicht. Und die willst du auch garnicht haben. Hau den Else-Fall mit dem Break weg, dann sollte es funktionieren.
Die k-Schleife probiert den ersten Fall k=1. Wenn die Bedingung stimmt, erfolgt die Ausgabe, andernfalls wird die Schleife abgebrochen.
Deshalb bekommst du den Fall, bei dem i=1, j=1 und k=8 ist, nie zu sehen.
Das break muss weg