Programm schreiben, die eine Zahl n liest und 1*2*3...n druckt?

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.

Woher ich das weiß:Berufserfahrung – Softwareentwickler
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

Woher ich das weiß:eigene Erfahrung – Unterricht - ohne Schulbetrieb

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.

Woher ich das weiß:Studium / Ausbildung – Maschinenbaustudent, RWTH Aachen