Python if i%2?

4 Antworten

Naja, i%2 rechnet i modulo 2 (% => modulo Operator).

Also zu Grundschuldeutsch den Rest der Division von i durch 2.

Bsp.: 6/2 = 3 Rest 0, aber 7%2 = 3 Rest 1, da die 2 nur 3 mal ganz in die 7 passt, bleint 1 übrig. Also 7%2 = 1, d.h. 7 ist ungerade, aber da 6%2==0 ist 6 gerade ;)

Bei n%x kann immer nur etwas zwischen 0 und x-1 rauskommen.

Woher ich das weiß:Studium / Ausbildung – Informatikstudent
for i in range(0,20):
    if i%2 == 0:
       print(i)

Geht alle Zahlen von 0 bis 19 durch und prüft jeweils, ob bei Division durch 2 der Rest 0 bleibt (sie also 2 teilbar sind). Wenn ja, wird die Zahl ausgegeben.

Die gleiche Ausgabe erzeugt der folgende Code:

for i in range(0,20,2):
  print(i)

Allerdings wird hier nicht jede Zahl geprüft, sondern von vornherein mit Schrittweite 2 gearbeitet.

Woher ich das weiß:Berufserfahrung
for i in range(0,20):
    if i% == 0:
    print(i)

So ist der Code nicht korrekt. Wenn Du ihn ausführst wird der Compiler mekern...

Zunächst ein mal muss print(i) mehr eingerückt sein, damit nur die Zahlen ausgegeben werden, für die, die Bedingung erfüllt ist.

Doch die Bedingung ist genau so unvollständig.

i% allein macht kein Sinn. Das ist das selbe wie 2 + =4

Es fehlt eine Zahl.

Modulo ist bereits schön erläutert worden. Nehmen wir an, Du willst alle Zahlen ausgeben, die durch 3 Teilbar sind. Dann lautet der Code:

 for i in range(0,20):
    if i%3 == 0:
        print(i)

Ich bin kein Python Experte, aber für mich macht das ganze keinen Sinn.

Der Modulo Operator % gibt dir eigentlich den Rest beim Teilen durch eine bestimmte Zahl.

Soll heißen, 6%4 = 2, 6%3 = 0 usw.

Warum man hier den Operator verwenden darf ohne anzugeben durch welche Zahl man teilen muss verstehe 8ch nicht.