2015-06-27 59 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