2014-02-20 4 views
1

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

from __future__ import division 

наверху моего файла, но не кубики.

мой код:

def convert(anarr): 
    x = 1 
    while(x < len(anarr)): 
     anarr[x] = (anarr[1] - anarr[x])/anarr[1] 
     x += 1 
    print anarr 

главная:

>>> 
>>> 
>>> myarr = [20130101.0,34.75,34.66,34.6,34.6,34.61,34.65,34.69] 
>>> convert(myarr) 
>>> Traceback (most recent call last): 
    File "<pyshell#10>", line 1, in <module> 
    convert(myarr) 
    File "C:\Users\viral\Desktop\python\mapping.py", line 38, in convert 
    anarr[x] = (anarr[1] - anarr[x])/anarr[1] 
ZeroDivisionError: float division by zero 

ответ

1

Поскольку вы изменяете массив, как вы идете, один из элементов становится 0, который вызывает ошибку. В массиве есть последовательные 34.6s, которые имеют процентное изменение 0. Поместите изменения в новый массив и скопируйте позже, если хотите.

+0

спасибо. Я сделал именно это. – user1681664

+0

ОК. Если это полезно, примите мой ответ. Любые вопросы, просто спросите меня. – Booster

1

После anarr [х] = (anarr [1] - anarr [х])/anarr [1] работает первый раз, anarr [1] становится 0.

Таким образом, это не ошибка. Ваше определение функции convert делает это просто так.

Смежные вопросы