2015-06-27 52 views
0

我试图在Project Euler的帮助下学习Python。Python中的字符串和整数的基本问题

我对这段代码(对于问题2)和“非类型”究竟是什么有点麻烦。我想知道是否有人能帮助我指出正确的方向!

from math import sqrt 
x= 0 

def f(n): 
    return ((1+sqrt(5))**n-(1-sqrt(5))**n)/(2**n*sqrt(5)) 

def SubFib(startNumber, endNumber): 
    n = 0 
    cur = f(n) 
     while cur <= endNumber: 
     if startNumber <= cur: 
     print (cur) 
     n += 1 
     cur = f(n) 


     for i in range(SubFib(1,4000000)): 
     if i % 2 ==0: 
     x = i+ x 

感谢您提前!

+1

我们要堆栈溢出!请检查你的代码缩进 - 它看起来并不像它会工作...你也应该发布你看到的确切的错误(通常跟踪)和你的预期(不要以为人们肯定会解决它 - 他们可能在这种情况下,但通常不)。确保你已经阅读[如何问](http://stackoverflow.com/help/how-to-ask)。祝你好运! –

+1

修复'NoneType'后,由于SubFib(1,4000000)',下一个问题是RuntimeError:maximum recursion depth exceeded。它总是需要这么高的价值吗? –

回答

2

A NoneType错误是什么时发生的东西有价值None,你试着用它做点什么。在这种情况下,您的SubFib函数不会返回任何内容,因此当您调用它并将其结果传递到range()时,它会尝试运行range(None)

也许你想SubFib在最后有一个return n