課程
/后端開發
/Python
/初識Python
有大神能幫我解讀一下這個代碼嗎?其他地方看到的,但是看不懂,尤其是最后while的那一段,求解
2019-10-24
源自:初識Python 9-1
正在回答
import sys
def fibonacci(n): #這是一個生成器函數因為里面包含了yield指令,這個函數是用來return斐波那契里面各個項的
????a, b , counter = 0, 1, 0 #分別給a, b , counter 賦值為 0, 1, 0
????while True: #循環指令
????????if (counter > n):
????????????return #這段代碼是用來關閉生成器的,因為是用return而不是yeild返回,如果再次使用next()方法會報錯StopIteration異常。
????????yield? a #yield和return方法都會返回一個值,不同的是生成器可以通過next()方法接著yield的位置執行代碼
????????a, b = b, a+b #這時候a就變成了b,而b變成了原先的a加原先的b
????????counter += 1 #計數器+1,等到計數器大于n的時候就會觸發return結束生成器
f = fibonacci(10) # f 會初始化這個生成器函數,
while True:
????try:
????????print(next(f), end ='')#這里打印出下一個返回值,在count > n 之前都是由yield返回的b
????except StopIteration:#就像之前說的,當是由return返回值的時候,再使用next()就會報錯StopIteration
????????sys.exit() #退出程序
慕娘0429976
舉報
學python入門視頻教程,讓你快速入門并能編寫簡單的Python程序
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2019-11-03
import sys
def fibonacci(n): #這是一個生成器函數因為里面包含了yield指令,這個函數是用來return斐波那契里面各個項的
????a, b , counter = 0, 1, 0 #分別給a, b , counter 賦值為 0, 1, 0
????while True: #循環指令
????????if (counter > n):
????????????return #這段代碼是用來關閉生成器的,因為是用return而不是yeild返回,如果再次使用next()方法會報錯StopIteration異常。
????????yield? a #yield和return方法都會返回一個值,不同的是生成器可以通過next()方法接著yield的位置執行代碼
????????a, b = b, a+b #這時候a就變成了b,而b變成了原先的a加原先的b
????????counter += 1 #計數器+1,等到計數器大于n的時候就會觸發return結束生成器
f = fibonacci(10) # f 會初始化這個生成器函數,
while True:
????try:
????????print(next(f), end ='')#這里打印出下一個返回值,在count > n 之前都是由yield返回的b
????except StopIteration:#就像之前說的,當是由return返回值的時候,再使用next()就會報錯StopIteration
????????sys.exit() #退出程序