Практические задания по if-else в Python для разработчиков

Раздел: Python -> Учебные задачи

Основные задачи на условные операторы if-else

Условные операторы if-else являются базовым инструментом для принятия решений в Python. Они позволяют выполнять разные блоки кода в зависимости от истинности условий. Существует несколько подходов к организации ветвления, каждый из которых имеет свои сильные стороны и ограничения. Далее рассмотрены основные методы с примерами и типичными ошибками.

Классический if-elif-else

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

Это самый читаемый и универсальный способ. Пример: определение категории возраста.

age = 25
if age < 13:
    category = 'ребенок'
elif age < 18:
    category = 'подросток'
elif age < 60:
    category = 'взрослый'
else:
    category = 'пенсионер'
print(category)

алгоритм решения задачи python (алгоритм решения задачи на python)

взрослый

базовые задачи python (базовые задачи python)

Пояснение: условия проверяются последовательно сверху вниз. Первое истинное условие выполняется, остальные игнорируются.

Типичные ошибки:

  • Неверный порядок: если поставить условие age < 60 перед age < 13, то для возраста 10 лет первым будет истинным age < 60, и категория станет 'взрослый'.
  • Пропуск двоеточия после условия или блока else.
  • Использование else с условием – конструкция else if в Python не существует, только elif.

Как избежать: всегда выстраивать условия от более строгих к менее строгим; использовать редактор с подсветкой синтаксиса.

Тернарный оператор (условное выражение)

Как выполнить простой выбор в одной строке?

Тернарный оператор имеет вид value_if_true if condition else value_if_false. Он идеален для простого присваивания, когда ветки короткие.

x = 10
result = 'положительное' if x > 0 else ('отрицательное' if x < 0 else 'ноль')
print(result)

задачи для обучения python (задачи для обучения python)

положительное

задачи на классы в python (задачи на классы в python)

Вложенные тернарные операторы допустимы, но снижают читаемость. Лучше использовать if-elif-else для более чем двух вариантов.

Ошибки:

  • Попытка использовать тернарный оператор для сложной логики с побочными эффектами.
  • Забывание else – синтаксическая ошибка.

Рекомендация: применять только для одной пары веток, избегая вложенности.

Структурное сопоставление match-case (Python 3.10+)

Как красиво обрабатывать несколько конкретных значений?

Оператор match-case сравнивает значение с шаблонами. Он удобен для замены множества elif при проверке равенства.

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

множество python задачи (задачи на множества в python)

Остановка

задачи на модули python (задачи на модули в python)

Шаблоны могут включать объединение (|), захват переменных и распаковку.

Типичные ошибки:

  • Синтаксис старой версии Python – код не запустится на версиях ниже 3.10.
  • Забывание символа подчёркивания _ для default-ветки.
  • Использование match-case для условий с операторами сравнения (>, <) – для этого нужен if внутри case.

Цель: улучшение читаемости при большом количестве проверок констант.

Словарь функций (dispatch dictionary)

Как организовать выбор действия без цепочки if-elif?

Вместо длинного if-elif можно использовать словарь, где ключи – возможные значения, а значения – функции (или лямбды).

def add(a, b): return a + b
def sub(a, b): return a - b
actions = {'+': add, '-': sub}
op = '+'
if op in actions:
    result = actions[op](5, 3)
else:
    result = None
print(result)

задачи на операторы в python (задачи на операторы в python)

8

задачи на последовательности python (задачи на последовательности в python)

Этот подход легко расширяется и быстрее работает при большом количестве случаев.

Ошибки:

  • Отсутствие проверки наличия ключа – вызовет KeyError.
  • Сложность отладки, если функции содержат много кода.

Использование: когда число веток велико и меняется динамически.

Вложенные if-else

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

Вложение if-else позволяет создавать иерархическую логику. Однако излишняя вложенность ухудшает читаемость.

num = 15
if num > 0:
    if num % 2 == 0:
        print('Положительное чётное')
    else:
        print('Положительное нечётное')
else:
    print('Неположительное')

задачи на списки python (задачи на списки в python)

Положительное нечётное

пробелы python задача (задача на пробелы в строке python)

В Python лучше избегать глубокой вложенности (более 2-3 уровней) – вместо этого можно объединить условия через and или вынести логику в отдельные функции.

Ошибки:

  • Путаница в отступах – каждый уровень должен быть строго выровнен.
  • Слишком много уровней вложенности затрудняет понимание.

Совет: использовать составные условия (and, or) или ранний выход из функции.

Использование all() и any() для нескольких условий

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

Функции all() и any() принимают итерируемый объект с булевыми значениями и возвращают True, если все (или хотя бы одно) True соответственно.

ages = [22, 25, 18, 30]
if all(age >= 18 for age in ages):
    print('Все совершеннолетние')
if any(age > 60 for age in ages):
    print('Есть пенсионер')

задачи на if else python (задачи на условные операторы if-else в python)

Все совершеннолетние

Это эффективный способ проверки набора условий без циклов.

Ошибки:

  • Передача пустой последовательности – all([]) возвращает True, any([]) False, что может быть неочевидно.
  • Забывание генератора – нужно передать выражение генератора, а не результат сравнения.

Цель: компактная проверка большого числа условий.

- задача на языке python код (задача по python с кодом)
- логические задачи python (логические задачи на python)
- Python 3 произведение чисел (произведение чисел в python 3)

Дополнительные примеры с if-else

Здесь приведены более сложные и редко встречающиеся в учебниках задачи, демонстрирующие различные аспекты использования условных операторов.

Определение високосного года

Год является високосным, если он делится на 400, или делится на 4, но не на 100. Реализация с if-else:

Пример
year = 2024
if (year % 400 == 0) or (year % 4 == 0 and year % 100 != 0):
    print(f'{year} високосный')
else:
    print(f'{year} не високосный')
2024 високосный

Решение квадратного уравнения

Вычисление корней ax^2+bx+c=0 с проверкой дискриминанта.

Пример
import math
a, b, c = 1, -3, 2
disc = b**2 - 4*a*c
if disc > 0:
    x1 = (-b + math.sqrt(disc)) / (2*a)
    x2 = (-b - math.sqrt(disc)) / (2*a)
    print('Два корня:', x1, x2)
elif disc == 0:
    x = -b / (2*a)
    print('Один корень:', x)
else:
    print('Нет действительных корней')
Два корня: 2.0 1.0

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

Отбор чисел, которые делятся на 3 и больше 10.

Пример
numbers = [12, 9, 15, 7, 18, 3, 21]
filtered = [n for n in numbers if n % 3 == 0 and n > 10]
print(filtered)
[12, 15, 18, 21]

Проверка сложного пароля

Пароль должен содержать не менее 8 символов, хотя бы одну цифру и хотя бы одну заглавную букву.

Пример
password = 'Pass1234'
has_upper = any(c.isupper() for c in password)
has_digit = any(c.isdigit() for c in password)
if len(password) >= 8 and has_upper and has_digit:
    print('Надёжный пароль')
else:
    print('Слабый пароль')
Надёжный пароль

Генератор последовательности с условиями

Генератор, возвращающий 'Fizz' для чисел кратных 3, 'Buzz' для кратных 5, 'FizzBuzz' для кратных 15, иначе само число.

Пример
def fizzbuzz(n):
    for i in range(1, n+1):
        if i % 15 == 0:
            yield 'FizzBuzz'
        elif i % 3 == 0:
            yield 'Fizz'
        elif i % 5 == 0:
            yield 'Buzz'
        else:
            yield i
list(fizzbuzz(16))
[1, 2, 'Fizz', 4, 'Buzz', 'Fizz', 7, 8, 'Fizz', 'Buzz', 11, 'Fizz', 13, 14, 'FizzBuzz', 16]

Задачи на условные операторы if-else в Python - comments

En
задачи на if else python (python)