2015-02-17 54 views
0

每當我定義函數中的每個變量時,都會出現一個錯誤,如「NameError:name'Tempsum'未定義。」當我讓他們的全局變量,我得到一個錯誤,如「UnboundLocalError:賦值之前引用局部變量‘Tempsum’」爲什麼我不斷收到名稱錯誤? Euler 2 Python

Tempsum=0 
FirstNum = 1 
SecondNum = 2 
SumofFibinaci= 0 
def Fibinaci_calculator(): 
    while Tempsum <= 4000000: 
     Tempsum= SecondNum 
     m= 2 
     if Tempsum % m == 0: 
      SumofFibinaci += Tempsum 
     Tempsum = SecondNum+ FirstNum 
     FirstNum= SecondNum 
     SecondNum= Tempsum 
print SumofFibinaci 
pass 
print Fibinaci_calculator 
+1

請張貼**全文**錯誤您使用此代碼獲取。 – MattDMo 2015-02-17 21:09:04

+0

另外,爲什麼要爲全局方法創建臨時狀態變量?這只是一個壞主意。 – aruisdante 2015-02-17 21:10:12

回答

2

你得到UnboundLocal錯誤Tempsum是不是在函數範圍的全局。你分配給它,所以它是一個本地的,除非另有明確說明。

你不需要需要Tempsum在這裏是一個全球性的。將Tempsum = 0行移入該函數。這適用於所有變量:

def Fibinaci_calculator(): 
    Tempsum = 0 
    FirstNum = 1 
    SecondNum = 2 
    SumofFibinaci = 0 

    while Tempsum <= 4000000: 
     Tempsum = SecondNum 
     m = 2 
     if Tempsum % m == 0: 
      SumofFibinaci += Tempsum 
     Tempsum = SecondNum + FirstNum 
     FirstNum = SecondNum 
     SecondNum = Tempsum 

    return SumofFibinaci 

我假設你想要SumofFibinaci返回。

不要忘記通話你的函數:

print Fibinaci_calculator() 
+0

可能也想要解決'打印Fibinaci_calculator'這幾乎肯定不是OP想要的。 – aruisdante 2015-02-17 21:12:59

+0

非常感謝您的幫助,修復了功能! (我對python仍然很陌生) – TheNuker 2015-02-17 21:21:23

相關問題