0

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

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()
4

3 回答 3

1

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

这是罪魁祸首的路线, previousFirst + previousSecond = previousSecond

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

于 2013-08-30T01:58:57.627 回答
1

1. 你的任务被扭转了。格式是

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

所以这样做:

previous_second = previous second + previous_first

2. 一种更正常(非 Python)的方法是:

next = current + previous
previous = current
current = next

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

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

current, previous = current+previous, current

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

4. 是“斐波那契”,不是“斐波那契”,这家伙的真名是莱昂纳多。

于 2013-08-30T03:09:34.923 回答
0

该行应该是

previousSecond = previousFirst + previousSecond 

那就是问题所在

更新:

计算斐波那契数存在一些逻辑错误,while 部分可能是:

while (counter < fibbNumber):
    previousSaved = previousSecond
    previousSecond = previousFirst + previousSecond
    previousFirst = previousSaved
    print (previousFirst)
    print (previousSecond)
    counter += 1
于 2013-08-30T02:02:17.747 回答