2016-05-26 10 views
-1

Wenn mein Verständnis richtig ist, 5% 5 0. Allerdings sollte gleich, wenn ich diesen Code ausführen:Benutzt ich den Modulo-Operator falsch?

endless = 0 
while endless == 0: 
    n = int(input("Provide a number here: ")) 
    count = 0 
    sum = 0 
    while count < n: 
     if 1+count % 3 == 0 | 1+count % 5 == 0: 
      sum += 1 + count 
     count += 1 
     if count >= n: 
      print(sum) 

Es ist immer 0 zurück, die die + 1 5 impliziert + 1 zählen% count% 3 oder nie gleich 0. Was habe ich vermisst?

EDIT: Ich scheine auch irgendwie grundlegende Mathematik verpasst haben.

Antwort

3

Verwenden Sie kein bitweises ODER, und verwenden Sie paranthesis (operator precedence)!

Versuchen:

(1+count) % 3 == 0 or (1+count) % 5 == 0: 
^  ^  ^^^ ^
1

Der Betreiber Priorität % die gleiche wie / und höher als +, das heißt:

1+count % 3 == 1 + (count % 3) 

die nie 0 sein kann, da Modulo einen Wert zwischen 0 zurück und 2.