do you fail at FizzBuzz? simple prog test

Ivan Illarionov ivan.illarionov at gmail.com
Sun May 11 00:39:30 EDT 2008


On Sun, 11 May 2008 04:26:10 +0000, Ivan Illarionov wrote:

> On Sat, 10 May 2008 18:12:37 -0700, globalrev wrote:
> 
>> http://reddit.com/r/programming/info/18td4/comments
>> 
>> claims people take a lot of time to write a simple program like this:
>> 
>> 
>> "Write a program that prints the numbers from 1 to 100. But for
>> multiples of three print "Fizz" instead of the number and for the
>> multiples of five print "Buzz". For numbers which are multiples of both
>> three and five print "FizzBuzz".
>> 
>> for i in range(1,101):
>>     if i%3 == 0 and i%5 != 0:
>>         print "Fizz"
>>     elif i%5 == 0 and i%3 != 0:
>>         print "Buzz"
>>     elif i%5 == 0 and i%3 == 0:
>>         print "FizzBuzz"
>>     else:
>>         print i
>> 
>> 
>> is there a better way than my solution? is mine ok?
> 
> ['%s%s' % (not i%3 and 'Fizz' or '', not i%5 and 'Buzz' or '')
>  or str(i) for i in xrange(1, 101)]
> 
> -- Ivan

or, more correctly, if you actually need to "print":

sys.stdout.write('\n'.join('%s%s' % 
    (not i%3 and 'Fizz' or '', not i%5 aBuzz' or '') 
    or str(i) 
    for i in xrange(1, 101)))

-- Ivan



More information about the Python-list mailing list