2016-05-03 16 views
-1

Ich versuche die Zahlen in einer gegebenen Liste zu zählen und zähle nur die geraden Zahlen. Ich bekomme immer einen Syntaxfehler und weiß nicht, was das Problem ist.Zählen von geraden Zahlen in einer gegebenen Liste

x = [1,5,4,7,2,10,8,19,27,26,54,80] 

def count_evens(g_list): 
    y = 0 
    for i in g_list: 
     if g_list[i] % 2 = 0: 
      y = y + 1 
     else: 
      y = y + 0 
    print(str(y)) 

count_evens(x) 

Die Syntaxfehler von if g_list[i] % 2 = 0: kommt Was ist mit meiner Syntax falsch ist?

Danke!

+0

Es == sollte –

+0

es sein sollte "==" – sashas

+0

[Dies] (http://scipython.com/book/chapter-4-the-core- Python-Sprache-ii/Beispiele/Zuweisung-vs-der-Vergleichsoperator /) hat eine ziemlich gute Erklärung von Zuordnung vs Vergleich. – NonlinearFruit

Antwort

1

Syntaxfehler

Sie wollen so vergleichen, verwenden == nicht = (single gleich ist für die Zuordnung)

if g_list[i] % 2 == 0: 

Index liegt außerhalb des Bereichs

Durch alle Elemente der li st, können Sie dieses Formular verwenden:

for i in g_list: 
    if i % 2 == 0: # No need for g_list[i] 
        # in your for loop, 
        # i is an element from the list, not an index 
+0

Oh. Meine. Gott. Ich bin ein Idiot:/ Dies ist, was ein Mangel an Schlaf zu ya, lol Aber jetzt sagt es Index ist außerhalb des Bereichs. Muss ich eine FOR-Schleife für die Entfernung und dann eine weitere für jede [i] in der Liste machen? – Muldawg2020

+0

@ Muldawg2020 Wenn Sie 'für i in der Liste verwenden, müssen Sie' list [i] 'nicht verwenden, nur' i' – bakkal

+0

Jeez, jetzt funktioniert es gut. Ich bin immer noch daran gewöhnt:/ Vielen Dank für die Hilfe. Sehr geschätzt. Ich werde es schließen, sobald es mich lässt :) – Muldawg2020

0

g_list[i] % 2 = 0 ist eine Zuweisungsanweisung (und eine illegale, da Sie "einem Operator nicht zuweisen können"). Zuweisungsanweisungen sind in if Anweisungen (nur Ausdrücke) nicht zulässig.

Sie wollen g_list[i] % 2 == 0, die ein logischer Ausdruck ist.

Verwandte Themen