rekursive Variante

#! /usr/bin/env python3
# -*- coding: utf-8 -*-

# Berechnung der Fakultät - rekursiv
print("Berechnung der Fakultät einer ganzen")
print("Zahl mit einem rekursiven Algorithmus")
print("=====================================")
print(" ")

# Eingabe
print("Eingabe der ganzen Zahl:")
print("------------------------")
zahl = int(input("ganze Zahl: "))
start = 1

# Rekursion als Funktion
def Fak_rek(wert):
	if wert == start:
		return wert
	else:
		print("rekursiver Aufruf mit:",str(wert))
		return Fak_rek(wert-1) * wert

# Funktionsaufruf und Ausgabe
print(" ")
print("Ergebnis:")
print("---------")
if zahl > 997:
	print("Die Anzahl der erforderlichen Rekursionen ist zu hoch!")
	print("(Die Eingabe muss kleiner als 998 sein!)")
else:
	print("Die Fakultät der Zahl", zahl, "ist", str(Fak_rek(zahl)) + ".")

iterative Variante

#! /usr/bin/env python3
# -*- coding: utf-8 -*-

# Berechnung der Fakultät - iterativ
print("Berechnung der Fakultät einer ganzen")
print("Zahl mit einem iterativen Algorithmus")
print("=====================================")
print(" ")

# Eingabe
print("Eingabe der ganzen Zahl:")
print("------------------------")
zahl = int(input("ganze Zahl: "))

# Iteration als Funktion
def Fak_it(wert):
	ergebnis = 1
	for i in range(1,wert+1):
		ergebnis = ergebnis * i
		print("Zwischenergebnis bei Schleifendurchlauf", str(i) + ":",str(ergebnis))
	return ergebnis

# Funktionsaufruf und Ausgabe
print(" ")
print("Ergebnis:")
print("---------")
print("Die Fakultät der Zahl", zahl, "ist", str(Fak_it(zahl)) + ".")