Синтаксическая ошибка при использовании try: за исключением цикла for для обработки DivideZeroError - PullRequest
0 голосов
/ 29 ноября 2018

Перебирая несколько диктов, я пытаюсь вычислить процент значений для каждого dict, sum_allBlocks и sum_allBounds.Затем я добавляю эти данные в новый dict как список.

Может ли кто-нибудь помочь мне избежать моей ZeroDivideError, которую я получаю всякий раз, когда одно из значений в sum_allBounds равно нулю?Синтаксическая ошибка при добавлении попытки: кроме: внутри цикла for.

#Get Block% by Stand from allstands, add to daily_details as percent_allBlocks

def get_flight_details(stand_data):
    for _key, allstands in stand_data.items():
        daily_details = {}
        divide_allBlocks = ["{0:3.1f}%".format(a / b * 100) for a, b in zip(sum_allBlocks, sum_allBounds)]
        daily_details['percent_allBlocks'] = divide_allBlocks

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

У меня есть это, и, кажется, тоже работает.

try:
    divide_allBlocks = ["{0:3.1f}%".format(a / b * 100) for a, b in zip(sum_allBlocks, sum_allBounds)]
except ZeroDivisionError:
    divide_allBlocks = [0.0 for a, b in zip(sum_allBlocks, sum_allBounds)]
daily_details['percent_allBlocks'] = divide_allBlocks
0 голосов
/ 29 ноября 2018

Это не красиво, но вы можете сделать это.

def get_flight_details(stand_data):
    for _key, allstands in stand_data.items():
        daily_details = {}
        divide_allBlocks = ["{0:3.1f}%".format(a/b*100 if b!=0 else <PUT A DEFAULT VALUE HERE>) for a, b in zip(sum_allBlocks, sum_allBounds)]
        daily_details['percent_allBlocks'] = divide_allBlocks
...