2016-02-22 44 views
0

我正在學習python編程,我遇到了一些混亂。我發現這個代碼是通過用戶輸入的開始和結束數來計算斐波那契數列的。有人可以解釋這些代碼的工作原理嗎斐波那契在python中 - 可以解釋範圍之間的斐波那契數是如何工作的嗎?

def fib(lowerbound, upperbound): 
    x = 0 
    y = 1 
    while x <= upperbound: 
     if (x >= lowerbound): 
      yield x 
     x, y = y, x + y 

startNumber = 10 
endNumber = 100 
for fib_sequence in fib(startNumber, endNumber): 
    print "And the next number is... %d!" % fib_sequence 
+0

投票結果不清楚你問的是什麼。 「解釋此代碼中的每一行」不是一個主題問題。我應該開始解釋'x = 0'是什麼嗎? – timgeb

+2

它計算斐波那契數字直到上限,但只有在數字大於下限後纔開始屈服。問題是什麼? 'x,y = ...'線如何工作?或者「收益」呢? –

+1

基本的循環應該很清楚。現在,假設'yield x'是'print x'。那麼它會清楚地打印下邊界和上邊界之間的斐波納契數字,對吧?好吧,「收益率」是做什麼的?它使'fib'成爲一個發生器,根據需要一次產生相同的值。結果可以在任何需要迭代器的地方使用。如果這讓你感到困惑,那麼我建議閱讀關於發電機的信息。 –

回答

1

def fib(...返回上,你可以使用迭代for i in <return val by fib>

我猜你主要的困惑是圍繞yield部分列表的功能。它會記住過去的值(即xy的值),並且下一次繼續前面的值,並且每當它看到yield時,它都會將返回的值(此處爲x)添加到返回的列表中。

https://www.jeffknupp.com/blog/2013/04/07/improve-your-python-yield-and-generators-explained/

本條應清除所有的疑慮。

乾杯!

+0

謝謝..它澄清了我的疑問。 – Koushic

+0

快樂學習:) –