2014-10-07 3 views
0

Я знаю, что этот вопрос задавали часто, но я попытался исправить его своим предложением на другое обсуждение, но это не помогло мне исправить мою проблему. вот мой надрез кодZerodivisionerror в python 2.7

var_list // it is list value passed over from other function 
    temp_var=0.0 
    for for_each in var_list: 
     temp_var= temp_var + for_each       
    # temp_summary = round(float(temp_var)/len(var_list),2) ----(option 1)     
    temp_var= temp_var/float(len(var_list)) ------ (option 2) 

То, что я пытаюсь сделать, это я просто хочу, чтобы добавить все содержимое списка из var_list и разделить его с его длиной, но держать всплывающие окна ошибки говорят «ZeroDivisionError», даже если содержание var_list не равна нулю. Я попробовал отличить обе боковые переменные, но все равно. что мне здесь не хватает?

+2

Вашего var_list пуст. Код работает нормально, если я передаю элементы в var_list. Попробуйте напечатать значение for_each в вашем for-loop. Если он ничего не печатает, я прав. –

+0

@ Vincent Beltman Я проверяю доверие ко мне. –

ответ

3

Возможно, иногда у var_list есть содержание, а иногда и пусто. Вы можете проверить эту теорию, поставив оператор печати прямо перед ошибкой:

print('DEBUG: {}'.format(len(var_list))) 

В любом случае, вы справиться с этой проблемой с помощью try..except:

temp_var = sum(var_list) 
try: 
    temp_var /= len(var_list) 
except ZeroDivisionError: 
    # handle the error 
    temp_var = 0 
+0

Я проверил размер и обработку ошибок, прежде чем опубликовать вопрос, даже если у меня есть 300.0 для temp_var, это означает, что в нем есть список содержимого, но всякий раз, когда я включаю деление, он выдает ошибку. мне нужно импортировать библиотеку? –

+0

Отправьте свой код с помощью отладочной инструкции печати, обработки ошибок и опубликуйте сообщение об ошибке вывода и полной трассировки. – unutbu