码迷,mamicode.com
首页 > 编程语言 > 详细

python3练习100题——011

时间:2018-05-29 11:56:13      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:div   开始   不能   style   分析   htm   .com   rabbit   产生   

原题链接: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()才会打出来。

python3练习100题——011

标签:div   开始   不能   style   分析   htm   .com   rabbit   产生   

原文地址:https://www.cnblogs.com/drifter/p/9104142.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!