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()才会打出来。

转载于:https://www.cnblogs.com/drifter/p/9104142.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值