2017-11-23 29 views
-3

Ich bin neu bei Python und hoffte, dass jemand mir mit einer Frage aus meiner Praxis helfen kann. Ich versuche, eine Funktion zu erstellen, die die Summen der Zahlen in der Liste beginnend mit 1 für jede Nummer hinzufügen würde. Zum Beispiel: [4,2,3] sollte das Ergebnis derGeneration und Summierung von Serien von natürlichen Zahlen für eine Liste von Zahlen

((1+2+3+4) + (1+2) + (1+2+3)) = 19 
+0

Klingt wie ein nettes Problem, um Ihnen zu helfen, Python zu lernen. Hast du schon etwas probiert? – Shadow

+0

Was bedeutet ein Python geteilt in Ihrer Frage? Es ist die '1/python', die ich nicht verstehe. –

+0

Es ist definitiv ein harter, haha, nur ein Anfänger zum Codieren. Ich habe mehrere Funktionen ausprobiert, aber keine war in der Nähe und alle waren weit entfernt von dem Ergebnis, das ich suchte. –

Antwort

1

Versuchen Sie dies zurück:

lists = [4,3,2] 

total = 0 

for data in lists: 

    for c in range(data): 

    n = c+1 

    total += n 

print total 
+0

Vielen Dank, verbrachte Stunden darauf aber konnte es nicht herausfinden –

0

Ich will nicht nur geben Sie eine Antwort, aber ich werde Sie einen Prozess zeigen, dass wird Ihnen helfen, dieses Problem (und andere, denen Sie später begegnen werden) zu lösen.

Schauen Sie sich auf Ihr Ziel:

Sie wollen in einer Liste von ganzen Zahlen passieren zu können, wie [4,2,3] und geben das Ergebnis der Summen von 1 bis jede der ganzen Zahlen der Liste zu starten.

Versuchen Sie dies in so viele Teile zu brechen, wie Sie können:

Wie gehe ich in einer Liste von ganzen Zahlen auf eine Funktion? Wie mache ich etwas auf jedem Element einer Liste? Mit nur einer Ganzzahl n (ein Element der Liste), wie berechne ich die Summe aller Zahlen 1 + 2 + ... + n? Wie kann ich diese Nummer zurückgeben?

Ich glaube, der wichtigste Teil dieser Aufgabe besteht darin, bei einer ganzen Zahl die Summe aller Zahlen bis zu diesem Wert zu berechnen. Zum Glück gibt es dafür einen mathematischen Ausdruck. Bei einer Nummer n ist die Summe aller natürlichen Zahlen kleiner oder gleich n(n)(n+1)/2. Wenn Sie diese Formel noch nicht gesehen haben, probieren Sie es einige Male aus. (1)(1+1)/2 = 2/2 = 1, 2(2+1)/2 = 6/2 = 3, (3)(3+1)/2 = 12/2 = 6. Es läuft gut.

Der nächste Teil, auf den ich mich konzentrieren würde, ist, wie man das für jedes Element in der Liste tut. Wie wäre es mit einer Schleife, bei der wir jedes Element der Liste durchlaufen? Dies geschieht durch:

for i in your_list: 
    ... #Enter code you want to happen for every element here 

Falls Sie nicht damit vertraut, wie diese Schleifen arbeiten, wird die Schleife für jedes Element der Liste wiederholt und i (oder was auch immer Variable, die Sie wollen, ist _ eine wirklich gemeinsame ein zu) wird das Element der Liste. Also, wenn Sie tut

your_list = [5,4,3,6] 
for i in your_list: 
    print(i) 

würde der Ausgang

sein kann
5 
4 
3 
6 

So versuchen Sie es mit der Zugabe Formel aus dem letzten Schritt.

your_list = [4,2,3] 
for i in your_list: 
    natural_sum = (i)*(i+1)/2 
    print(natural_sum) 

Ausgang:

10 
3 
6 

So, jetzt sind wir die Summa bekommen, aber wir wollen nicht, sie zu drucken, wollen wir sie alle addieren. Dies ist Teil des Zurückgebens des Wertschritts. Wir möchten den gesamten Betrag zurückgeben. Nennen wir das tot_sum für total_sum. Zuerst werden wir es auf Null initialisieren, dann fügen wir in der Schleife die natural_sum s hinzu, die wir für total_sum haben.

tot_sum = 0 
your_list = [4,2,3] 
for i in your_list: 
    natural_sum = (i)*(i+1)/2 
    tot_sum += natural_sum 
return tot_sum 

Rückkehr jedoch tot_sum nicht viel Sinn noch machen, weil wir nicht in Funktion sind. Dies ist Teil des ersten, was wir identifiziert haben: Wie gehen wir eine Funktion durch? Nun, wie folgt:

def your_sum(your_list): 
    tot_sum = 0 

    for i in your_list: 
     natural_sum = (i)*(i+1)/2 
     tot_sum += natural_sum 
    return tot_sum 

#Then call it 
print(your_sum([4,2,3])) 
+0

Vielen Dank! Alles macht Sinn, aber ich werde definitiv die Schritte üben und sicherstellen, dass ich die Methode kenne! Sehr geschätzt! –

Verwandte Themen