On 2008-05-11, John Machin <[EMAIL PROTECTED]> wrote: >> "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? > > Try doing it using %3 and %5 only once each.
for i in xrange(101): print (("","Fizz")[i%3==0] + ("","Buzz")[i%5==0]) or str(i) His is better though, since it's more obvious what's intended. Here's one that's less opaque for i in xrange(101): s = "" if i%3 == 0: s += "Fizz" if i%5 == 0: s += "Buzz" if s: print s else: print i There are dozens of other ways to do it. -- Grant Edwards grante Yow! ... or were you at driving the PONTIAC that visi.com HONKED at me in MIAMI last Tuesday? -- http://mail.python.org/mailman/listinfo/python-list