Программа, печатает числа от 1 до 100, но если число кратно трем вместо числа выводит "Fizz", если число кратно пяти выводит "Buzz". Если число одновременно кратно и трем и пяти - "FizzBuzz".
Python 2
Если хочется немного оптимизировать, можно заменить range на xrange, тогда не будет создаваться список из исходных чисел. В python 3 range это и есть xrange.
В Python 3 нужно вызывать print как функцию
В таком решении дублируется проверка кратности трем и пяти - мы проверяем на кратность 15-ти, то есть трем и пяти одновременно. Также мы используем оператор (или функцию) вывода четыре раза. Этого можно избежать, используя конкатенацию строк.
В таком варианте нет лишней операции получения остатка от деления, но есть проверка на пустоту строки и конкатенация строк.
Python 2
for i in range(1, 101): # последнее число исключается из цикла if i % 15 == 0: print 'FizzBuzz' elif i % 3 == 0: print 'Fizz' elif i % 5 == 0: print 'Buzz' else: print i
Если хочется немного оптимизировать, можно заменить range на xrange, тогда не будет создаваться список из исходных чисел. В python 3 range это и есть xrange.
В Python 3 нужно вызывать print как функцию
for i in range(1, 101): if i % 15 == 0: print('FizzBuzz') elif i % 3 == 0: print('Fizz') elif i % 5 == 0: print('Buzz') else: print(i)
В таком решении дублируется проверка кратности трем и пяти - мы проверяем на кратность 15-ти, то есть трем и пяти одновременно. Также мы используем оператор (или функцию) вывода четыре раза. Этого можно избежать, используя конкатенацию строк.
for i in range(1, 101): s = '' if i % 3 == 0: s = 'Fizz' if i % 5 == 0: s += 'Buzz' if not s: s = str(i) print s
В таком варианте нет лишней операции получения остатка от деления, но есть проверка на пустоту строки и конкатенация строк.