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

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

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

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

Задача«Умный будильник»

Вы — разработчик популярного мобильного приложения "Умный будильник". После последнего обновления вы хотите быстро оценить реакцию пользователей, проанализировав их оценки в магазине приложений. Оценки ставятся по 5-звёздочной шкале. Вы решили считать отзывы с оценкой 4 или 5 звёзд положительными, а отзывы с оценкой 1, 2 или 3 звезды — отрицательными.

Напишите программу, которая сначала запрашивает общее количество отзывов для анализа. Затем программа должна в цикле запросить оценку для каждого отзыва (целое число от 1 до 5). После ввода всех оценок программа должна посчитать и вывести на экран общее количество положительных и отрицательных отзывов.

Формат ввода

Первая строка: Общее количество отзывов для анализа (целое число).
Последующие строки: Оценка для каждого отзыва (целое число от 1 до 5), каждая на новой строке.

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

Первая строка: Итоговое количество положительных отзывов (текст и целое число).
Вторая строка: Итоговое количество отрицательных отзывов (текст и целое число).

Пример

Ввод

5
5
1
4
2
3

Вывод

Положительных отзывов: 2
Отрицательных отзывов: 3

Подсказка

Основы цикла for

Цикл for в Python — это ваш основной инструмент для перебора элементов в любой последовательности. Представьте, что у вас есть коробка с разными предметами. Цикл for позволяет вам брать по одному предмету, что-то с ним делать и переходить к следующему, пока предметы в коробке не закончатся.

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

Синтаксис:

for элемент in последовательность:
    # блок кода, который будет выполняться для каждого элемента
    # ВАЖНО: этот блок должен иметь отступ!

Здесь элемент — это временная переменная, которой на каждой итерации присваивается очередное значение из последовательности. Вы можете назвать эту переменную как угодно, но лучше выбирать осмысленное имя (например, фрукт для списка фруктов или буква для строки).

Итерация по списку

Список — это упорядоченная коллекция элементов. Цикл for пройдет по нему от первого элемента до последнего.

фрукты = ['яблоко', 'банан', 'вишня']
for фрукт in фрукты:
    print(фрукт)

Вывод:

яблоко
банан
вишня

Итерация по строке

Строка — это, по сути, последовательность символов. Поэтому цикл for может так же легко перебирать и её.

слово = "Python"
for буква in слово:
    print(буква)

Вывод:

P
y
t
h
o
n

Управление циклом: break и continue

Иногда вам не нужно проходить весь цикл до конца. Для этого существуют специальные операторы.

Оператор break

Оператор break используется для немедленного и полного завершения цикла. Как только программа встречает break, она тут же выходит из цикла и продолжает выполнение со следующей строки кода после него.

Полезный совет: break незаменим, когда вы что-то ищете. Как только вы нашли то, что искали, нет смысла продолжать поиск.

Пример: У нас есть список чисел, и мы хотим найти первое четное число и остановить выполнение цикла, как только оно будет найдено.

numbers = [1, 3, 5, 6, 7, 9, 10]
for num in numbers:
    if num % 2 == 0:  # Проверка на четность
        print(f"Найдено первое четное число: {num}")
        break  # Немедленно выходим из цикла
print("Цикл завершен.")

Вывод:

Найдено первое четное число: 6
Цикл завершен.

Обратите внимание, что числа 7, 9 и 10 не были проверены, так как цикл был прерван на числе 6.

Оператор continue

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

Полезный совет: continue очень удобен для "фильтрации" данных внутри цикла. Если текущий элемент вам не подходит по какому-то критерию, вы просто пропускаете его и переходите к следующему.

Пример: У нас есть список чисел, и мы хотим вывести все числа, кроме четных.

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for num in numbers:
    if num % 2 == 0:  # Проверка на четность
        continue  # Если число четное, пропускаем print() и идем к следующему числу
    print(num)

Вывод:

1
3
5
7
9

Когда num было равно 2, 4, 6 и т.д., условие if выполнялось, continue пропускал команду print(num), и цикл сразу начинал новую итерацию.

Разница между break и continue в двух словах

  • break: "Стоп, машина!". Полностью останавливает цикл.
  • continue: "Этот не подходит, давай следующего!". Пропускает только текущий шаг.

Блок else в цикле for

Цикл for может иметь необязательный блок else. Этот блок выполняется только в том случае, если цикл завершил все свои итерации естественным образом, то есть не был прерван оператором break.

Полезный совет: Это очень мощный инструмент для поисковых задач. Блок else позволяет легко обработать ситуацию, когда поиск завершился, но ничего не было найдено.

Пример 1: Цикл завершился нормально

for число in range(3):
    print(число)
else:
    print("Цикл завершен без прерываний.")

Вывод:

0
1
2
Цикл завершен без прерываний.

Пример 2: Цикл прерван оператором break

for число in range(3):
    if число == 1:
        print("Нашли 1, прерываем цикл.")
        break
    print(число)
else:
    # Этот блок не выполнится, так как был break
    print("Цикл завершен без прерываний.")

Вывод:

0
Нашли 1, прерываем цикл.

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

Сумма всех чисел в списке

Это классическая задача для понимания работы с циклом и накопления результата.

числа = [1, 2, 3, 4, 5]
сумма = 0  # Инициализируем переменную для хранения суммы ДО цикла
for число in числа:
    сумма += число # На каждой итерации добавляем текущее число к общей сумме
print(f'Сумма: {сумма}')  # Выводим итоговый результат ПОСЛЕ цикла

Вывод: Сумма: 15

Полезный совет: Хотя этот способ отлично демонстрирует работу цикла, в реальном коде для нахождения суммы элементов списка лучше использовать встроенную функцию sum(): print(sum(числа)). Это короче и эффективнее.

Поиск максимального числа в списке

Здесь мы предполагаем, что первый элемент является максимальным, а затем в цикле сравниваем его со всеми остальными.

числа = [1, 7, 3, 9, 5]
максимальное = числа[0] # Принимаем первый элемент за временный максимум
for число in числа:
    if число > максимальное: # Если находим число больше нашего максимума...
        максимальное = число # ...то обновляем максимум
print(f'Максимальное: {максимальное}')

Вывод: Максимальное: 9

Полезный совет: Как и в случае с суммой, в Python есть встроенная функция max() для этой задачи: print(max(числа)). Знание этих функций экономит время, но понимание алгоритма их работы с помощью цикла for является ключевым навыком для программиста.

main.py
Тест 1
Тест 2
Тест 3
Тест 4
Тест 5
Тест 6
Тест 7
Тест 8
Тест 9
Тест 10
Решение разработчика
# Спрашиваем у пользователя, сколько всего отзывов нужно обработать.
# Функция input() считывает строку, а int() превращает её в целое число.
total_reviews = int(input())

# Создаем переменные-счетчики для положительных и отрицательных отзывов.
# В начале их значения равны нулю.
positive_reviews_count = 0
negative_reviews_count = 0

# Запускаем цикл for, который повторится столько раз, сколько отзывов указал пользователь.
# range(total_reviews) создает последовательность чисел от 0 до total_reviews-1.
for _ in range(total_reviews):
    # Внутри цикла на каждой итерации запрашиваем оценку очередного отзыва.
    rating = int(input())
    
    # Используем условие if/else для проверки значения оценки.
    # Если оценка 4 или 5, то отзыв считается положительным.
    if rating >= 4:
        # Увеличиваем счетчик положительных отзывов на единицу.
        positive_reviews_count += 1
    else:
        # В противном случае (оценка 1, 2 или 3), отзыв считается отрицательным.
        # Увеличиваем счетчик отрицательных отзывов на единицу.
        negative_reviews_count += 1

# После того как цикл завершится, выводим итоговые результаты.
# f-строки используются для удобного вывода текста вместе со значениями переменных.
print(f"Положительных отзывов: {positive_reviews_count}")
print(f"Отрицательных отзывов: {negative_reviews_count}")

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

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

AD

Реклама

red-snake blue-snake green-snake

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

Помощник ИИ

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