Seite 1 von 1

Weiß was der Code macht aber nicht wieso

Verfasst: Donnerstag 10. September 2015, 19:32
von YourMTTV
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

Re: Weiß was der Code macht aber nicht wieso

Verfasst: Donnerstag 10. September 2015, 20:02
von Üpsilon
Das %-Zeichen steht niemals für Division. Hier steht es für Modulo. Das ist der Divisionsrest.

Re: Weiß was der Code macht aber nicht wieso

Verfasst: Freitag 11. September 2015, 06:49
von noisefloor
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

Re: Weiß was der Code macht aber nicht wieso

Verfasst: Freitag 11. September 2015, 09:41
von 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

Re: Weiß was der Code macht aber nicht wieso

Verfasst: Freitag 11. September 2015, 11:40
von noisefloor
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

Re: Weiß was der Code macht aber nicht wieso

Verfasst: Freitag 11. September 2015, 18:28
von 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