Weiß was der Code macht aber nicht wieso

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
YourMTTV
User
Beiträge: 7
Registriert: Donnerstag 10. September 2015, 19:30

Hallo,
ich verstehe diesen Code nicht ganz :

Code: Alles auswählen

a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
for me in a: 
    if me % 2 == 0:
        print me

Ich weiß zwar das er mir alle zahlen ausgibt, die gerade sind aber ich weiß nicht wieso.
in der "for" schleife geht er alle zahlen durch und teilt sie dann durch 2. Aber das "me % 2 == 0" in der If klammer heißt doch, dass er eigentlich nur die zaheln ausgeben müsste die durch 2 geteilt null ergeben. oder?
Danke für die aufklärung.
MFG Tom
Zuletzt geändert von Hyperion am Donnerstag 10. September 2015, 21:58, insgesamt 1-mal geändert.
Grund: Code in Code Tags gesetzt
Üpsilon
User
Beiträge: 222
Registriert: Samstag 15. September 2012, 19:23

Das %-Zeichen steht niemals für Division. Hier steht es für Modulo. Das ist der Divisionsrest.
PS: Die angebotene Summe ist beachtlich.
Benutzeravatar
noisefloor
User
Beiträge: 3829
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
dass er eigentlich nur die zaheln ausgeben müsste die durch 2 geteilt null ergeben. oder?
Das würde ja so wie so nur auf Null (0) zutreffen :-) Null durch irgendwas ist null, bei allen anderen Divisionen kannst du nicht null als Ergebnis bekommen.

`zahl % 2 == 0` ist ein Test auf gerade Zahlen, weil wenn `zahl`gerade ist, ist der Rest / Modulo immer null. Entsprechend wäre `zahl % 2 != 0` ein Test auf ungerade Zahlen.

Gruß, noisefloor
BlackJack

@noisefloor: Naja:

Code: Alles auswählen

In [1]: 0 / 0
---------------------------------------------------------------------------
ZeroDivisionError                         Traceback (most recent call last)
<ipython-input-1-b761d17a0499> in <module>()
----> 1 0 / 0

ZeroDivisionError: integer division or modulo by zero

In [2]: 0 / 2
Out[2]: 0

In [3]: 1 / 2
Out[3]: 0
Benutzeravatar
noisefloor
User
Beiträge: 3829
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

ok, mit 0/0 hast du recht - der Rest sind aber das Divisionsverhalten von Python (und anderen Programmiersprachen). Mathematisch ist 1/2 nicht 0.

Abgesehen davon solltest du mal deine Python-Version updaten. Bei mir ist das so:

Code: Alles auswählen

>>> 1/2
0.5
>>> 
;-)

Gruß, noisefloor
BlackJack

@noisefloor: Wieso updaten? Ich habe die neueste 2.7er, ist also aktuell. Die Unicode-Probleme bei der 3.x können sich andere gerne antun. :-P
Antworten