day6
---------------------------------------------------------------
實例011:養兔子
題目 有一對兔子,從出生后第3個月起每個月都生一對兔子,小兔子長到第三個月后每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少?
有點復雜,先分析下,寫出來幾種情況,把每個兔子的狀態標注下,慢慢的發現了規律,成熟的兔子和小兔子一樣多,中兔子與上一個的小兔子一樣多,大兔子同理,而成熟的兔子等於上月的成熟兔+大兔子,再調整下順序輸出就可以了,哈哈哈
1 import copy 2 3 # 3個月 1成熟 0大 0中 1小 4 # 4個月 1成熟 0大 1中 1小 5 # 5個月 1成熟 1大 1中 1小 6 # 6個月 2成熟 1大 1中 2小 7 # 7個月 3成熟 1大 2中 3小 8 # 8個月 4成熟 2大 3中 4小 9 # 9個月 6成熟 3大 4中 6小 10 list = [1,0,0,0] 11 list1 = [0,0,0,0] 12 sum1 = 0 13 x = int(input("請輸入月份:")) 14 for i in range(x+1): 15 if i <3: 16 sum1 = 1 17 else: 18 list1[2] = list[3] 19 list1[1] = list[2] 20 list1[0] = list[1] + list[0] 21 list1[3] = list1[0] 22 list = copy.copy(list1) 23 print("list1:",list1) 24 sum1 = sum(list1) 25 print("兔子總數為:",sum1)
再看看正確答案,第7行看了半天才看懂,就是把我的簡化了下,看了下解析,其實這個數列是斐波那契數列:0,1,1,2,3,5,8,13,21。。。尷尬
1 month=int(input('繁殖幾個月?: ')) 2 month_1=1 3 month_2=0 4 month_3=0 5 month_elder=0 6 for i in range(month): 7 month_1,month_2,month_3,month_elder=month_elder+month_3,month_1,month_2,month_elder+month_3 8 print('第%d個月共'%(i+1),month_1+month_2+month_3+month_elder,'對兔子')