原題鏈接:http://www.runoob.com/python/python-exercise-example11.html
題目:古典問題:有一對兔子,從出生后第3個月起每個月都生一對兔子,小兔子長到第三個月后每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少?
分析:看起來挺復雜的,但是把每個月兔子數列出來:1,1,2,3,5,8,13... 就是斐波拉契序列。 所以編程核心是要實現后一個月等於前兩個月的加和。使用了最近學的生成器寫。
我的代碼:
def rabbit(): a=b=1 while True: yield a a,b=b,a+b month =1 if __name__ =='__main__': for i in rabbit(): #這是個無限循環,因為題目也沒有說多少個月。。。要用ctrl終止 print("month:%d rabbits:%d" %(month,i)) month +=1 #可以對month設置if條件語句,然后break循環
思考:
1.生成器的使用可以用for或者next
但是循環next(rabbit())是不行的,每次循環都是重新開始,所以輸出的都是1
應該x=rabbit() 然后循環next(x)。
2.yield產生的數據,用next()也不能打出來,要再用個print()才會打出來。
