Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 12

Тема: Как реализовать деление без деления в Питон?

  1. Как реализовать деление без деления в Питон?

    Хей ребята! Возникла необходимость написать код, который бы выполнял деление без использования оператора деления в Питоне. Кто-нибудь сталкивался с подобной задачей? Буду благодарен за любые советы или примеры кода. Особенно интересно, как реализовать это с использованием цикла или рекурсии. Cпасибо!



  2. Ждём вас в нашем чате в Телеграмм ==>> @pythoneer_chat

    А ТАКЖЕ: Канал о Python, статьи и книги ==>>
    @pythoneer_ru

  3. Короч, можно использовать вычитание вместо деления. Вот пример кода:
    Программный код:
    def divide_without_division(dividenddivisor):
        if 
    divisor == 0:
            
    raise ValueError("Деление на ноль невозможно")
        
    quotient 0
        summation 
    abs(dividend)
        while 
    summation >= abs(divisor):
            
    summation -= abs(divisor)
            
    quotient += 1
        
    if (dividend 0) ^ (divisor 0):
            
    quotient = -quotient
        
    return quotient 
    Этот код, типа, использует цикл и вычитание для имитации процесса деления.

  4. Цитата Сообщение от TanyaFire
    Короч, можно использовать вычитание вместо деления. Вот пример кода:
    Программный код:
    def divide_without_division(dividenddivisor):
        if 
    divisor == 0:
            
    raise ValueError("Деление на ноль невозможно")
        
    quotient 0
        summation 
    abs(dividend)
        while 
    summation >= abs(divisor):
            
    summation -= abs(divisor)
            
    quotient += 1
        
    if (dividend 0) ^ (divisor 0):
            
    quotient = -quotient
        
    return quotient 
    Этот код, типа, использует цикл и вычитание для имитации процесса деления.
    Неплохо, чувак! Только не забудь проверить деление на 0, а то выскочит ошибка и все упадет.

  5. Я бы попробовал сделать это через рекурсию. Вот идея:
    Программный код:
    def divide_recursive(dividenddivisorquotient=0):
        if 
    divisor == 0:
            
    raise ValueError("Деление на ноль невозможно")
        if 
    abs(dividend) < abs(divisor):
            return 
    quotient
        
    return divide_recursive(dividend divisordivisorquotient 1)

    result divide_recursive(153)
    print(
    result
    Этот метод использует рекурсию для достижения того же результата.

  6. Цитата Сообщение от MoiraMacTaggert
    Я бы попробовал сделать это через рекурсию. Вот идея:
    Программный код:
    def divide_recursive(dividenddivisorquotient=0):
        if 
    divisor == 0:
            
    raise ValueError("Деление на ноль невозможно")
        if 
    abs(dividend) < abs(divisor):
            return 
    quotient
        
    return divide_recursive(dividend divisordivisorquotient 1)

    result divide_recursive(153)
    print(
    result
    Этот метод использует рекурсию для достижения того же результата.
    Окей, кода понятно и просто, но рекурсия может выходить за пределы рекурсивного лимита если очень много делишь.

  7. А можно еще через битовые операции, если хочется чего-то более замороченного:
    Программный код:
    def bitwise_divide(dividenddivisor):
        if 
    divisor == 0:
            
    raise ValueError("Деление на ноль невозможно")
        
    is_negative = (dividend 0) ^ (divisor 0)
        
    dividenddivisor abs(dividend), abs(divisor)
        
    quotient 0
        
    while dividend >= divisor:
            
    tempmultiple divisor1
            
    while dividend >= (temp << 1):
                
    temp <<= 1
                multiple 
    <<= 1
            dividend 
    -= temp
            quotient 
    += multiple
        
    return -quotient if is_negative else quotient 
    Так можно обойтись без циклов Ис.

  8. Цитата Сообщение от RustyCollins
    А можно еще через битовые операции, если хочется чего-то более замороченного:
    Программный код:
    def bitwise_divide(dividenddivisor):
        if 
    divisor == 0:
            
    raise ValueError("Деление на ноль невозможно")
        
    is_negative = (dividend 0) ^ (divisor 0)
        
    dividenddivisor abs(dividend), abs(divisor)
        
    quotient 0
        
    while dividend >= divisor:
            
    tempmultiple divisor1
            
    while dividend >= (temp << 1):
                
    temp <<= 1
                multiple 
    <<= 1
            dividend 
    -= temp
            quotient 
    += multiple
        
    return -quotient if is_negative else quotient 
    Так можно обойтись без циклов Ис.
    О, битовые операции! Это уже для гуру. Вот это технарь-любитель.

  9. Попробуй через коллекции сделать, например через itertools или numpy. Numpy может ускорить выполнение.

  10. Цитата Сообщение от SilverWolf
    Попробуй через коллекции сделать, например через itertools или numpy. Numpy может ускорить выполнение.
    Да, но numpy тут избыточен, для такого простого примера обычные циклы подойдут лучше.

Страница 1 из 2 12 ПоследняяПоследняя