← Назад к вопросам
Какие знаешь управляющие конструкции в Python?
1.0 Junior🔥 131 комментариев
#Python Core
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Управляющие конструкции в Python
Управляющие конструкции позволяют контролировать порядок выполнения кода. В Python основные управляющие конструкции делятся на условные операторы и циклы.
1. Условные операторы
if, elif, else
Основная конструкция для ветвления логики:
age = 18
if age < 13:
print("Ребенок")
elif age < 18:
print("Подросток")
elif age < 65:
print("Взрослый")
else:
print("Пенсионер")
Тернарный оператор
Компактная форма if-else для простых выборов:
age = 18
status = "взрослый" if age >= 18 else "ребенок"
print(status) # взрослый
# Можно вложить
age = 10
status = "ребенок" if age < 13 else "подросток" if age < 18 else "взрослый"
print(status) # ребенок
2. Циклы
Цикл for
Итерирует по элементам последовательности:
# По списку
fruits = ["яблоко", "банан", "апельсин"]
for fruit in fruits:
print(fruit)
# С помощью range()
for i in range(5):
print(i) # 0, 1, 2, 3, 4
for i in range(1, 5): # от 1 до 4
print(i)
for i in range(0, 10, 2): # от 0 до 9, шаг 2
print(i) # 0, 2, 4, 6, 8
# С enumerate()
for index, fruit in enumerate(fruits):
print(f"{index}: {fruit}")
# 0: яблоко
# 1: банан
# 2: апельсин
# По словарю
user = {"name": "Alice", "age": 30, "city": "Moscow"}
for key, value in user.items():
print(f"{key}: {value}")
for key in user.keys():
print(key)
for value in user.values():
print(value)
# По нескольким последовательностям одновременно
names = ["Alice", "Bob", "Charlie"]
ages = [30, 25, 35]
for name, age in zip(names, ages):
print(f"{name}: {age}")
Цикл while
Повторяет блок кода, пока условие истинно:
count = 0
while count < 5:
print(count)
count += 1
# Выведет: 0, 1, 2, 3, 4
# Бесконечный цикл
while True:
user_input = input("Введите exit для выхода: ")
if user_input == "exit":
break
print(f"Вы ввели: {user_input}")
3. Операторы break и continue
break
Прерывает цикл:
for i in range(10):
if i == 5:
break
print(i)
# Выведет: 0, 1, 2, 3, 4
continue
Пропускает текущую итерацию:
for i in range(10):
if i % 2 == 0:
continue
print(i)
# Выведет: 1, 3, 5, 7, 9
else в циклах
Выполняется, если цикл завершился нормально (без break):
for i in range(5):
if i == 10:
break
print(i)
else:
print("Цикл завершился нормально")
# Выведет: 0, 1, 2, 3, 4 и "Цикл завершился нормально"
# С break
for i in range(5):
if i == 3:
break
print(i)
else:
print("Цикл завершился нормально")
# Выведет: 0, 1, 2 (else не выполнится)
4. Обработка исключений
try-except-else-finally
Управляет ошибками и исключениями:
try:
result = 10 / 0
except ZeroDivisionError:
print("Ошибка: деление на ноль")
except ValueError:
print("Ошибка: неверное значение")
except Exception as e:
print(f"Неожиданная ошибка: {e}")
else:
print("Ошибок не было")
print(f"Результат: {result}")
finally:
print("Блок finally выполняется всегда")
with (контекстный менеджер)
Автоматически управляет ресурсами:
with open("file.txt", "r") as f:
content = f.read()
# Файл закроется автоматически даже при ошибке
# Несколько ресурсов
with open("input.txt", "r") as inp, open("output.txt", "w") as out:
for line in inp:
out.write(line.upper())
5. Понимания (Comprehensions)
Компактный синтаксис для создания последовательностей:
# List comprehension
squares = [x**2 for x in range(5)]
print(squares) # [0, 1, 4, 9, 16]
# С условием
evens = [x for x in range(10) if x % 2 == 0]
print(evens) # [0, 2, 4, 6, 8]
# Dict comprehension
user_ages = {"Alice": 30, "Bob": 25, "Charlie": 35}
adult_ages = {name: age for name, age in user_ages.items() if age >= 30}
print(adult_ages) # {"Alice": 30, "Charlie": 35}
# Set comprehension
unique_lengths = {len(word) for word in ["apple", "app", "application"]}
print(unique_lengths) # {3, 5, 11}
# Generator expression
squares_gen = (x**2 for x in range(5))
for square in squares_gen:
print(square)
6. match-case (Python 3.10+)
Структурное сопоставление с образцом:
status_code = 404
match status_code:
case 200:
print("ОК")
case 404:
print("Не найдено")
case 500:
print("Ошибка сервера")
case _:
print("Неизвестный код")
# С условиями
user = {"name": "Alice", "age": 30}
match user:
case {"name": name, "age": age} if age >= 18:
print(f"{name} - взрослый")
case {"name": name}:
print(f"{name} - ребенок")
Сравнение управляющих конструкций:
| Конструкция | Назначение | Особенности |
|---|---|---|
| if-elif-else | Условное ветвление | Может быть много elif |
| Тернарный оператор | Простая условна выборка | Только для 2 вариантов |
| for | Итерация по последовательности | Разные итераторы |
| while | Повторение с условием | Может быть бесконечным |
| try-except | Обработка ошибок | Несколько except |
| with | Управление ресурсами | Автоматическое закрытие |
| Comprehensions | Создание последовательностей | Компактно и быстро |
| match-case | Сопоставление образцов | Требует Python 3.10+ |