Получение деления на целое и по модулю с нулевой ошибкой - PullRequest
0 голосов
/ 12 апреля 2020

Я получаю Целочисленное деление или по модулю ноль Ошибка.


def getProduct(n): 
    product = 1
    while (n != 0): 
        product = product * (n % 10) 
        n = n // 10
    return product 

def printSubstrings(n):
    s=int(math.log10(n))
    d=(math.pow(10,s))
    k=d
    count = 0
    while n>0:
        while d>0:
            ans=0
            ans = getProduct(n//d)
            if ans%4==0 or ans%2!=0:
                count+=1
            d=int(d/10)
        n = int(n%k)
        k = int(k//10)
        d = k
    print(count)

Простые входы работают нормально, но при вводе больших входных данных выдают ZERODIVISIONERROR на большом входе

10 11903030 2093524 04935049 09024 12242910 109310 1000901 103412 102901 10290191

Ошибка, которую я получаю:

Traceback (most recent call last):
  File "e:/CodeWork/Code Challenge/rough.py", line 271, in <module>
    printSubstrings(num)
  File "e:/CodeWork/Code Challenge/rough.py", line 261, in printSubstrings
    n = int(n%k)
ZeroDivisionError: integer division or modulo by zero

1 Ответ

1 голос
/ 12 апреля 2020

Перед тем, как вычислить n % k, необходимо убедиться, что k != 0 удерживается.

Поскольку оператор модуля % реализован путем нахождения остатка после деления, вы получите ошибку деления на ноль, если попытаетесь вычислить n % 0 для любого целого числа n.

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