zoukankan      html  css  js  c++  java
  • 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()才会打出来。

  • 相关阅读:
    nodejs 实现简单的文件上传功能
    url地址数据转换成json数据格式
    html布局,左侧固定右侧自适应
    JavaScript事件
    如何用CSS进行网页布局
    选项卡教程(源代码)
    css切图教程
    前端学习的大概路线
    AJAX之学习笔记(持续更新......)
    nginx命令详解
  • 原文地址:https://www.cnblogs.com/drifter/p/9104142.html
Copyright © 2011-2022 走看看