Kurs:Python/LG/Py2009/Fakultaet

Das Programm heißt fakultaet 2.py
Ich arbeite hier an einem Programm, um die Fakultaet einer Zahl zu berechnen. --80.132.80.146 23:04, 23. Jan. 2009 (CET)

Siehe in der Wikipedia Fakultät

Programmcode

Bearbeiten

Version 2.1 - Schnick-Schnack

Bearbeiten

Version 2.1 erweitert Version 1.0 um einige nette Extras. Das Programm 1.0 funktioniert. Das Programm 2.0 interagiert mehr mit dem Anwender. Noch nicht implementiert ist eine Abfrage, ob die Eingabe des Benutzers ein String sein könnte. Ich weiß noch nicht, wie man damit umgehen könnte. Hintergrund (2,3 wird von Python als String, 2.3 als Gleitkommazahl aufgefasst).

print "\nProgramm zur Berechnung der Fakultaet!"

while True:
        n = input("Geben Sie die Zahl ein: ")
        
        # Pruefe die Eingabe
        if n < 0 or n != int(n) :
            print "Fehler!\nEs muss sich um eine ganze Zahl groesser 0 handeln.\nBitte wiederholen Sie die Eingabe.\n"
            continue
        
        fak = 1                   # fak muss initialisiert werden! fak = 1 ist unproblematisch, fak = 0 verursacht Fehler.
        for i in range (2,  n+1):
            fak = fak * i
            # print fak # Kontrolle: Macht die einzelnen Berechnungen transparent
            
        print "Die Fakultaet von",  n,  "ist",  fak,  "."
               
        # Frage den Anwender, ob er noch weitere Fakultaeten berechnen will.

        d = input("Programm fortsetzen? 1 fuer ja, 2 fuer nein: ")
        if d == 1:
            continue
        else:
            print "\nDas Programm wurde beendet. Ihnen einen schoenen Tag!"
            break

Version 1.0 - Schlank

Bearbeiten

Version 1.0 ist vollständig lauffähig. Noch wird nicht überprüft, ob die Fakultät überhaupt berechnet werden kann (n > 0) und ob es sich bei n um eine Ganzzahl handelt. Schön wäre auch eine Abfrage, ob die Fakultät einer weiteren Zahl berechnet werden soll.

print "\nProgramm zur Berechnung der Fakultaet!"

n = input("Geben Sie die Zahl ein: ")

fak = 1                   # fak muss initialisiert werden! fak = 1 ist unproblematisch, fak = 0 verursacht Fehler.

for i in range (2,  n+1):
      fak = fak * i
      # print fak # Kontrolle: Macht die einzelnen Berechnungen transparent

print "Die Fakultaet von",  n,  "ist",  fak,  "."

Die einfache Variante (aus der Einführung)

Bearbeiten
while True: 
    zahl = input("Geben Sie eine Zahl ein: ") 
    if zahl < 0: 
        print "Negative Zahlen sind nicht erlaubt" 
        continue 
    ergebnis = 1 
    for i in range(2, zahl+1): 
        ergebnis = ergebnis * i 
    print "Ergebnis: ", ergebnis

ToDo-Liste

Bearbeiten
  1. ...
  2. ...
  3. ...

Version 2.0

Bearbeiten

Inzwischen auch schon wieder verbessert...

print "\nProgramm zur Berechnung der Fakultaet!"

while True:
        n = input("Geben Sie die Zahl ein: ")
        
        # Pruefe die Eingabe
        if n < 0:
            print "Fehler!\nEs muss sich um eine ganze Zahl groesser 0 handeln.\nBitte wiederholen Sie die Eingabe.\n"
            continue
        elif n != int(n):
            print "Fehler!\nEs muss sich um eine ganze Zahl groesser 0 handeln.\nBitte wiederholen Sie die Eingabe.\n"
            continue


        # Berechne die Fakultaet!       
        fak = 1                   # fak muss initialisiert werden! fak = 1 ist unproblematisch, fak = 0 verursacht Fehler.
        for i in range (2,  n+1):
            fak = fak * i
            # print fak # Kontrolle: Macht die einzelnen Berechnungen transparent
            
        print "Die Fakultaet von",  n,  "ist",  fak,  "."
        
        # Frage den Anwender, ob er noch weitere Fakultaeten berechnen will.
        d = input("Programm fortsetzen? 1 fuer ja, 2 fuer nein: ")        
        if d == 1:
            continue
        else:
            print "\nDas Programm wurde beendet. Ihnen einen schoenen Tag!"
            break

Versuch 0.1

Bearbeiten

Zu kompliziert, nicht ganz lauffähig.

a = 0
ergebnis = 0

print "Dieses Programm berechnet die Fakultaet einer beliebigen, ganzen  Zahl > 0."

while True:
        a = input("Geben Sie eine Zahl: ")
        if (a < 0):
            print "Ihre Zahl muss groesser 0 sein!"
            continue
        
        for i in range (2,  a+1):
        a = a * i
        print a

print "Die Fakultaet von ",  a,  " ist ", ergebnis,  "."