Практика использования if-else в Python: задачи и ответы
Задания на условный оператор if-else
Как проверить, является ли число чётным или нечётным?
Основной способ: использование оператора остатка от деления %. Если число делится на 2 без остатка, оно чётное.
number = 7
if number % 2 == 0:
print("Число чётное")
else:
print("Число нечётное")задания на if else python (задания на условный оператор if-else в python)
Результат: Число нечётное. Обратите внимание на отступы: блоки if и else должны находиться на одном уровне.
Как записать ту же проверку в одну строку?
Тернарный (условный) оператор позволяет сократить код:
number = 10
result = "чётное" if number % 2 == 0 else "нечётное"
print(result)условные операторы python примеры (условные операторы в python с примерами)
Результат: чётное. Подходит для простых условий, но при сложной логике читаемость страдает.
Типичная ошибка: использование одного знака равенства = вместо == для сравнения. Например, if number % 2 = 0 вызовет синтаксическую ошибку. Также путают оператор присваивания и сравнения.
Проблема: при отрицательных числах остаток от деления может быть отрицательным в некоторых языках, но в Python % возвращает неотрицательный остаток (0 или 1 для чётности). Ошибки не возникает.
Как определить наибольшее из двух чисел?
Используем вложенные условия или просто if-else с логическим выражением:
a, b = 15, 9
if a > b:
max_num = a
else:
max_num = b
print("Максимум:", max_num)
условия на языке python (условные конструкции на языке python)
Результат: Максимум: 15. Переменная max_num сохраняет большее значение.
Как найти максимум без использования if?
Функция max() делает то же самое в одну строку:
max_num = max(a, b)Python команда else (конструкция if-else в python)
Но часто учебные задания требуют написать логику вручную, чтобы понять работу условных конструкций.
Типичная ошибка: забыть обработать случай равенства чисел. Приведённый код корректно присвоит любое из равных чисел, так как условие a > b ложно при равенстве, и выполняется else. Если требуется особое поведение при равенстве, нужно добавить elif.
Как проверить, является ли год високосным?
Правило: год високосный, если делится на 4, но не делится на 100, за исключением годов, кратных 400. Реализуем через цепочку if-elif-else:
year = 2024
if year % 400 == 0:
is_leap = True
elif year % 100 == 0:
is_leap = False
elif year % 4 == 0:
is_leap = True
else:
is_leap = False
print("Високосный?", is_leap)Print if else python (условный оператор в print)
Результат: Високосный? True. Проверка 400 делается первой, чтобы исключить столетия, кратные 400.
Как упростить проверку с помощью одного логического выражения?
Объединяем условия операторами and и or:
is_leap = (year % 400 == 0) or (year % 100 != 0 and year % 4 == 0)
Это более компактная запись, но требует понимания приоритета операторов.
Типичная ошибка: неправильный порядок условий. Например, проверка деления на 4 раньше деления на 100 может дать True для года 1900, который не является високосным. Важно сначала обработать исключение (400) или использовать правильное логическое выражение.
Как написать простой калькулятор с выбором операции?
Используем if-elif-else для обработки разных арифметических действий:
a = 10
b = 3
op = '+'
if op == '+':
res = a + b
elif op == '-':
res = a - b
elif op == '*':
res = a * b
elif op == '/':
if b != 0:
res = a / b
else:
res = "ошибка: деление на ноль"
else:
res = "неизвестная операция"
print(res)
Результат: 13. Внутри обработки деления дополнительная проверка на ноль.
Как организовать калькулятор с помощью словаря функций?
Можно избежать длинной цепочки if с помощью словаря, где ключи - символы операций, а значения - лямбда-функции:
operations = {
'+': lambda x, y: x + y,
'-': lambda x, y: x - y,
'*': lambda x, y: x * y,
'/': lambda x, y: x / y if y != 0 else "деление на ноль"
}
res = operations.get(op, lambda x, y: "неизвестная операция")(a, b)
print(res)
Такой подход легко расширяется добавлением новых операций без изменения логики проверок.
Типичная ошибка: забыть обработать случай деления на ноль или некорректную операцию. В базовом варианте без дополнительной проверки возникнет исключение ZeroDivisionError. В варианте со словарём лямбда-функция может вернуть строку, что нарушает тип результата. Нужно продумать единообразную обработку ошибок.
Как категоризировать возраст (ребёнок, подросток, взрослый, пожилой)?
Используем последовательную проверку с помощью if-elif-else:
age = 17
if age < 13:
category = "ребёнок"
elif age < 18:
category = "подросток"
elif age < 65:
category = "взрослый"
else:
category = "пожилой"
print(category)
Результат: подросток. Важен порядок: сначала проверяются младшие возрасты, чтобы не перекрыть границы.
Как использовать оператор in для категоризации по диапазонам?
Можно разбить возраст на диапазоны с помощью кортежей и проверить принадлежность оператором in:
ranges = {
(0, 12): "ребёнок",
(13, 17): "подросток",
(18, 64): "взрослый",
(65, 120): "пожилой"
}
for (low, high), cat in ranges.items():
if low <= age <= high:
category = cat
break
print(category)
Этот вариант гибче при изменении границ, но длиннее.
Типичная ошибка: не учтено, что возраст может быть отрицательным или слишком большим. В примере выше границы заданы от 0 до 120, но лучше добавить проверку корректности входных данных. Также при использовании диапазонов легко пропустить какое-то значение (например, если возраст 13 не попал в диапазон из-за ошибки в границах).
Расширенные примеры работы с if-else
Как проверить, находится ли точка внутри заданной области (например, прямоугольника)?
Используем вложенные условия и логические операторы. Допустим, прямоугольник задан левым нижним углом (0,0) и правым верхним (10,10). Точка (x,y) находится внутри, если x от 0 до 10 и y от 0 до 10.
x, y = 5, -1
if 0 <= x <= 10 and 0 <= y <= 10:
print("Точка внутри прямоугольника")
else:
print("Точка вне прямоугольника")
Точка вне прямоугольника
Усложнение: добавить проверку на принадлежность границе (если x==0 или x==10 или y==0 или y==10 - точка на границе). Можно использовать цепочку if-elif:
if x < 0 or x > 10 or y < 0 or y > 10:
status = "вне прямоугольника"
elif x == 0 or x == 10 or y == 0 or y == 10:
status = "на границе"
else:
status = "внутри"
print(status)
вне прямоугольника
Как реализовать логику switch-case в Python (до версии 3.10)?
До появления match-case (Python 3.10+) конструкцию switch имитировали с помощью словаря и if-elif. Пример: определить день недели по номеру.
day_num = 3
if day_num == 1:
day_name = "Понедельник"
elif day_num == 2:
day_name = "Вторник"
elif day_num == 3:
day_name = "Среда"
elif day_num == 4:
day_name = "Четверг"
elif day_num == 5:
day_name = "Пятница"
elif day_num == 6:
day_name = "Суббота"
elif day_num == 7:
day_name = "Воскресенье"
else:
day_name = "Неверный номер"
print(day_name)
Среда
Альтернатива с использованием словаря:
weekdays = {1: "Понедельник", 2: "Вторник", 3: "Среда", 4: "Четверг", 5: "Пятница", 6: "Суббота", 7: "Воскресенье"}
day_name = weekdays.get(day_num, "Неверный номер")
print(day_name)
Среда
Словарь работает быстрее при большом количестве вариантов и улучшает читаемость.
Как обработать несколько условий с помощью all() и any()?
Иногда нужно проверить, что все (или хотя бы одно) из нескольких условий истинны. Вместо длинных цепочек and/or можно использовать встроенные функции.
a, b, c = 10, -5, 0
# Проверить, что все числа положительные
if all(x > 0 for x in (a, b, c)):
print("Все числа положительные")
else:
print("Не все числа положительные")
# Проверить, что хотя бы одно число равно нулю
if any(x == 0 for x in (a, b, c)):
print("Есть хотя бы один ноль")
else:
print("Нулей нет")
Не все числа положительные Есть хотя бы один ноль
Такой подход упрощает код при проверке большого числа переменных или элементов списка.
Как использовать if-else для проверки типа данных и выполнения разных действий?
Хотя лучше избегать проверок типов, иногда это необходимо, например, при обработке ввода пользователя.
value = input("Введите число или строку: ")
if value.isdigit():
number = int(value)
if number % 2 == 0:
print("Вы ввели чётное число")
else:
print("Вы ввели нечётное число")
else:
if value.isalpha():
print("Вы ввели слово без цифр")
else:
print("Вы ввели смешанные данные")
В этом примере сначала проверяется, состоит ли строка из цифр (число), затем - из букв, иначе - смешанный ввод. Это демонстрирует вложенные условия и работу с методами строк.
Как реализовать обработку ошибок с помощью if вместо try-except?
Иногда можно избежать исключений, предварительно проверив условия. Например, деление на ноль или доступ к индексу списка.
numbers = [10, 20, 30]
index = 5
if 0 <= index < len(numbers):
print("Элемент:", numbers[index])
else:
print("Индекс за пределами списка")
x, y = 10, 0
if y != 0:
print("Результат деления:", x / y)
else:
print("Деление на ноль не допускается")
Индекс за пределами списка Деление на ноль не допускается
Такой стиль называется LBYL (Look Before You Leap). В некоторых случаях он предпочтительнее, чем EAFP (Easier to Ask for Forgiveness than Permission) с try-except, особенно когда ожидается, что ошибка случается редко.
Как использовать if-else для применения разных формул в зависимости от условия?
Например, расчёт стоимости доставки: если вес меньше 10 кг - тариф 5 руб./кг, иначе - 3 руб./кг, но с фиксированной надбавкой 20 руб.
weight = 15
if weight < 10:
cost = weight * 5
else:
cost = weight * 3 + 20
print("Стоимость доставки:", cost, "руб.")
Стоимость доставки: 65 руб.
Можно также использовать тернарный оператор:
cost = weight * 5 if weight < 10 else weight * 3 + 20
Но для сложных формул лучше сохранять читаемость через полноценные блоки if-else.