Zahlen Generieren die zusammen immer den gleichen Wert haben

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
Jans1612
User
Beiträge: 5
Registriert: Dienstag 15. November 2016, 16:07

[codebox=pycon file=Unbenannt.txt]

Hallo liebe Community,

Ich steh vor einem Problem und zwar möchte ich, dass die Zahlen so lange Generiert werden bis sie 45 ergeben. Wenn ich das Programm nun starte warte ich aber ewig ohne ein Ergebnis zu bekommen. Wo ist mein Fehler?

Schon mal Danke im voraus!


#Modul Importieren
import random

#Drei Random Zahlen werden generiert
a = random.randint(0, 45)
b = random.randint(0, 45)
c = random.randint(0, 45)

#Zahlen werden zusammengerechnet
AlterZusammen = a + b + c

#Wenn die Zahlen nicht 45 ergeben wird es wiederholt
while AlterZusammen != 45:
a = random.randint(0, 45)
b = random.randint(0, 45)
c = random.randint(0, 45)

#Wenn alle generierten Zahlen 45 ergeben werden sie ausgegeben
if AlterZusammen == 45:
print("Die Kinder sind" , a, b, "und", c, "Jahre alt")[/code]
BlackJack

@Jans1612: `AlterZusammen` ändert sich innerhalb der Schleife ja nicht, also wird das während die Schleife läuft auch niemals den Wert 45 annehmen wenn es *vorher* den Wert nicht schon hatte. Wenn Du einem Namen einen Wert zuweist, dann ändern sich dadurch nicht auf magische Weise irgendwelche Werte die irgendwann vorher mal mit einem Wert berechnet wurden der vorher an den gleichen Namen gebunden war.

Das ``if`` nach der Schleife ist überflüssig. Denn die Zeile wird ja erst erreicht wenn die Schleifenbedingung erfüllt ist.

Das Vorgehen ist nicht so effizient. Man könnte die Zahlen nacheinander generieren und jedes mal die Grenzen von dem `randint`-Aufruf so wählen dass sie den übrig gebliebenen Wert abdecken. Oder man macht sich Gedanken darüber auf wieviele Arten man die Zahl auf die drei Variablen verteilen kann und generiert eine Zufallszahl in diesem Bereich und erstellt daraus dann die Aufteilung.
Jans1612
User
Beiträge: 5
Registriert: Dienstag 15. November 2016, 16:07

@BlackJack Danke für deine Hilfe ich werde nun eine andere Lösung zu finden
BlackJack

Die Idee mal grafisch umgesetzt/programmiert:
Bild
Antworten