Logo
Книга для начинающих
ВходРегистрация
/
Программирование
/
Курс Python
/

Цикл for и функция range

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. Объявить нейтральный элемент агрегации (пустая строка)
  2. Использовать цикл с числами от 1 до n
  3. Проверять число на условия деления
  4. Результат каждой итерации добавить в итоговый результат с помощью пробела.
Коммерческий опыт и Трудоустройство

Команда проекта находится в телеграм-сообществе. Там можно задать любой вопрос и повлиять на проект

Нашли ошибку? Есть что добавить? Пулреквесты приветствуются
/
Программирование
/
Курс Python
/

Цикл for и функция range

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. Объявить нейтральный элемент агрегации (пустая строка)
  2. Использовать цикл с числами от 1 до n
  3. Проверять число на условия деления
  4. Результат каждой итерации добавить в итоговый результат с помощью пробела.
Коммерческий опыт и Трудоустройство

Команда проекта находится в телеграм-сообществе. Там можно задать любой вопрос и повлиять на проект

Нашли ошибку? Есть что добавить? Пулреквесты приветствуются
← ПредыдущийСледующий →
← ПредыдущийСледующий →
← ПредыдущийСледующий →

Ваше упражнение проверяется по этим тестам

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

waiting_clock
← ПредыдущийСледующий →