Рубрики
Без рубрики

Python Coding Challenge – Modulo Оператор

В этом Python Coding Code Challenge Ваша цель – реализовать оператор модуля (%) для себя, без использования дивизии или самого оператора%.

Автор оригинала: Robin Andrews.

В этом Python Coding Code Challenge Ваша цель – реализовать оператор модуля ( % ) для себя, без использования подразделения или % сам оператор. Мы будем рассматривать только позитивные целые числа здесь, хотя, хотя всеми средствами идут вперед и создать версию, которая может обрабатывать негативные.

Иногда цель состоит в том, чтобы получить что-то сделать, и поэтому мы используем существующие инструменты, доступные для этого, но в других случаях цель – это отличается – возможно, мы хотим понять что-то лучшее, или даже просто наслаждаться острым ощущением решения проблемы для себя, Зная, что при этом мы добавляем в нашу личную базу данных опыта, что делает нас лучшими программистами.

Сегодняшняя проблема заключается в реализации Оператор по модулю Как будто он уже не существует.

Оператор Modulo используется в программировании Python, когда вам нужно найти оставшуюся часть целочисленного подразделения. Это подходит во многих важных алгоритмах и представлена символом % Отказ % Оператор дает результат деления числа слева от символа по номеру справа и сохраняя остаток.

Для подробного урока на модульском операторе, в комплекте с кодом Python, рабочими листами и решениями, проверьте мой ресурс оператора Modulo.

  • Урок эксплуатации модуля и рабочий лист £ 12,00 купить сейчас

Прежде чем застрять в раствор в Python, может быть хорошая идея, чтобы вы действительно понять, как оператор модуля работает, пробуя несколько примеров на бумаге. Затем внимательно подумайте о своем плане атаки, возможно, сделав несколько баллов/пулевых пунктов.

Оператор Python Modulo Challenge

Вот острую и некоторые основные тесты, чтобы начать работу, как только вы думаете, что вы готовы реализовать ваше решение в Python:

def modulo2(a, b):
    """
    Returns a % b without using division or modulo operator.
    a, b must be integers. a must be >= 0 and b must be > 0.
    """
    pass


assert modulo2(20, 6) == 2
assert modulo2(0, 6) == 0
assert modulo2(123, 10) == 3

Решение оператора Python Modulo

Вот потенциальное решение. Ваш вполне может быть совсем другим, но если он пройдет тесты, это, вероятно, в порядке (хотя, конечно, стоит добавить еще несколько тестов).

def modulo2(a, b):
    """
    Returns a % b without using division or modulo operator.
    a, b must be integers. a must be >= 0 and b must be > 0.
    """
    while a >= b:
        a -= b
        print(f"a: {a}, b: {b}")  # For debugging
    return a

Улучшение решения

Одна вещь, которую мы можем сделать, чтобы улучшить решение, это добавить некоторую проверку. С А и B должны быть целыми числами и А должно быть > = 0 и B должно быть > 0 Мы можем изменить программу для повышения ошибки, если эти условия не выполнены. Однако использование простых утверждающих утверждений больше не является вариантом для тестирования этого типа ввода.

def modulo2(a, b):
    """
    Returns a % b without using division or modulo operator.
    a, b must be integers. a must be >= 0 and b must be > 0.
    """
    if not(type(a) is int and type(b) is int):
        raise ValueError("a and b must both be integers.")
    if not(a >= 0 and b > 0):
        raise ValueError("a must be >= 0 and b must be > 0.")
        return False

    while a >= b:
        a -= b
        print(f"a: {a}, b: {b}")  # For debugging
    return a


assert modulo2(20, 6) == 2
assert modulo2(0, 6) == 0
assert modulo2(123, 10) == 3

# Testing for ValueError requires a testing framework
print(modulo2(-10, 2))  # Expect ValueError

Я надеюсь, что вы нашли эту проблему интересным. Счастливые вычисления!