Алгоритмы с циклами
Циклы while и for в Python. Функция range(). Операторы break и continue. Решение задач на вычисление сумм, произведений, обработку последовательностей.
Алгоритмы с циклами
1. Понятие цикла
Цикл — алгоритмическая конструкция, обеспечивающая многократное выполнение последовательности команд (тела цикла). Циклы позволяют автоматизировать повторяющиеся действия.
2. Цикл while (цикл с предусловием)
Синтаксис
while условие:
тело_цикла
Тело цикла выполняется до тех пор, пока условие истинно. Если условие ложно изначально, тело не выполнится ни разу.
Пример 1: сумма чисел от 1 до N
N = int(input("N = "))
i = 1
s = 0
while i <= N:
s += i
i += 1
print(f"Сумма = {s}")
Пример 2: обработка ввода до корректного значения
age = -1
while age < 0 or age > 120:
age = int(input("Введите возраст (0-120): "))
print(f"Возраст: {age}")
Пример 3: подсчёт количества цифр в числе
n = int(input("Введите число: "))
count = 0
temp = n
while temp > 0:
count += 1
temp //= 10
print(f"Цифр в числе: {count}")
3. Цикл for (цикл с параметром)
Синтаксис
for переменная in последовательность:
тело_цикла
Переменная последовательно принимает значения из последовательности.
Функция range()
| Вызов | Последовательность | Количество элементов |
|---|---|---|
range(n) | 0, 1, 2, ..., n-1 | n |
range(a, b) | a, a+1, ..., b-1 | b-a |
range(a, b, step) | a, a+step, ..., < b | — |
Важно: range() не включает конечное значение (как срез)! Отрицательный шаг даёт убывающую последовательность: range(10, 0, -1) → 10, 9, ..., 1.
Примеры
for i in range(5): # 0, 1, 2, 3, 4
print(i)
for i in range(1, 6): # 1, 2, 3, 4, 5
print(i)
for i in range(2, 11, 2): # 2, 4, 6, 8, 10 (чётные)
print(i)
Типовые задачи с циклом for
Сумма чисел от 1 до N:
n = int(input("N = "))
s = 0
for i in range(1, n + 1):
s += i
print(f"Сумма = {s}")
Таблица умножения:
n = int(input("Таблица умножения на: "))
for i in range(1, 11):
print(f"{n} × {i} = {n * i}")
Факториал:
n = int(input("n = "))
fact = 1
for i in range(1, n + 1):
fact *= i
print(f"{n}! = {fact}")
4. Управление циклом: break и continue
break — немедленный выход из цикла
for i in range(100):
if i * i > 1000:
print(f"Первое число, квадрат > 1000: {i}")
break
continue — пропуск текущей итерации
for i in range(10):
if i % 2 == 0:
continue # пропускаем чётные
print(i) # печатаем только нечётные
5. Вложенные циклы
Цикл может находиться внутри другого цикла — вложенный цикл. Внутренний цикл полностью выполняется на каждой итерации внешнего.
Пример: таблица Пифагора (умножения):
for i in range(1, 11):
for j in range(1, 11):
print(f"{i*j:4}", end="")
print() # перевод строки
6. Выбор между while и for
for— когда количество итераций известно заранее или задаётся диапазономwhile— когда количество итераций заранее неизвестно и зависит от условия, вычисляемого в процессе выполнения
7. Бесконечный цикл
while True:
command = input("> ")
if command == "exit":
break
print(f"Вы ввели: {command}")
Бесконечный цикл обязательно должен содержать условие выхода (break), иначе программа зависнет.
Примеры вопросов из тренажёра
-
Q: Сколько раз выполнится тело цикла: for i in range(5): print(i)?
A: верный ответ — 5
Объяснение: range(5) генерирует значения 0, 1, 2, 3, 4 — всего 5 итераций.
-
Q: Какие числа выведет range(2, 7)?
A: верный ответ — 2, 3, 4, 5, 6
Объяснение: range(a, b) — числа от a до b-1. range(2, 7) = 2, 3, 4, 5, 6 (7 не включается!).
-
Q: Что делает оператор break в цикле?
A: верный ответ — Немедленно выходит из цикла
Объяснение: break немедленно прерывает цикл. Управление передаётся на следующую за циклом инструкцию.
-
Q: Что делает оператор continue в цикле?
A: верный ответ — Пропускает остаток итерации и переходит к следующей
Объяснение: continue пропускает оставшийся код в теле цикла и переходит к следующей итерации.
-
Q: Какие числа выведет: for i in range(10, 0, -3): print(i)?
A: верный ответ — 10, 7, 4, 1
Объяснение: range(10, 0, -3): шаг -3 от 10 вниз, не включая 0 → 10, 7, 4, 1.