Как я могу заставить этот алгоритм возвращать целые числа при выполнении операции деления? - PullRequest
1 голос
/ 09 октября 2019

Этот алгоритм возвращает значения в числах с плавающей запятой. Кто-нибудь может предложить изменения, необходимые для того, чтобы он возвращал только целые числа / значения?

def zero(f = None): return 0 if not f else f(0)
def one(f = None): return 1 if not f else f(1)
def two(f = None): return 2 if not f else f(2)
def three(f = None): return 3 if not f else f(3)
def four(f = None): return 4 if not f else f(4)
def five(f = None): return 5 if not f else f(5)
def six(f = None): return 6 if not f else f(6)
def seven(f = None): return 7 if not f else f(7)
def eight(f = None): return 8 if not f else f(8)
def nine(f = None): return 9 if not f else f(9)

def plus(y): return lambda x: x+y
def minus(y): return lambda x: x-y
def times(y): return lambda  x: x*y
def divided_by(y): return lambda  x: x/y

Пример:

one(divided_by(four())) 

Возвращает 0,25, но я хочу, чтобы он возвращал 0 без использования оператора этажа.

Ответы [ 2 ]

1 голос
/ 09 октября 2019

Если вы не можете использовать оператор этажа, то это должно сделать это:

def integer_division(x, y):
    result = 0
    while x >= y:
        x -= y
        result += 1
    return result


def divided_by(y): return lambda x: integer_division(x, y)

print(divided_by(2)(5), divided_by(2)(4), divided_by(3)(9), divided_by(3)(5), divided_by(3)(7))

Выход

2 2 3 1 2

Или рекурсивно:

def integer_division(x, y):
    return 1 + integer_division(x - y, y) if x >= y else 0
1 голос
/ 09 октября 2019

, если вы имеете в виду, что absolute value является целочисленной частью, вы можете использовать целочисленное деление вместо обычного деления. Например, как предложено в комментариях @Daniel, вы можете заменить x/y на x//y.

Кроме того, поскольку у вас есть положительные числа, вы можете использовать вместо numpy.fix. Следовательно, это будет numpy.fix(x/y).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...