5.3. Алгоритмические конструкции
Раздел 5. Основы алгоритмизации и программирования (5 часов)
Ветвление (if-elif-else)
Условный оператор if
if условие:
группа_операторов_1
else:
группа_операторов_2
Если условие истинно (True), выполняется блок после if. Иначе — блок после else.
Пример:
x = int(input('Введите число: '))
if x > 0:
print('Положительное')
elif x < 0:
print('Отрицательное')
else:
print('Ноль')
Неполная форма (без else):
if x % 2 == 0:
print(x, '— чётное число')
Логические операторы в условиях:
| Оператор | Описание | Пример |
|---|---|---|
and | И (оба условия истинны) | x > 0 and x < 100 |
or | ИЛИ (хотя бы одно истинно) | x == 0 or x == 1 |
not | НЕ (отрицание) | not (x > 0) |
Каскадное ветвление elif:
Когда нужно проверить несколько условий последовательно:
mark = int(input('Оценка: '))
if mark == 5:
print('Отлично')
elif mark == 4:
print('Хорошо')
elif mark == 3:
print('Удовлетворительно')
else:
print('Неудовлетворительно')
Вложенные ветвления
Внутри условного оператора могут находиться любые операторы, включая другие условные:
a = float(input('Введите a: '))
b = float(input('Введите b: '))
c = float(input('Введите c: '))
d = b * b - 4 * a * c
if d < 0:
print('Корней нет')
else:
if d == 0:
x = -b / 2 / a
print('Корень уравнения x =', round(x, 4))
else:
x1 = (-b + d**0.5) / 2 / a
x2 = (-b - d**0.5) / 2 / a
print('Корни уравнения:')
print('x1 =', round(x1, 4))
print('x2 =', round(x2, 4))
Цикл for (со счётчиком)
Используется, когда известно количество повторений.
for i in range(N):
тело_цикла
Функция range():
| Вызов | Генерирует числа | Количество |
|---|---|---|
range(5) | 0, 1, 2, 3, 4 | 5 чисел |
range(2, 6) | 2, 3, 4, 5 | 4 числа |
range(1, 10, 2) | 1, 3, 5, 7, 9 | 5 чисел (с шагом 2) |
range(10, 0, -1) | 10, 9, 8, …, 1 | 10 чисел (обратный отсчёт) |
range(0) | (пусто) | 0 чисел |
Примеры:
# Сумма чисел от 1 до 100
s = 0
for i in range(1, 101):
s = s + i
print('Сумма:', s) # 5050
# Вывод чётных чисел от 2 до 20
for i in range(2, 21, 2):
print(i, end=' ')
# Результат: 2 4 6 8 10 12 14 16 18 20
Цикл while (с предусловием)
Выполняется, пока условие истинно. Проверка условия — перед каждым повторением.
while условие:
тело_цикла
Пример:
i = 1
while i <= 5:
print(i)
i += 1
# Результат: 1 2 3 4 5
Алгоритм Евклида (НОД):
a = int(input('a = '))
b = int(input('b = '))
while a != b:
if a > b:
a = a - b
else:
b = b - a
print('НОД =', a)
Цикл повторяется, пока a ≠ b. На каждом шаге большее число уменьшается на меньшее.
Цикл с постусловием (while True + break)
В Python нет отдельного цикла с постусловием (как repeat-until в других языках), но его можно организовать с помощью while True и оператора break:
while True:
тело_цикла
if условие_выхода:
break
Пример — подсчёт цифр в числе:
n = int(input('Введите число: '))
k = 0
while True:
n = n // 10
k += 1
if n == 0:
break
print('Количество цифр:', k)
Пример — обработка последовательности:
k = 0
a = int(input('Число (или 0 для окончания): '))
while True:
if a == 0:
break
if a % 10 == 3:
k += 1
a = int(input('Число (или 0 для окончания): '))
print('Числа, оканчивающиеся на 3:', k)
Вложенные циклы
Цикл может находиться внутри другого цикла:
# Таблица умножения
for i in range(1, 10):
for j in range(1, 10):
print(f'{i*j:4d}', end='')
print()
Практические задачи
🧪 Задание 1. Выполните алгоритм мысленно
s = 0
for i in range(1, 6):
s = s + i
print(s)
Чему равно s?
🧪 Задание 2. Определите результат
n = 12345
k = 0
while n > 0:
n = n // 10
k += 1
print('k =', k)
🧪 Задание 3. Найдите ошибку
В этом коде бесконечный цикл. Как его исправить?
i = 1
while i <= 5:
print(i)
🧪 Задание 4. Напишите программу
Напишите программу, которая выводит все числа от 1 до 50, делящиеся на 3, но не делящиеся на 5.