【问题标题】:I am getting the error "Can't assign to Operator"我收到错误“无法分配给操作员”
【发布时间】:2013-08-30 01:50:47
【问题描述】:

我不确定它为什么给我这个错误...它说给我错误的部分是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()

【问题讨论】:

  • 至于您所询问的错误,您希望previousFirst + previousSecond = previousSecond 做什么?分配总是分配给左边的东西,而不是右边的东西。
  • 这是我一年多以来的第一次编码,事情发生了变化,我仍在不断变化,我这里的逻辑也很糟糕,我不能让它做我想做的事,也就是按顺序产生斐波那契数

标签: python operator-keyword


【解决方案1】:

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

这是罪魁祸首的台词, previousFirst + previousSecond = previousSecond

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

【讨论】:

  • 我明白,但它在我的代码中正确缩进,当我上传它时,它的格式不同,我不清楚我需要做什么来修复它:(
  • @user1861771 阅读我的答案,您正在尝试弄乱赋值语句。
【解决方案2】:

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 的新值是旧值 current+previous 的和,previous 的新值是 current 的旧值。将其放入“for xyz in range(n):”循环中,在初始化 current=0,previous=1 之后,您将得到一个适用于所有非负 n(包括 0)的循环。 current 的最终值就是你的结果。

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

【讨论】:

    【解决方案3】:

    该行应该是

    previousSecond = previousFirst + previousSecond 
    

    这就是问题

    更新:

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

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

    【讨论】:

      猜你喜欢
      • 2019-11-11
      • 2017-02-13
      • 1970-01-01
      • 2016-02-06
      • 2020-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多