Paul Rubin wrote:
> Steve Holden <[EMAIL PROTECTED]> writes:
>> You'd be worth more if you'd used elif and omitted the continue
>> statements, but for a first solution it's acceptable.
>>
>> For better readability I'd have used
>>      if i % 5 == 0
> 
> I think I'd be more concerned about getting rid of the i%15 test.
> What if a few more words get added?
> 
>     def fizzbuzz(n):
>         words = ((3, 'Fizz'), (5, 'Buzz'), (7, 'Jazz'), (11, 'Pizzazz'))
>         r = ''.join(b for a,b in words if n%a == 0)
>         return r or str(n)
> 
>     for i in xrange(1,101):
>         print fizzbuzz(i)

I think that this is somewhat of an over-interpretation of the 
specification.

1. This doesn't act according to the specification if you add, for 
example, (2, 'Zonk'). Now 30 gives 'ZonkFizzBuzz' and not 'FizzBuzz' 
according to the specification.

2. What if additional words don't necessarily follow the pattern you 
infer? Nothing in the specification disallows adding (30, 'Whammo').

So, I would keep my original explicit testing:

def fizzbuzz(n):
   words = ((30, 'Whammo'), (15, 'FizzBuzz'),
            (5, 'Fizz'), (3, 'Buzz'), (2, 'Zonk'))
   for k,v in words:
     if not k % n:
       return v
   return n

for i in xrange(1,101):
   print fizzbuzz(i)




James
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to