代码改变世界

python基础练习题(有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?)

2021-05-24 23:42  第二个卿老师  阅读(2583)  评论(0编辑  收藏  举报

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,'对兔子')