Избегайте ZeroDivisionError внутри функции - PullRequest
1 голос
/ 18 мая 2019

У меня есть функция, которую я пытаюсь настроить, чтобы избежать ZeroDivisionError. Несколько методов, которые я попробовал, не сработали, и я ищу любую помощь.

Я уже пытался добавить следующее в мой код:

try:
 try:
 raise Exception("0")

Однако это не работает, и я не уверен, что еще я могу добавить.

def complexDivide(list_of_numbers, index):
    denom = list_of_numbers[index]
    return [easyDivide(item, denom) for item in
        list_of_numbers]

def easyDivide(item, denom):
    return item / denom

complexDivide ([0, 2, 4], 0)

Цель состоит в том, чтобы добавить что-то в код, который выдает список [0, 0, 0] при вызове complexDivide.

Ответы [ 2 ]

2 голосов
/ 18 мая 2019

Если вы хотите, чтобы результат деления на ноль был равен нулю, сделайте так:

def easyDivide(item, denom):
    return 0 if denom == 0 else item / denom

Может быть быстрее принять решение один раз в complexDivide вместо easyDivide:

def complexDivide(list_of_numbers, index):
    denom = list_of_numbers[index]
    if denom == 0:
        return [0] * len(list_of_numbers)
    return [easyDivide(item, denom) for item in
        list_of_numbers]
0 голосов
/ 18 мая 2019

Вы можете изменить функцию complex_divide на:

def complex_divide(list_of_numbers, index):
    denominator = list_of_numbers[index]

    if denominator != 0:
        return [item / denominator for item in list_of_numbers]

    return [0 for _ in list_of_numbers]

easy_divide функция может быть пропущена.

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