WM. wrote:
# The natural numbers(natnum), under 1000, divisible by 3 or by 5 are to be added together.
natnum = 0
num3 = 0
num5 = 0
cume = 0
# The 'and' is the 15 filter; the 'or' is the 3 or 5 filter.
while natnum <= 999:
    num3 = natnum/3
    num5 = natnum/5
    if natnum - (num3 * 3) == 0 and natnum - (num5 * 5) == 0:
        cume = cume + natnum
    elif natnum - (num3 * 3) == 0 or natnum - (num5 * 5) == 0:
        if natnum - (num3 * 3) == 0:
            cume = cume + natnum
        elif natnum - (num5 * 5) == 0:
            cume = cume + natnum
    natnum = natnum + 1
print cume

My head hurts trying to follow all that logic and expressions. That is a sign of too much code. Let's simplify:

1) no need to initialize num3 or num5
2) replace while with for
3a) replace natnum - (num3 * 3) == 0 with natnum == (num3 * 3)
3b) replact that with not (natnum % 3)
4) use += and -=

for natnum in range(1000):
 if not (natnum % 3 or natnum % 5): # adds 1 if divisible by 3 and/or 5
   cume += 1
 if not natnum % 15: # remove one of the ones if divisible by 15
   cume -= 1

Since the result of not is True (1) or False (0) one can also write
 cume += not (natnum % 3 or natnum % 5)
 cume 1= not (natnum % 15)

An alternative:
for natnum in range(1000):
 if  not natnum % 15:
   pass
 elif not (natnum % 3 or natnum % 5): # adds 1 if divisible by 3 or 5
   cume += 1

This problem was kicked around last month and I did not understand any of the scripts.

That's really unfortunate. Would you for your learning take one of them, tell us what if any parts of it you understand and let us nudge you toward more understanding.


--
Bob Gailer
Chapel Hill NC 919-636-4239

_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to