Практикум: операторы в задачах на Python

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

Задачи на операторы в Python

В этом разделе разбираются типичные задачи, где применяются различные операторы языка Python. Для каждой задачи предлагается основное решение, альтернативные подходы и разбор возможных ошибок.

Основное решение: простой калькулятор с операторами

Как реализовать калькулятор, который выполняет сложение, вычитание, умножение и деление, используя арифметические операторы?

Используем условные конструкции и операторы сравнения для выбора операции. Оператор = (присваивание) фиксирует результат, а арифметические операторы +, -, *, / выполняют вычисления.

def calculator(a, b, op):
    if op == '+':
        return a + b
    elif op == '-':
        return a - b
    elif op == '*':
        return a * b
    elif op == '/':
        if b == 0:
            return 'Ошибка: деление на ноль'
        return a / b
    else:
        return 'Неизвестная операция'

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

Типичные ошибки: не учитывать деление на ноль, путать строковое представление оператора с символом. При вводе оператора через input() получается строка, поэтому сравнение с символом корректно. Также стоит помнить, что оператор / всегда возвращает число с плавающей точкой, что может быть неожиданно для новичков.

Как проверить, является ли число чётным?

Для проверки чётности используется оператор взятия остатка %. Если остаток от деления на 2 равен нулю, число чётное.

def is_even(n):
    return n % 2 == 0

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

print(is_even(10))  # True
print(is_even(7))   # False

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

Ошибки: сравнение с помощью одного знака равенства = вместо ==. Это приведёт к ошибке синтаксиса в выражении (внутри return допускается только выражение, присваивание там не сработает). Также стоит учитывать, что для отрицательных чисел оператор % ведёт себя специфично, но для чётности это не влияет.

Как найти максимальное из двух чисел?

Используются операторы сравнения > и < вместе с условным оператором. Оператор == проверяет равенство, но в данном примере достаточно простого сравнения.

def max_of_two(a, b):
    if a > b:
        return a
    else:
        return b

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

print(max_of_two(5, 3))  # 5
print(max_of_two(2, 7))  # 7
print(max_of_two(4, 4))  # 4

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

Распространённая ошибка - забыть про случай равенства. В этом решении при a == b возвращается b, что корректно. Если требуется вернуть любое из равных чисел, такой код подходит.

Как проверить, является ли год високосным?

Задача решается с помощью логических операторов and и or. Високосный год делится на 4, но не делится на 100, за исключением годов, делящихся на 400.

def is_leap(year):
    return (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0)

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

print(is_leap(2020))  # True
print(is_leap(1900))  # False
print(is_leap(2000))  # True

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

Типичная ошибка - неправильный порядок условий или пропуск скобок. Без скобок приоритет операторов может привести к неверному результату. Например, year % 4 == 0 and year % 100 != 0 or year % 400 == 0 без скобок эквивалентно (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0), что верно, но лучше ставить скобки явно.

Как проверить чётность числа с помощью побитового оператора?

Альтернативный способ - использовать побитовое И: &. Младший бит числа равен 1 для нечётных и 0 для чётных.

def is_even_bit(n):
    return (n & 1) == 0

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

print(is_even_bit(10))  # True
print(is_even_bit(7))   # False

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

Ошибки: путать побитовое И & с логическим and. В данном контексте подойдёт только &. Также важно помнить, что для отрицательных чисел побитовое представление может отличаться, но в Python младший бит работает аналогично.

Как проверить наличие подстроки в строке с помощью оператора in?

Оператор in возвращает True, если подстрока содержится в строке. Это удобная альтернатива методам find() или index().

def contains_substring(string, sub):
    return sub in string

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

print(contains_substring('hello world', 'world'))  # True
print(contains_substring('hello world', 'Python')) # False

Типичная ошибка - путать оператор in с методом __contains__, но они эквивалентны. Также стоит помнить, что in чувствителен к регистру: 'hello' in 'Hello' вернёт False.

- задачи на функции в python (задачи на функции в python)
- задача на языке python код (задача по python с кодом)
- логические задачи python (логические задачи на python)

Дополнительные примеры использования операторов

Здесь представлены более сложные и неочевидные примеры применения операторов в Python. Каждый пример сопровождается кодом и результатом.

Оператор is и кэширование малых целых

Как проверить, ссылаются ли две переменные на один объект?

Оператор is сравнивает идентичность объектов. В Python для малых целых чисел (-5...256) действует кэширование, поэтому a is b может быть истинным даже для разных литералов.

Пример
a = 256
b = 256
c = 257
d = 257
print(a is b)  # True (кэш)
print(c is d)  # False (выходит за диапазон кэша)
True
False

Ошибка: использовать is вместо == для сравнения значений. is проверяет идентичность, а не равенство.

Оператор walrus (:=) для упрощения кода

Как присвоить значение переменной внутри выражения и сразу его использовать?

Оператор присваивания := (walrus) позволяет выполнять присваивание в составе более крупного выражения, например, в условии цикла.

Пример
def read_and_sum():
    total = 0
    while (line := input()) != '':
        total += int(line)
    return total
# Пример ввода: 10, 20, (пустая строка)
# Вызов read_and_sum() вернёт 30
(результат зависит от ввода)

Ошибка: забыть кавычки при присваивании или использовать обычный = внутри выражения, что синтаксически неверно.

Побитовые флаги для настройки параметров

Как комбинировать несколько логических параметров с помощью побитовых операторов?

Побитовые операторы | (ИЛИ) и & (И) удобны для работы с флагами.

Пример
READ = 1
WRITE = 2
EXECUTE = 4
permissions = READ | WRITE
has_read = permissions & READ  # True
has_exec = permissions & EXECUTE  # False
print(has_read, has_exec)
1 0

Ошибка: перепутать побитовое ИЛИ с логическим or. Для флагов нужны именно побитовые операции.

Тернарный условный оператор

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

Конструкция value_if_true if condition else value_if_false позволяет компактно задать ветвление.

Пример
def is_positive(n):
    return 'positive' if n > 0 else 'non-positive'
print(is_positive(5))
print(is_positive(-3))
positive
non-positive

Ошибка: забыть else или использовать неправильный порядок. Синтаксис: сначала выражение для истины, потом if, потом else.

Разбиение числа на цифры с помощью // и %

Как получить все цифры числа, не преобразуя его в строку?

Комбинация операторов целочисленного деления // и взятия остатка % позволяет последовательно извлекать цифры.

Пример
def digits_of_number(n):
    digits = []
    while n > 0:
        digits.append(n % 10)
        n //= 10
    return digits[::-1]  # разворачиваем, так как извлекали с конца
print(digits_of_number(1234))
[1, 2, 3, 4]

Ошибка: не обработать случай, когда число равно 0. В этом случае цикл не выполнится, и результат будет пустой список. Следует добавить проверку.

Задачи на операторы в Python - comments

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