Programm schreiben, die eine Zahl n liest und 1*2*3...n druckt?
Ich muss dieses Programm in Python schreiben.
Wir kennen max(x,y)
4 Antworten
Du sollst eine natürliche Zahl einlesen, das Produkt aller natürlichen Zahlen von 1 bis zur eingelesenen Zahl bilden und das Ergebnis anzeigen.
Das ist wirklich nicht schwer. Die Einzelschritte sind:
- Einlesen einer Eingabe mit der Funktion input
- Umwandeln der von input erhaltenen Zeichenreihe in eine Zahl. Dazu verwendest du die Funktion int.
- Berechnung des Produkts in einer Schleife. Hier hast du die Wahl zwischen einer for-Schleife und einer while-Schleife.
- Ausgeben des Ergebnisses mit der Funktion print
Mit einer for-Schleife kannst du das so programmieren:
eingabe = input("n = ? ")
n = int(eingabe)
produkt = 1
for i in range(2, n + 1):
produkt *= i
print(produkt)
Beachte, dass die Funktion range nicht bis zum Wert ihres zweiten Arguments zählt, sonden einen Zählschritt vorher aufhört. Um zu erreichen, dass wirklich bis zum Wert n gezählt wird, musst du deshalb n+1 angeben. Diese Besonderheit von range wird oft übersehen.
Mit einer while-Schleife löst du die Aufgabe so:
eingabe = input("n = ? ")
n = int(eingabe)
produkt = 1
zaehler = 1
while (zaehler <= n):
produkt = produkt*zaehler
zaehler = zaehler + 1
print(produkt)
Hier brauchst du eine Variable für einen Zähler, der nacheinander die Werte aller Faktoren annimmt. Achte darauf, den Wert des Zählers in der Schleife bei jedem Schleifendurchlauf um 1 zu erhöhen. Wenn du das vergisst - und das wird oft vergessen - kommt die Schleife niemals zu einem Ende.
Vergiß nicht, dein Programm mit Aufgaben zu tsten, für die du das Ergebnis kennst. Das Produkt der Zahlen von 1 bis 3 ist 6; das Produkt der Zahlen von 1 bis 6 ist 720.
Das Produkt der natürlichen Zahlen von 1 bis n heißt im übringen "Fakultät". WEnn du im Internet nach "Python Fakultät berechnen" suchst, findest du sicher eine ganze Menge guter und schlechter Tipps. Einer davon steht hier: https://www.gutefrage.net/frage/python-code-zur-berechnung-der-fakultaet-einer-zahl und ein anderer, der freilich mehrere Fehler enthält, hier: https://www.gutefrage.net/frage/fakultaet-mit-forwhile--schleife Die Frage kommt also häufiger vor.
import functools
import operator
n=int(input("Zahl?: "))
print( functools.reduce( operator.__mul__,range(1,n+1) ) )
Fehlerbehandlung habe ich mir geschenkt.
Der normale Ansatz wäre:
Zahl einlesen, Ergebnis auf 1 initialisieren und dann in einer Schleife mit allen Werten von 2..n multiplizieren, Beispiele finden sich bereits unter den Antworten.
Ganz groß ist natürlich auch:
import math
n=int(input("Zahl?: "))
print(math.factorial(n))
Ob das im Sinne des Aufgabestellers ist? :-D
Ich kenne mich da jetzt zwar nicht mehr so aus. Früher war das mal so etwas in der Art:
10 INPUT N
20 PRINT N!
30 END
Ja, dann lies die Zahl und gehe bspw. eine while Schleife durch die läuft solange wir kleiner als n sind. Dafür bspw. einen Zähler erstellen. Und diese Zahl, also den Zähler, druckt es dann. Am Ende dann noch n drucken.