Python :: Aufgabe #202
4 Lösungen
Übung zu For-Schleifen
Anfänger - Python
von Blasius18
- 27.09.2018 um 18:41 Uhr
Die Fakultät einer Ganzzahl in den Grenzen von 0<=n<=60
als Konsolenanwendung umsetzen.
Der Anwender wird aufgefordet, eine Zahl in den Grenzen von 0 bis 60 einzugeben.
Das Programm errechnet den Wert und gibt ihn wieder aus.
Um die Entwicklung besser verfolgen zu können wird in jedem Schleifendurchgang der Aktuelle wert der Fakultät beim ,i-ten` schleifendurchgang ausgegeben.
Zusatzfeature (kann..)
gibt der Nutzer eine Zahl > 60 ein, gibt's einen Hinweis und er wird erneurt zur Eingabe einer Zahl 1 < zahl < 60 aufgefordert.
hat er 3 mal eine falsche Zahl eingegeben, bricht das Programm ab.
als Konsolenanwendung umsetzen.
Der Anwender wird aufgefordet, eine Zahl in den Grenzen von 0 bis 60 einzugeben.
Das Programm errechnet den Wert und gibt ihn wieder aus.
Um die Entwicklung besser verfolgen zu können wird in jedem Schleifendurchgang der Aktuelle wert der Fakultät beim ,i-ten` schleifendurchgang ausgegeben.
Zusatzfeature (kann..)
gibt der Nutzer eine Zahl > 60 ein, gibt's einen Hinweis und er wird erneurt zur Eingabe einer Zahl 1 < zahl < 60 aufgefordert.
hat er 3 mal eine falsche Zahl eingegeben, bricht das Programm ab.
Lösungen:
Python-Code
counter = 3 while counter > 0: try: n = int(input("Bitte eine ganze Zahl zwischen 0 und 60 eingeben: ")) if n > 60: raise RuntimeError("Zahl ist größer als 60") if n < 0: raise RuntimeError("Zahl ist kleiner als 0") break except RuntimeError as e: print("Fehler: ", e) counter -= 1 fac = 1 if n == 0: print(fac) else: for i in range(1, n+1): fac *= i print(fac)
Python-Code
input_string = input('bitte zahl zwischen 0 und 60 eingeben') try: input_number = int(input_string) except: exit('keine ganze Zahl') if input_number > 60: exit('number out of range') if input_number == 0: exit('die final gewuenschte facultaet von %d ist %d' % (input_number, 0)) x = 2 faculaet = 1 while x <= input_number: faculaet *= x print('facultaet von %d ist %d' % (x, faculaet)) x += 1 print('die gewuenschte facultaet von %d ist %d' % (input_number, faculaet))
alternativ via for schleife:
Python-Code
for x in range(input_number): faculaet *= x print('facultaet von %d ist %d' % (x, faculaet))
Bin mir nicht sicher, was besser lesbar ist. Persönlich gefällt mir "while ... do" in diesem Falle besser.
Python-Code
fehler = 0 zahl_ = 1 ergebnis = 1 while fehler != 3: faku = int(input("Deine Zahl (0<=n<=60): ")) if fehler == 0: if (faku > 0) and (faku <= 60): for zahl_ in range(1, faku + 1): ergebnis *= zahl_ print(ergebnis) exit() elif faku == 0: print("0") exit() else: print("Falsche Eingabe, 1<n<60, du hast noch ", (2 - fehler), " Versuche") fehler += 1 continue # Falsche Eingabe erfolgte else: if faku in range(2,60): for zahl_ in range(2, faku + 1): ergebnis *= zahl_ print(ergebnis) exit() else: print("Falsche Eingabe, 1<n<60, du hast noch ", (2 - fehler), " Versuche") fehler += 1 continue print("das wars")
Python-Code
def fakultaet(x): n = 1 for i in range(x, 1, -1): n = n * i return n z = 1 eingabe = int(input("Bitte eine Zahl zwischen 1 und 60 eingeben: ")) while True: if eingabe > 0 and eingabe <= 60: y = 1 while y < eingabe: print(fakultaet(y)) y = y + 1 print("Die Fakultät von " + str(eingabe) + " ist: " + str(fakultaet(y))) break else: z = z + 1 if z <= 3: eingabe = int(input("Falsche Eingabe! Bitte eine Zahl zwischen 1 und 60 eingeben (" + str(z) + ". Versuch): ")) else: break