Python :: Aufgabe #202

4 Lösungen Lösungen öffentlich

Ü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.

Lösungen:

1 Kommentar
vote_ok
von scar77 (200 Punkte) - 30.12.2018 um 22:20 Uhr
Quellcode ausblenden 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)
2 Kommentare
vote_ok
von ZRX88 (2580 Punkte) - 01.01.2019 um 13:34 Uhr
Quellcode ausblenden 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:

Quellcode ausblenden 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.
vote_ok
von kamikatze (300 Punkte) - 01.01.2019 um 18:22 Uhr
Quellcode ausblenden 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")

vote_ok
von Nachbar (2520 Punkte) - 22.02.2019 um 21:37 Uhr
Quellcode ausblenden 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