объект нетипа не имеет len() в функции без len()

В следующем коде я продолжаю получать ответ, что объект NoneType не имеет len(), но нигде в коде нет функции длины - кто-нибудь знает, что не так?

def constant_pension(salary, save, growth_rate, years):
    if salary<0 or save<0 or save>100 or growth_rate<=-100 or years<=0:  #invalid
        return(None)


    i=0
    fund_list=[]
    old_fund=0
    new_fund=0
    while i<years:
        new_fund=old_fund*(1+growth_rate*.01)+salary*save*.01
        fund_list.append(new_fund)
        old_fund=new_fund
        i=i+1


    return(fund_list)
    pass

person user2906979    schedule 03.11.2013    source источник
comment
Проблема, вероятно, в том, где вызывается функция. (И создавать исключения при неверном вводе!)   -  person Ry-♦    schedule 03.11.2013
comment
Я вызывал его, используя действительный ввод - где может быть проблема в вызове функции?   -  person user2906979    schedule 03.11.2013
comment
Везде используется len. Не могли бы вы показать, где она вызывается, и трассировку стека для ошибки?   -  person Ry-♦    schedule 03.11.2013
comment
Если вам нужна помощь в поиске ошибки, покажите нам трассировку.   -  person Ethan Furman    schedule 03.11.2013
comment
Данная функция работает нормально. Пожалуйста, предоставьте трассировку, предоставленную python, когда он сталкивается с ошибкой.   -  person shad0w_wa1k3r    schedule 03.11.2013
comment
похоже на аналогичную проблему, посмотрите stackoverflow.com/questions/11816844/   -  person Gaurav    schedule 03.11.2013
comment
Вопросы, касающиеся проблем с написанным вами кодом, должны описывать конкретную проблему — и включать допустимый код для ее воспроизведения — в самом вопросе. См. руководство на сайте SSCCE.org.   -  person Marcin    schedule 03.11.2013
comment
Пожалуйста, избегайте циклов while, если их можно легко заменить циклами for. Если вы хотите зациклить все числа между 0 (включительно) и years (исключительно), просто выполните for i in range(years):.   -  person Bakuriu    schedule 03.11.2013
comment
почему, если лучше, чем пока?   -  person user2906979    schedule 03.11.2013
comment
работает нормально, нужен код   -  person Ry-♦    schedule 03.11.2013


Ответы (1)


Я могу только догадываться, поскольку вы не предоставили трассировку, но похоже, что вы вызываете функцию constant_pension, вероятно, что-то вроде:

funds = constant_pension(salary_rate, savings, growth, len(retirement))

а retirement это None. (Названия, вероятно, все неправильные, но, надеюсь, вы поняли идею.)

person Ethan Furman    schedule 03.11.2013