wie multiplizieren Sie alle zahlen in einer Sequenz (python)
Wie wenn ich sagte, das Programm n=10
würde, wie ich es zurück 10*9*8*7*6*5....1
?
Dachte ich eine while-Schleife, aber ich fühle, dass ich Durcheinander irgendwo, weil es nicht die Summe aller zahlen in der Sequenz.
Mein Aktueller code sieht wie folgt aus
def product(n):
i=n
a=n-1
while a>0:
return i * a
b=i * a
a=a-1
i=i-1
Gibt es bessere Möglichkeiten, es zu tun, ohne Verwendung von Rekursion? Sorry für die unglaublich Anfänger-Frage, aber ich bin versucht, mir beibringen, wie man code. Du musst irgendwo anfangen!
Dank!
Summieren oder multiplizieren? PS du bist
vermehren,wie mache ich es alles zurück?
Wenn Sie
also, setzen Sie die return-Wert außerhalb der Schleife sollte dieses Problem lösen? Ich bin verwirrt darüber, wie die while-Schleife ist zu multiplizieren Sie alle zahlen. Wie fühle ich mich mit meinem aktuellen code, jedes mal, wenn es eine Schleife sein gehen Sie zum zurücksetzen der Wert, wenn das macht keinen Sinn.
Könnten Sie
return
ing erstes in der Schleife...vermehren,wie mache ich es alles zurück?
Wenn Sie
return
Sie sind nicht lassen der rest der Schleife code ausgeführt werden, und Sie sind nur die Schleife einmal.also, setzen Sie die return-Wert außerhalb der Schleife sollte dieses Problem lösen? Ich bin verwirrt darüber, wie die while-Schleife ist zu multiplizieren Sie alle zahlen. Wie fühle ich mich mit meinem aktuellen code, jedes mal, wenn es eine Schleife sein gehen Sie zum zurücksetzen der Wert, wenn das macht keinen Sinn.
Könnten Sie
reduce
wenn Sie wollen, aber wenn das Ziel ist zu lernen, dass ist wohl nicht so gut. reduce(range(1, n+1), lambda a, b: a*b)
Oder math.factorial
InformationsquelleAutor Billy Thompson | 2012-09-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Da Sie versuchen zu lernen, code, ich werde nicht geben Ihnen eine Gesamt-Lösung, aber
Ich gebe Ihnen ein paar Tipps statt:
Haben eine
for
Schleife läuft von 1 bis n (mitrange(1, n+1)
) anstatt derwhile
-Schleife. Dies generiert die Werte, die Sie multiplizieren möchten, und Durchlaufen Sie die richtige Anzahl von Zeiten (die kann ein wenig schwierig sein mitwhile
Schleifen manchmal).Haben eine variable mit dem Namen
product
zu speichern, das Ergebnis der Multiplikationen jedes mal durch die Schleife.Initialisieren
product
bevor Sie in diefor
-Schleife. Einmal im inneren werden Sie nur aktualisieren Sie den Wert vonproduct
.Nachdem Sie fertig sind mit der Schleife, die Sie verwenden können, die
return
- Anweisung, um den Rückgabewert vonproduct
.Schließlich, für Test-Zwecke, möchten Sie vielleicht beginnen mit einem kleinen Wert von
n
, wie 4, und drucken Sie die Werte, die Sie computing innerhalb der Schleife, um zu überprüfen, wie der code arbeitet.Gibt es mehr knappe und pythonic Möglichkeiten, dies zu tun, aber hier wird die code-Struktur, die Sie bereits eingerichtet haben. Und natürlich rekursiv, so gut wie Sie erwähnen, zu.
Sobald Sie die Grundlagen beherrschen, werden Sie schätzen die mehr idiomatische Möglichkeiten, dies zu schreiben, oder der Aufruf der entsprechenden Funktionen, die dies für Sie tun.
gut .. lass es mich wissen, wenn Sie irgendwelche Fragen/wie es geht, ich denke, das ist mehr nützlich, auf lange Sicht als zu sehen, wie Funktionen aufrufen, oder sich eine bereits geschriebene Lösung.
Ok 🙂 Genau, ich will in der Lage sein, zu verstehen, die Methode hinter dem Wahnsinn, bevor er den Aufruf von Funktionen.
InformationsquelleAutor Levon
Gut, hier ist ein weiteres Pythonic Ansatz.
Das beantwortet direkt die Frage bereits im Titel. "wie multiplizieren Sie alle zahlen in einer Sequenz"
Stack-Überlauf ist nicht nur für den OP, es ist auch für die Menschen, die hier landen, z.B. aus einer Google-Suche.
Ich Stimme mit Ihnen überein, SO ist nicht nur für den OP, aber das Frage ist. Basierend auf OP ' s Beiträge, ich bezweifle, sehen
reduce()
etc ist zu helfen, OP. Ich denke, jeder versucht zu helfen, in Ihren eigenen Weg.InformationsquelleAutor FogleBird
Vorausgesetzt, dass Sie das, was Sie gemeint ist factorial-Funktion, können Sie einfach benutzen Sie einfach das
math.factorial()
:Ich glaube nicht, dass dies hilft, die OP-lernen, wie man programmiert, sondern wie man Funktionen aufrufen.
Meine Antwort enthalten
math.factorial
als auch einen Versuch, ihm zu zeigen, wie es zu implementieren, auf seine eigene :-pSorry, ich bin nicht einverstanden. Ich glaube "wie nennen die richtigen Funktionen", sondern als Umsetzung alles aus dem nichts, ist ein wichtiger Teil des Lernens, wie das Programm auch. Lernen, wie man diese Art von Urteil ist noch wichtiger. Außerdem, der OP fragte deutlich, ob es ist ein einfacher Weg, es zu tun "ohne Rekursion", und es ist. Angesichts dieser Gründe, ich sehe nicht, wie meine Antwort verdient ein downvote.
Ich habe nicht downvoted ein einzige Antwort hier .. nur weil ich Kommentare bedeutet nicht, dass .. also bitte keine voreiligen Schlüsse ziehen. Vielleicht finden andere deine Herangehensweise nicht hilfreich? Mindestens eine andere person müssen. Und Sie sind nicht zu helfen, OP-lernen, wie man programmiert, sondern das Produkt verwenden, das von anderen Programmierern.
InformationsquelleAutor K Z
Die Sie versuchen zu finden, die die Fakultät einer Zahl n ist, im wesentlichen. Für die Suche nach der Fakultät einer Zahl, gibt es 2 Methoden
Als einen neuen Programmierer, Sie wären besser dran mit einem einfachen Schleife läuft von 1 bis n und setzt die multiplizierte Wert bei jedem Durchlauf in eine variable. Diese variable ist Ihre Antwort. Aber auch weiß, dass die Rekursion wird auch die Arbeit und machen den code elegant Aussehen. Frohes Programmieren !
InformationsquelleAutor asudhak
Genannt wird Fakultät. 10! entspricht 10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1.
Durch die Art und Weise, in der Praxis, nutzen Sie einfach
math.Fakultät
.n bedeutet, dass
product = product * n
; es vermehrt sich das Produkt bisher für jedenn
bis0
.n -= 1
ist das gleiche wien = n - 1
abzieht1
each-Schleife.im wesentlichen zählt es runter von
n
zu0
, speichern das Ergebnis Ihrer kumulativen Produkt inproduct
.Danke, diese Art von hilft, um es in Perspektive für mich. Ich nur noch nicht vorgestellt worden, die syntax noch nicht. Ich werde versuchen zu begreifen, und wenden Sie es jetzt.
Die zusammengesetzten Zuweisungsoperatoren sind nur ein Kürzel... nicht gestresst fühlen 🙂
InformationsquelleAutor oldrinb
Denke ich immer, der Fakt als das beste Beispiel in Lern-Rekursion ...
Versuchen Sie, um zu berechnen
factorial(1000)
mit diesem Ansatz. :^)ja, ich weiß, dass wird nicht funktionieren 😛 ... ich in der Regel haben diese übung in C-land, das hatte noch seine Probleme, aber weniger als python für dieses problem
Ihr code wird zurück
factorial(-10) == 1
alsTrue
, während die Fakultät für negative zahlen ist nicht definiert. Kleinere Problem, aber trotzdem.Fakt ist so klar umgesetzt mittels iteration über Rekursion, ich denke, es ist die Quintessenz Beispiel für verzerrte ein problem zu einem bestimmten Thema Programmierung.
InformationsquelleAutor Joran Beasley
Einen anderen Weg, dies zu tun ist die Verwendung
scipy.product
.InformationsquelleAutor Akavall
Als Lernender sollten Sie es tun, ohne über eingebaute Funktionen, die es wird Ihnen helfen, lernen die Programmierung eher nur als Lern-tool ein tool ist viel einfacher, Sie werden gute Programmierer. es gibt zwei Möglichkeiten, dies zu tun, habe ich umgesetzt einfacheren Versionen.
Mithilfe Von Rekursion:
Über Einfach Loop:
InformationsquelleAutor sharafjaffri