2016-11-08 6 views
0

Ich habe versucht, diese -If-Anweisung mit Modulo-Operator

x=[2,3,4,7,9] 
count=0 
for i in x: 
    if i%2: 
    count=count+1 
print count 

warum die Graf 3 ist statt 2, wie i%2 ist satusfiying nur für "2 und 4"?

+3

die Python Konsole öffnen und tun '4% 2', was ist das Ergebnis? Dann mach '3% 2', was ist das Ergebnis? Welches der Ergebnisse wäre nun "wahr"? Der Modulo-Operator gibt den * Rest * nach einer Division zurück. Wenn die Division gerade ist (wie in "4% 2"), dann gibt es keinen Rest, das Ergebnis ist "0". –

Antwort

2

Der Modul 2 über 2 ist Null:

>>> 2 % 2 
0 

So 2 % 2 produziert 0, was ein falscher Wert ist, und damit die if Aussage nicht Spiel.

Auf der anderen Seite ist der Modul von 3 über ein bis ist:

>>> 3 % 2 
1 

1 ist eine von Null verschiedene ganze Zahl ist, so wahr betrachtet.

Mit anderen Worten, der if i%2: Test entspricht ungerade Zahlen, nicht einmal. Es gibt 3 ungerade Zahlen in deiner Liste.

Denken Sie daran, Modul gibt Ihnen die Rest einer Abteilung. 2 und 4 können sauber durch 2 geteilt werden, so dass kein Rest vorhanden ist. Der if Test prüft auf einen Rest.

0

Wenn der boolesche Ausdruck true ergibt (es kann ein beliebiger Wert ungleich null sein), wird der if-Block ausgeführt.

Sie erreichen können alle geraden Anzahl von Code Aktualisierung zählt wie folgt zu erhalten:

x=[2,3,4,7,9] 
count=0 
for i in x: 
    if i%2 > 0 : 
    count=count+1 
print count