2017-02-19 3 views
-1

Das Problem ist:Einrückungen Fehler in for-Schleife

Finish the function sum_of_over_fives that loops over number_list and adds to the total only the numbers greater than 5. Then it should return the total.

def sum_of_over_fives(number_list): 
     total = 0 
     for number in number_list: 
      number >5 
      total += number 
     return total 

ich einen Einzug Fehler für „number> 5“ Linie, aber ich habe das Bauchgefühl, dass die Linie nicht stimmt.

+1

Passt die Einrückung zu Ihnen? Wenn ja warum? Was erwartest du mit 'number> 5'? – miradulo

+1

'if Zahl> 5:' –

+0

Ich habe versucht, verschiedene Möglichkeiten, den Hauptfehler "IndentationError: einen eingerückten Block. – BGS

Antwort

-2

Sie können die Einbauten verwenden filter und sum:

total = sum(filter(lambda x: x > 5, number_list)) 
+1

Wenn er das gedreht Für seine Aufgabe würde der Prof wissen, dass er es hier hat. –

+0

Nun, aber das ist, wie Sie das Problem in Python lösen. Der OP-Code ist C-Stil, nicht Python. –

+1

gehen vor dem Lauf. –

0

Wie von @Mitch und @StephenRauch, Ihre Logik in Ordnung ist, ist das einzige Problem, mit dem Einzug und die number > 5, die sein sollte ein if statement.

Nach dem PEP 8 Dokumentation, müssen Sie sicherstellen, dass die indentation of your function body is 4, im Moment, es ist 8

Dann ist die einzige Sache, wird links die if zu setzen und die : mit den number > 5 zu gehen . Hier ist Ihr endgültiger Code mit den korrigierten Vertiefungen und die richtigen if Aussage:

def sum_of_over_fives(number_list): 
    total = 0 
    for number in number_list: 
     if number > 5: 
      total += number 
    return total 

print(sum_of_over_fives([1,2,3,4,5,6,7])) 
>>> 
13 

Aber wie @a_guest sagte, gibt es eine bessere Art und Weise zu tun, was Sie zu tun versuchen.

Ich hoffe, dass Hilfe :).

+0

@ Tshilidzi Mudau Ich schätze Ihre Antwort. Ich danke Ihnen für Ihre Erklärung. – BGS

Verwandte Themen