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

  • 相关阅读:
    子元素如何不继承父元素透明度
    js深度复制对象
    webstorm快捷键
    js触屏滑动事件
    DOM学习笔记
    attribute & property --- jquery attr() & prop()
    javascript学习笔记(通用)-2015-08
    javascript学习笔记(数组)-2015-08
    mustache语法整理
    代码优化
  • 原文地址:https://www.cnblogs.com/drifter/p/9104142.html
Copyright © 2011-2022 走看看