|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
一对兔子,第3个月就可以新生一对小兔子,12个月后,一共有多少对兔子?小甲鱼老师的答案是144对
原帖 http://bbs.fishc.com/thread-72353-1-1.html昨天解题解出了233……终于找到问题所在了,原来是while循环的问题,我开始生成了一对兔子实例,所以应该循环11次(兔子12个月)
正确的代码发给大家看吧,感觉弄懂了类对象不定数生成实例,应该对以后的编程有很大帮助
- class Rabit:
- def __init__(self,life):
- self.life=life #"传递进来兔子的寿命"
- self.big=False #"默认兔子为小兔子不能生育"
- self.y=1 #"每只兔子的年龄"
- self.bron=0 #"兔子生产状态,默认为0"
- def radd(self):
- self.life-=1
- self.y+=1
- if self.big :
- self.bron=1
- return (self.bron,self.life,self.y) #"返回生产状态和新兔子的寿命,兔子的年龄"
- i=0 #"list下标变量"
- raList=[] #"初始化兔子list"
- n=1 #"兔子初始总量为1"
- inlife=int(input("兔子的寿命:"))
- a=inlife
- raList.append(Rabit(inlife)) #"!第一只兔子!放入list"
- while inlife>1: #"!第一只兔子的生命周期活动时间!"
- print("inlife=%d" % (inlife))
- for i in range(len(raList)):
- print("i=%d" % (i))
- print("raList[%d].big=%d" % (i,raList[i].big))
- print("raList[%d].y=%d" % (i,raList[i].y))
- raList[i].radd()
- if raList[i].y > 2 :
- #raList[i].big=True
- #if raList[i].bron==1 :
- raList.append(Rabit(raList[i].life)) #满足生产条件就把新兔子放到list
- n=n+1 #每次生产兔子总数+1
- print("每次循环n= %d" % (n))
- inlife-=1
- print("1号答案 这对兔子%d个月可以到达%d对" % (inlife,n))
- print("2号答案 这对兔子%d个月可以到达%d对" % (a,len(raList)))
- print("3号答案 这对兔子%d个月可以到达%d对" % (a,i))
复制代码 |
|