我收到错误“无法分配给操作员”

时间:2013-08-30 01:50:48

标签: python operator-keyword

我不确定为什么它会给我这个错误...它说的部分给我的错误是previousFirst + previousSecond = previousSecond。如果您想知道目标是打印出用户想要打印的尽可能多的fibonnaci数字。

def fibbonaci():
    fibbNumber = input("How many Fibonacci numbers should I print for you?")
    fibbNumber = int(fibbNumber)
    global counter
    counter = 0
    global previousFirst
    previousFirst = 0
    global previousSecond
    previousSecond = 1
    global previousSaved
    previousSaved = 1
    while (counter < fibbNumber):
        previousSaved = previousSecond
        previousFirst + previousSecond = previousSecond
        print (previousFirst)
        print (previousSecond)
        counter += 1

fibbonaci()

3 个答案:

答案 0 :(得分:1)

赋值语句的左侧必须是有效名称,而不是表达式。 (+是一个运算符,表示它包含在表达式中)

这是罪魁祸首, previousFirst + previousSecond = previousSecond

此外,您的代码确实存在一些格式问题,即缩进对第一个函数不利。通常你可以逃避这一点,但作为Python,它是语言语法的一部分。它也可能只是您将其复制并粘贴到Stack的方式,在编辑帖子时查看How to EditHow to Format栏中的提示。

答案 1 :(得分:0)

该行应为

previousSecond = previousFirst + previousSecond 

这就是问题

更新:

计算fibbonaci数有一些逻辑错误,而while部分可能是:

while (counter < fibbNumber):
    previousSaved = previousSecond
    previousSecond = previousFirst + previousSecond
    previousFirst = previousSaved
    print (previousFirst)
    print (previousSecond)
    counter += 1

答案 2 :(得分:0)

1。你转过了作业。格式为

<i>variable</i> = <i>new value</i>

所以说:

previous_second = previous second + previous_first

2。更常规(非Python)的方法是:

next = current + previous
previous = current
current = next

其中“next”是一个临时变量,用于按顺序计算下一个。

3。 Python能够执行多个赋值,在许多其他情况下不需要临时变量。您可以通过以下方式完成上述所有操作:

current, previous = current+previous, current

右边的两个计算都是在任何分配发生之前完成的。 current的新值是当前值+ previous的旧值的总和,而previous的新值是current的旧值。把它放在“for xyz in range(n):”循环中,在初始化current = 0,previous = 1之后,你得到一个适用于所有非负n(包括0)的循环。当前的最终值是你的结果。

4。它的“Fibonacci”,而不是“Fibbonaci”,这个人的真名是莱昂纳多。