python基础练习题(有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?)
2021-05-24 23:42 第二个卿老师 阅读(2526) 评论(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,'对兔子')