Wie mache ich das in Python?
Hallo. Ich muss als Aufgabe ein Programm schreiben wo man eine Fraktion eingeben kann x/y und dann soll es das Ergebnis printen. Und falls man bei der Fraktion was falsch eingegeben hat soll das Programm einfach solange erneut nach einer Fraktion fragen bis sie gültig ist.
def main():
Fraction = get_fraction()
print(Fraction)
def get_fraction():
while True:
Fraction = input("Fraction: ")
try:
numerator, denominator = Fraction.split("/")
p = int((int(numerator) / int(denominator)) * 100)
if p <= 1:
return ("E")
elif p >= 99:
return ("F")
else:
return (f"{p}%")
except (ValueError, ZeroDivisionError):
pass
main()
Wie baue ich jetzt ein, dass das Programm nicht nur bei zerodivisionerror oder valueerror erneut nach einer Fraktion, sondern auch wenn der numerator größer als der denominator ist?
Danke im Voraus für Antworten!
1 Antwort
Innerhalb von Schleifen kannst du das Schlüsselwort continue benutzen. Dieses bricht den aktuellen Iterationsschritt an der Stelle ab und lässt den Programmfluss wieder zum Schleifenkopf springen.
Beispiel:
counter = 0
while counter < 10:
counter = counter + 1
if counter % 2 == 0:
continue
print(counter)
Die Schleife zählt eine Zählervariable (counter) hoch und stoppt, sobald diese größer/gleich 10 ist. Innerhalb der Schleife wird jedesmal geprüft, ob der aktuelle Zählerwert ganzteilig durch 2 teilbar ist (also einer geraden Zahl entspricht). Ist dem der Fall, wird die print-Anweisung übersprungen und stattdessen der nächste Iterationsschritt direkt angestoßen. Andernfalls erfolgt erst eine Ausgabe auf der Konsole, bevor es zum nächsten Iterationsschritt geht. Im Ausgabekanal würden folglicherweise die Zahlen 1, 3, 5, 7 und 9 stehen.
Für deinen Fall würde ich die Ganzzahlkonversion von numerator und denominator erst in jeweilige Variablen speichern und diese im Anschluss miteinander vergleichen. Je nach Ergebnis des Vergleichs wird der restliche Ablauf des Iterationsschritts übersprungen oder nicht.