← Назад к вопросам

Какие знаешь управляющие конструкции в 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+
Какие знаешь управляющие конструкции в Python? | PrepBro