亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

求大神解析

http://img1.sycdn.imooc.com//5db10a70000105d904000354.jpg

有大神能幫我解讀一下這個代碼嗎?其他地方看到的,但是看不懂,尤其是最后while的那一段,求解

正在回答

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() #退出程序

0 回復 有任何疑惑可以回復我~
#1

慕娘0429976

因為是next()是接著yield指令后執行的,所以不會重新初始化a,b,counter
2019-11-03 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
初識Python
  • 參與學習       758398    人
  • 解答問題       8967    個

學python入門視頻教程,讓你快速入門并能編寫簡單的Python程序

進入課程

求大神解析

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號