Wiederholungen

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
Gizzy
User
Beiträge: 2
Registriert: Mittwoch 19. Januar 2022, 17:56

Guten Abend,

ich bin Anfänger in Python und versuche einen simplen Code zu schreiben, dieser code soll immer wieder zum Anfang des Programms springen, sofern die beiden if Bedingungen nicht gegeben sind.
Also wenn 2 + 2 nicht 5 ergibt neuer Versuch, falls 3 + 3 nicht 5 ergibt dann neuer Versuch etc.
Es wäre für mich sehr hilfreich, einen angepassten Code zu bekommen, damit ich diesen verstehe. Eine Aussage, wie eine while Schleife oder for Schleife einbringen, bringt mir wenig, da ich noch nicht verstehe oder anscheinend bis dato nicht verstanden habe, wie man diesen while oder for Schleifen richtig nutzt.
Ich hoffe, jemand ist so nett und kann mir einen angepassten Code schicken und eine kleine Begründung, das wäre nett, aber nicht erforderlich, was die Begründung betrifft.

Danke vorab.

Anbei der Code:

print(" Zwei Zahlen eingeben, um auf den Wert 5 zu kommen:")
Zahl1 = float(input("\nZahl eingeben:"))
Zahl2 = float(input("Zahl 2 eingeben:"))

if Zahl1 + Zahl2 < 5:
print("Wert ist unter 5.")

elif Zahl1 + Zahl2 > 5:
print("Wert ist über 5.")

else:
print("Richtig")
Benutzeravatar
sparrow
User
Beiträge: 4184
Registriert: Freitag 17. April 2009, 10:28

Gewöhn dir gleich an, dass Namen in Pythpn klein_mit_unterstrich gechrieben werden, außer die Namen von Klassen (PascalCase).
Dann solltest du deinen Code hier im Forum in Code-Tags setzen. Die erscheinen automatisch, wenn du den </>-Button im Vollständigen Editor drückst.

Zu deinem Problem: Es gibt keine "Sprünge" in Python. Du brauchst eine while-Schleife die du abbrichst, wenn eine bestimmte Bedingung erfüllt ist.
imonbln
User
Beiträge: 149
Registriert: Freitag 3. Dezember 2021, 17:07

Wie schon sparrow geschrieben hat, es gibt kein goto in Python du brauchst ein while an der richtigen stelle. Außerdem ist der Vergleich auf Gleichheit mit Floats in immer schwierig, das kommt durch die interne Darstellung von Gleitkomma Zahlen im Computer. Rechne zum Beispiel mal 0.1 + 0.2 in Python, das Ergebnis wird dich erstaunen.

Grundsätzlich gilt, wenn immer möglich solltest du versuchen in int zu rechen und keine Angst vor großen Zahlen, der Computer kann das. Bei Geld kannst du zum Beispiel immer in Cent oder Zehntel Cent rechnen und erst bei der Ausgabe in Euro konvertieren.

Wenn du in Float rechen musst/willst, solltest du dir ein Epsilon definieren und Gleichheit so definieren, dass wenn die Werte sich außerhalb des Epsilon nicht unterscheiden, dann sind sie gleich. Ähnlich solltest du auch mit den größer und kleiner als Vergleich verfahren, wie gesagt floats sind tricky und vergleiche enden oft unerwartet.
Benutzeravatar
Dennis89
User
Beiträge: 1153
Registriert: Freitag 11. Dezember 2020, 15:13

Hallo,
Gizzy hat geschrieben: Mittwoch 19. Januar 2022, 19:00 Wine Aussage, wie eine while Schleife oder for Schleife einbringen, bringt mir wenig, da ich noch nicht verstehe oder anscheinend bis dato nicht verstanden habe, wie man diesen while oder for Schleifen richtig nutzt.
Lass mal folgenden Code bei dir laufen und beachte die Kommentare.

Code: Alles auswählen

number = 0
# "while True" beschreibt eine Dauerschleife, alles was danach um 4 Leerzeichen eingerückt ist,
# läuft jetzt ununterbrochen nacheinander durch
while True:
    # number ist zu Beginn 0 und wird jetzt in jedem Schleifendurchgang um eins erhöht. Ausgeschrieben
    # wäre es 'number = number + 1'
    number += 1
    # Die um eins erhöhte 'number' wird ausgegeben
    print(number)
    # Die Schleife soll enden, wenn 'number' = 10 ist
    if number == 10:
        # Die Dauerschleife kann man mit dem Schlüsselwort "break" beenden
        break

Hilft dir das weiter, dein Problem selbstständig zu lösen/verstehen?

Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
Gizzy
User
Beiträge: 2
Registriert: Mittwoch 19. Januar 2022, 17:56

Ja, vielen Dank für deine Antwort und die Kommentare.
Antworten