为什么我总是收到名称错误?欧拉 2 Python

Why do I keep getting name errors? Euler 2 Python

每当我在函数中定义每个变量时,我都会收到一个错误,例如 "NameError: name 'Tempsum' is not defined." 当我将它们设为全局变量时,我会收到一个错误,例如 "UnboundLocalError: local variable 'Tempsum' referenced before assignment"

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

您收到 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()