• 1
    Ввод и вывод данных
    • Задачи
  • 2
    Условия
    • Задачи
  • 3
    Цикл for
    • Задачи
  • 4
    Строки
    • Задачи
  • 5
    Цикл while
    • Задачи
  • 6
    Списки
    • Задачи
  • 7
    Двумерные массивы
    • Задачи
  • 8
    Словари
    • Задачи
  • 9
    Множества
    • Задачи
  • 10
    Функции и рекурсия
    • Задачи
  • к

Занятие 3. Цикл for

Уровень сложности:

иконка человека красный иконка человека белая иконка человека зеленая Pythonlib

Задача«Кибербезопасность»

У твоего друга сломался компьютер, и он попросил тебя о помощи. После быстрой диагностики ты обнаружил, что система заражена вирусами. Чтобы отслеживать процесс лечения, ты решил написать небольшую программу.

Программа должна сначала запросить у пользователя, сколько всего вирусов было обнаружено.

Затем она должна имитировать работу антивируса: последовательно "удалять" по одному вирусу, каждый раз сообщая, сколько еще осталось. Когда все вирусы будут удалены, программа должна вывести сообщение о том, что компьютер теперь в безопасности.

Если же пользователь изначально вводит 0 или отрицательное число, программа должна сообщить, что компьютер и так чист и лечение не требуется.

Формат ввода

Начальное количество вирусов на компьютере (целое число).

Формат Вывода

Сообщения о процессе удаления и итоговый результат (строки).

Пример

Ввод

4

Вывод

Удален вирус. Осталось: 3
Удален вирус. Осталось: 2
Удален вирус. Осталось: 1
Удален вирус. Осталось: 0
Все вирусы удалены. Система в безопасности!

Подсказка

Погружение в циклы: for и range()

Цикл for — это один из самых мощных и часто используемых инструментов в Python. Он позволяет вам повторять (или, как говорят программисты, итерировать) определенный блок кода заданное количество раз. Его главная идея — последовательно перебрать элементы из какой-либо коллекции (например, списка чисел, символов в строке и т.д.) и для каждого элемента выполнить одно и то же действие.

Основной синтаксис выглядит так:

for элемент in последовательность:
    # блок кода, который будет повторяться

Здесь последовательность может быть не только числами, но и, например, списком строк или просто строкой.

# Пример итерации по списку
for фрукт in ["яблоко", "банан", "вишня"]:
    print(фрукт)

# Пример итерации по строке
for буква in "Python":
    print(буква)

Генерация последовательностей с range()

Часто нам нужно выполнить код определенное количество раз. Для этого идеально подходит функция range(), которая создает последовательность чисел. Например, range(5) создает последовательность от 0 до 4 (то есть 0, 1, 2, 3, 4).

Объединяя for и range(), мы получаем классическую конструкцию для повторений:

for i in range(число):
    # блок кода

Давайте разберем эту конструкцию:

  • for — это ключевое слово, которое говорит Python, что мы начинаем цикл.
  • i — это переменная-счетчик. На каждом шаге цикла она будет принимать следующее значение из последовательности. Полезный совет: имя переменной может быть любым (i, j, k — это общепринятые соглашения для простых счетчиков), но если вы перебираете что-то конкретное, лучше дать осмысленное имя, например for student in students:.
  • in — ключевое слово, которое связывает переменную-счетчик и последовательность.
  • range(число) — вызов функции, которая создает последовательность целых чисел от 0 до число - 1. Важно помнить, что верхняя граница не включается.
  • Блок кода (с отступом) — это те команды, которые вы хотите выполнить для каждого числа в последовательности.

Практические примеры

Вывод чисел от 0 до 4

for i in range(5):
    print(i)
# вывод: 0
# вывод: 1
# вывод: 2
# вывод: 3
# вывод: 4
  • range(5) создает невидимую для нас последовательность: 0, 1, 2, 3, 4.
  • Цикл for поочередно присваивает переменной i каждое из этих значений.
  • print(i) на каждом шаге печатает текущее значение i.

Повторное выполнение кода 5 раз

for i in range(5):
    print("Привет, мир!")
# вывод: Привет, мир!
# вывод: Привет, мир!
# вывод: Привет, мир!
# вывод: Привет, мир!
# вывод: Привет, мир!
  • range(5) снова создает последовательность 0, 1, 2, 3, 4.
  • Цикл for проходит по каждому из этих чисел, но в данном случае мы не используем значение переменной i внутри цикла. Мы просто используем цикл как счетчик, чтобы выполнить print("Привет, мир!") ровно 5 раз.

Суммирование чисел от 0 до 4

сумма = 0  # 1. Создаем "копилку" для суммы
for i in range(5):
    # 2. На каждом шаге добавляем в копилку текущее число
    сумма += i 
print(сумма) # 3. Показываем, что накопилось в итоге
# вывод: 10
  • сумма = 0 — инициализируем переменную сумма. Это критически важный шаг.
  • range(5) создает последовательность 0, 1, 2, 3, 4.
  • Цикл for проходит по каждому числу. На первом шаге сумма становится 0 + 0 = 0. На втором — 0 + 1 = 1. На третьем — 1 + 2 = 3. На четвертом — 3 + 3 = 6. На пятом — 6 + 4 = 10.
  • сумма += i — это сокращенная и более "пайтоничная" запись для сумма = сумма + i. Она увеличивает значение сумма на текущее значение i.
  • print(сумма) выводит итоговую сумму после того, как цикл полностью завершился.

Гибкость range(): параметры start, stop, step

Функция range() может принимать до трех параметров: start (начало), stop (конец) и step (шаг).

  • range(stop): создает последовательность от 0 до stop - 1.
  • range(start, stop): создает последовательность от start до stop - 1.
  • range(start, stop, step): создает последовательность от start до stop - 1 с шагом step.

Полезный совет: Шаг может быть отрицательным. Это позволяет генерировать последовательности в обратном порядке. В этом случае значение start должно быть больше stop.

  • range(5) -> 0, 1, 2, 3, 4
  • range(2, 6) -> 2, 3, 4, 5
  • range(1, 10, 2) -> 1, 3, 5, 7, 9
  • range(5, 0, -1) -> 5, 4, 3, 2, 1

Что такое инкремент и декремент?

Инкремент — это просто увеличение значения переменной, как правило, на 1. Декремент — это уменьшение значения переменной, как правило, на 1.

В некоторых языках программирования есть специальные операторы ++ и --, но в Python их нет. Вместо этого используются более явные и гибкие операторы присваивания с операцией.

Инкремент в Python: оператор +=

Мы можем легко увеличить значение переменной, используя +=.

число = 5
# Увеличиваем значение переменной на 1
число += 1 
print(число) # выведет 6
  • число = 5 устанавливает начальное значение.
  • число += 1 — это элегантная сокращенная запись для число = число + 1. Она говорит: "возьми текущее значение число, прибавь к нему 1 и запиши результат обратно в число".

Декремент в Python: оператор -=

Аналогично инкременту, для декремента используется оператор -=.

число = 5
# Уменьшаем значение переменной на 1
число -= 1
print(число) # выведет 4
  • число = 5 устанавливает начальное значение.
  • число -= 1 — это сокращение для число = число - 1.

Другие полезные операторы

Этот принцип работает со всеми основными математическими операциями в Python. Вместо числа справа может быть и другая переменная (a += b).

a = 10
a += 5  # Эквивалентно a = a + 5   (a станет 15)
a -= 3  # Эквивалентно a = a - 3   (a станет 12)
a *= 2  # Эквивалентно a = a * 2   (a станет 24)
a /= 4  # Эквивалентно a = a / 4   (a станет 6.0)
a %= 5  # Эквивалентно a = a % 5   (a станет 1.0, остаток от деления 6 на 5)
a //= 3 # Эквивалентно a = a // 3  (a станет 0.0, целочисленное деление 1 на 3)

Ключевые идеи и полезные советы

  • Цикл for создан для перебора элементов в любой последовательности (списки, строки, range и т.д.).
  • Функция range() — ваш главный инструмент для создания последовательностей чисел для циклов. Помните, что она не включает верхнюю границу!
  • Инкремент (+=) и декремент (-=) — это стандартный и предпочтительный способ изменения числовых переменных в Python.
  • Осмысленные имена. Давайте переменным цикла понятные имена (for book in books:), это делает код гораздо более читаемым.
  • Практика — ключ к успеху! Попробуйте написать циклы для решения разных задач: найти сумму четных чисел, вывести таблицу умножения, напечатать лесенку из символов.
main.py
Тест 1
Тест 2
Тест 3
Тест 4
Тест 5
Тест 6
Тест 7
Тест 8
Тест 9
Тест 10
Решение разработчика
# Получаем от пользователя начальное количество вирусов и преобразуем в целое число.
total_viruses = int(input())

# Проверяем, есть ли вообще вирусы.
if total_viruses <= 0:
    # Если вирусов нет (или введено отрицательное число), выводим сообщение, что все в порядке.
    print("Вирусов не обнаружено. Компьютер чист!")
else:
    # Если вирусы есть, запускаем процесс удаления.
    # Используем цикл for с функцией range(), чтобы пройти от начального количества вирусов до 1.
    # range(total_viruses, 0, -1) создает последовательность чисел от total_viruses до 1 с шагом -1.
    for i in range(total_viruses, 0, -1):
        # Внутри цикла выводим сообщение о том, сколько вирусов осталось после "удаления" текущего.
        # i-1, потому что i - это текущее количество, а после удаления останется на один меньше.
        print(f"Удален вирус. Осталось: {i - 1}")
    
    # После того как цикл завершится (все вирусы удалены), выводим финальное сообщение.
    print("Все вирусы удалены. Система в безопасности!")

🎉 Поздравляем! 🎉

Ты отлично справился с задачей! Это был непростой вызов, но ты нашёл правильное решение. Ты на шаг ближе к мастерству в программировании! Продолжай в том же духе, ведь каждый пройденный этап делает тебя ещё сильнее.

AD

Реклама

red-snake blue-snake green-snake

Запускаем ваш код...

Помощник ИИ

Привет! Я твой помощник по программированию. Задавай любые вопросы по Python, я могу рассказать о функциях, методах, обьяснить то, что тебе не понятно, а так же о текущей задаче!