====== LU05.A11: Factorial ====== Schreibe ein Programm, das die Fakultät einer Zahl berechnet. Die Fakultät von n, bezeichnet als ''n!'', wird berechnet als 1 * 2 * 3 * ... * n. Zum Beispiel ist die Fakultät von 4 24 oder 4! = 1 * 2 * 3 * 4 = 24. Außerdem wurde festgelegt, dass die Fakultät von 0 gleich 1 ist, also 0! = 1. Fakultäten werden vor allem in der Wahrscheinlichkeitsrechnung verwendet, wenn verschiedene mögliche Ordnungen einer Menge untersucht werden. Zum Beispiel kann eine Gruppe von fünf Personen 5! verschiedene Reihen bilden, und ein Kartenspiel mit 52 Karten kann 52! verschiedene Reihenfolgen haben. Die Faktorrechnung kann auch zur Berechnung von [[https://de.wikipedia.org/wiki/Kombination_(Kombinatorik)|Kombinationen]] verwendet werden. Es ist zum Beispiel möglich, 52! / (5! * (52-5)!) verschiedene Blätter aus einem 52-Kartenspiel austeilen, und man kann 40! / (7! * (40 - 7)!) verschiedene 7er-Lotterielinien aus 40 Zahlen bilden. ===== Auftrag ===== Erstelle die Programmlogik für das Programm: - Der Benutzer gibt eine natürliche Zahl ein. - Das Programm berechnet die Fakultät dieser Zahl und gibt das Resultat aus. Schreibe die Programmlogik einmal als ''while''-Schleife in ''main_while'' und einmal als ''for''-Schleife in ''main_for''. ==== Beispiel ==== Give a number: **3** Factorial: 6 Die interne Berechnung war hier 1 * 2 * 3 = 6 Give a number: **10** Factorial: 3628800 Und nun war die interne Berechnung 1 * 2 * 3 * ... * 8 * 9 * 10 = 3628800 ===== Vorgehen ===== - Akzeptiere das GitHub Classroom Assignment im Moodlekurs. - Klone das Repository in PyCharm. - Codiere die Programmlogik in ''main.py''. - Teste dein Programm mit den Testfällen in ''main_test.py''. - Führe einen Commit und einen Push durch. === Abgabe === Die Abgabe erfolgt durch den Push ins GitHub Repository. In Moodle ist keine Abgabe vorgesehen oder möglich. ===== Vorlage ===== def main_while(): # Write your program here and remove the line "pass" pass def main_for(): # Write your program here and remove the line "pass" pass if __name__ == '__main__': main_while() main_for() Anmerkung: Kümmere dich ich im Moment nicht zu sehr um ''if %%__%%name%%__%% == '%%__%%main%%__'%%:''. Dieser Programmblock legt fest, welche Funktion beim Ausführen gestartet wird. Wir werden dies im Verlauf des Moduls noch genauer betrachten. GitHub-Repo: https://github.com/templates-python/m319-lu05-a11-factorial ---- {{tag>M319-LU05}} [[https://creativecommons.org/licenses/by-nc-sa/4.0/ch/|{{https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png}}]] Kevin Maurizi, Marcel Suter Diese Aufgabe ist eine übersetzte und angepasste Aufgabe von [[https://scott3142.uk/|Scott Morgan]], verwendet unter CC BY NC SA.