Практические задания на ветвления в Python: от простого к сложному

Раздел: Python -> Задачи по конкретным темам

Основы ветвления в Python

Ветвления позволяют программе принимать решения в зависимости от условий. Главный инструмент - конструкция if-elif-else. Ниже представлен базовый шаблон, который используется в большинстве задач.

Как реализовать простейшее ветвление с проверкой одного условия?


number = int(input("Введите число: "))
if number > 0:
    print("Число положительное")
else:
    print("Число не положительное")

Python ветвления задания (задания на ветвления в python)

Пользователь вводит число. Если оно больше нуля, выводится одно сообщение, иначе - другое. Отступы обязательны и задают блоки кода. Типичная ошибка - забыть двоеточие после if или else.

Проблема: при вводе нуля программа выводит "не положительное", хотя ноль - нейтральное число. Чтобы различать ноль, требуется добавить дополнительную ветвь.

Каким образом добавить несколько условий с помощью elif?


number = int(input("Введите число: "))
if number > 0:
    result = "положительное"
elif number < 0:
    result = "отрицательное"
else:
    result = "ноль"
print(f"Число {result}")

Ветвь elif позволяет проверить дополнительное условие, не углубляя вложенность. Условия проверяются по порядку, выполняется только первый подходящий блок.

Как использовать тернарный оператор для коротких условий?


age = 20
status = "совершеннолетний" if age >= 18 else "несовершеннолетний"
print(status)

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

Каким образом реализовать выбор из множества вариантов в Python 3.10+?


command = input("Введите команду (start/stop/restart): ")
match command:
    case "start":
        print("Запуск...")
    case "stop":
        print("Остановка...")
    case "restart":
        print("Перезапуск...")
    case _:
        print("Неизвестная команда")

Оператор match-case (структурное сопоставление) удобен для сравнения с константами или шаблонами. Ветка case _ аналогична else. Ошибки: забыть символ подчёркивания в универсальном шаблоне или неправильно согласовать отступы.

Как правильно использовать логические операторы and, or, not?


score = 85
if score >= 90 and score <= 100:
    grade = "Отлично"
elif score >= 75 and score < 90:
    grade = "Хорошо"
elif score >= 60 and score < 75:
    grade = "Удовлетворительно"
else:
    grade = "Неудовлетворительно"
print(grade)

Логические связки позволяют объединять условия. Важно помнить о приоритете: not выполняется раньше and, а and раньше or. Для ясности используют скобки.

Распространённая ошибка - путать and с & (побитовое И) или использовать or вместо and для проверки диапазона: if 0 < x < 10 - это корректная запись цепного сравнения, не требующая and.

Расширенные примеры с пояснениями

Проверка високосного года

Условие високосности: год делится на 4, но не на 100, за исключением годов, делящихся на 400.

Пример

year = int(input("Год: "))
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
    print(f"{year} - високосный")
else:
    print(f"{year} - невисокосный")
Год: 2000
2000 - високосный

Год: 1900
1900 - невисокосный

В решении используется комбинация логических операторов. Скобки группируют части условия, повышая читаемость.

Калькулятор с операциями через match-case

Пример

a = float(input("Введите первое число: "))
b = float(input("Введите второе число: "))
op = input("Операция (+, -, *, /): ")
match op:
    case "+":
        result = a + b
    case "-":
        result = a - b
    case "*":
        result = a * b
    case "/":
        if b == 0:
            print("Деление на ноль невозможно")
        else:
            result = a / b
    case _:
        print("Неизвестная операция")
# Вывод, если result определён
if 'result' in locals():
    print(f"Результат: {result}")
Введите первое число: 10
Введите второе число: 0
Операция (+, -, *, /): /
Деление на ноль невозможно

Вложенное ветвление внутри case обрабатывает деление на ноль. Использование locals() - один из способов проверить, была ли переменная присвоена, но лучше ввести флаг или присвоить result заранее.

Определение времени суток по часу

Пример

hour = int(input("Час (0-23): "))
if 6 <= hour < 12:
    period = "утро"
elif 12 <= hour < 18:
    period = "день"
elif 18 <= hour < 24:
    period = "вечер"
else:  # 0 <= hour < 6
    period = "ночь"
print(f"Сейчас {period}")
Час (0-23): 14
Сейчас день

Цепные сравнения (6 <= hour < 12) делают код компактнее. Границы заданы включительно с одной стороны, исключительно с другой.

Валидация пароля с несколькими условиями

Пример

password = input("Придумайте пароль: ")
if len(password) < 8:
    print("Слишком короткий")
elif not any(char.isdigit() for char in password):
    print("Добавьте хотя бы одну цифру")
elif not any(char.isupper() for char in password):
    print("Нужна заглавная буква")
elif not any(char.islower() for char in password):
    print("Нужна строчная буква")
else:
    print("Пароль принят")
Придумайте пароль: qwerty
Слишком короткий

Придумайте пароль: qwerty123
Добавьте хотя бы одну цифру   (Ошибка в выводе - на самом деле цифра есть, но нет заглавной)
(на самом деле условие про цифру не выполнится, т.к. оно после проверки длины; пароль qwerty123: цифра есть, a заглавной нет, поэтому выйдет сообщение о заглавной)

Каждый elif проверяет одно требование. Как только первое условие нарушено - цикл прерывается. Такой подход позволяет сообщать только о первой ошибке. Для показа всех ошибок нужен другой алгоритм.

Игра «Камень, ножницы, бумага» с использованием вложенных условий

Пример

import random
variants = ["камень", "ножницы", "бумага"]
player = input("Выберите (камень/ножницы/бумага): ").lower()
computer = random.choice(variants)
print(f"Компьютер выбрал: {computer}")
if player == computer:
    print("Ничья")
elif (player == "камень" and computer == "ножницы") or \
     (player == "ножницы" and computer == "бумага") or \
     (player == "бумага" and computer == "камень"):
    print("Вы победили!")
elif player in variants:
    print("Вы проиграли")
else:
    print("Некорректный ввод")
Выберите (камень/ножницы/бумага): бумага
Компьютер выбрал: камень
Вы победили!

Обратная косая черта позволяет перенести длинное условие на следующую строку. Проверка корректности ввода вынесена в отдельный elif, чтобы не считать проигрышем неизвестное слово.

Задания на ветвления в Python - comments

En
Python ветвления задания (python)