python3練習100題——011


原題鏈接: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()才會打出來。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM