Python: Цикл for и функция range
Представьте, что у нас есть ряд чисел от 0 до 9. Мы хотим сложить эти числа. Мы могли бы сделать это так:
sum = 0
i = 0
while i < 10:
sum += i
i += 1
print(sum) # => 45Такой код мы можем переписать на цикл for + range()
sum = 0
for i in range(10):
sum += i
print(sum) # => 45Функция range в Python создает последовательность чисел внутри определенного диапазона. Ее можно использовать в цикле for для контроля количества итераций.
Она поддерживает несколько вариантов вызова. Форма range(stop) создает последовательность от 0 до stop - 1. Форма range(start, stop) создает последовательность от start до stop - 1. Форма range(start, stop, step) создает последовательность из чисел от start до stop - 1 с шагом step.
Наглядно варианты range() выглядят так.
range(1, 5) → 1, 2, 3, 4
range(0, 3) → 0, 1, 2
range(5) → 0, 1, 2, 3, 4
└── начало с 0, конец не включенПример с одним конечным значением мы рассмотрели выше. Рассмотрим другой - распечатаем на экран числа от 1 до 3:
for i in range(1, 4):
print(i)
# => 1
# => 2
# => 3Теперь попробуем вывести числа в обратном порядке
for i in range(3, 0, -1):
print(i)
# => 3
# => 2
# => 1На примерах выше мы видим, что итерация завершается до конечного значения.
Задание
FizzBuzz — одно из самых известных заданий на собеседованиях для начинающих программистов. Его дают, чтобы проверить умение работать с циклами и условиями. Реализуйте функцию fizzbuzz(n), которая возвращает строку с числами от 1 до n.
При этом:
- если число делится на 3, вместо него подставляется слово
"Fizz", - если число делится на 5 — слово
"Buzz", - если делится и на 3, и на 5 — слово
"FizzBuzz".
Все элементы должны соединяться пробелом.
Это задание нередко встречается на собеседованиях для программистов, поэтому полезно уметь его решать.
Пример вызова функции:
fizzbuzz(15)
# 1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzzАлгоритм
Задание можно решить различными способами. Пример алгоритма:
- Объявить нейтральный элемент агрегации (пустая строка)
- Использовать цикл с числами от 1 до n
- Проверять число на условия деления
- Результат каждой итерации добавить в итоговый результат с помощью пробела.
Ваше упражнение проверяется по этим тестам
from solution import fizzbuzz
def test():
assert fizzbuzz(1) == "1"
assert fizzbuzz(3) == "1 2 Fizz"
assert fizzbuzz(5) == "1 2 Fizz 4 Buzz"
assert fizzbuzz(15) == "1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz"Решение учителя откроется через:
20:00
