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(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
