2015-02-17 56 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

相关问题