10):古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

    程序分析:兔子的规律为数列1,1,2,3,5,8,13,21....

    程序源代码:

#!/usr/bin/python
# -*- coding: UTF-8 -*- f1 = 1
f2 = 1
for i in range(1,22):
print '%12ld %12ld' % (f1,f2),
if (i % 3) == 0:
print ''
f1 = f1 + f2
f2 = f1 + f2

    以上实例输出结果为:

           1           1            2           3            5           8
13 21 34 55 89 144
233 377 610 987 1597 2584
4181 6765 10946 17711 28657 46368
75025 121393 196418 317811 514229 832040
1346269 2178309 3524578 5702887 9227465 14930352
24157817 39088169 63245986 102334155 165580141 267914296
#!/usr/bin/python
# -*- coding: UTF-8 -*-#
#递归做,非常慢。计算n=36就要大概七八秒吧
def fib(n):
    if n==1 or n==2:
        return 1
    else:
        return fib(n-1)+fib(n-2)
print fib(36)
#!/usr/bin/python
# -*- coding: UTF-8 -*- # time 为第几个月,n 为 3
def rabbit(time,n):
    if time<1:
        return 0
    elif time==1:
        num=1
    elif time<n:
        num=1
    else:
        num=rabbit(time-1,n)+rabbit(time-(n-1),n)
    return num
print rabbit(25,3)
#!/usr/bin/python
# -*- coding: UTF-8 -*- def rabbit(num):
    f1 = 1
    #第一个月为1
    f2 = 1
    #第二个月为1
    if num == 1 or num == 2:
        return 1
    else:
        for i in xrange(num-1):
            f1,f2 = f2,f1+f2
    return f1 # 第三十六月兔子数量
print rabbit(36)

    使用斐波那契数列:

# !/usr/bin/python
# coding=UTF-8 n = int(raw_input("第几个月: "))
# 斐波那契数列的通项公式
f =(1/(5**0.5))*(((1+(5**0.5))/2)**n - ((1-(5**0.5))/2)**n)
print "第%d个月:共%d只" % ( n,f)

    Python3 参考方法:

#!/usr/bin/python3

def rabbit(n):
count = [1,0,0] #将兔子成长期分为三个月
for i in range(1,n): #每个月更新一次不同成长期的兔子对数
count[2] = count[2] + count[1]
count[1] = count[0]
count[0] = count[2]
return count[0]+count[1]+count[2] #返回兔子对数总数 n = int(input("查看第几个月的兔子对数:"))
rabbit_sum = rabbit(n)
print("第%d个月的兔子对数为%d"%(n,rabbit_sum))
#!/usr/bin/env python
# -*- coding: UTF-8 -*- def Rabbit(num):
i = 1
a,b = 1,1
while i <= num:
yield a
i += 1
a,b = b,a+b list = [x for x in Rabbit(20)]
print(list)
# -*- coding: utf-8 -*-

Rabbits={'rabbits':0}    # 新生兔子
home=[{'rabbits':1}] # 所有兔子对都在这个列表中,初始按过完一月计算
month=int(raw_input('请输入月份:'))
time=1 # time 表示已经过完的月数,到了该月月末。 while time <month:
for j in home:
if j['rabbits']>=2:
home.append(Rabbits.copy())
else:
j['rabbits']+=1
time+=1 print '兔子数量为 %u。'% len(home)
#!/usr/bin/python
# -*- coding: UTF-8 -*- a = 1
b = 1
for i in range(1,21,2):
print '%d %d'%(a,b),
a += b
b += a
# -*- coding: UTF-8 -*-
def rabbit(n):
if n == 1:
return [1]
if n == 2:
return [1,1]
rabbits = [1,1]
for i in range(2,n):
rabbits.append( rabbits [-1] + rabbits [-2]) #取List倒数第一个和倒数第二个数值相加
return rabbits
print rabbit(18) #第十八个月的数量
all_rabbit = []    

class Rabbit():
def __init__(self, birthday):
self.birthday = birthday
all_rabbit.append(self)
def makechild(self, month):
if month-self.birthday>=2:
Rabbit(month) Rabbit(1)
for i in range(1, 22):
[j.makechild(i) for j in all_rabbit[:]]
print(len(all_rabbit))

简单的练习小例子,有兴趣的可以来试试。如果感觉不错的话,请多多点赞支持哦。。。

  原文链接:https://blog.csdn.net/luyaran/article/details/80046801

python2.7练习小例子(十)的更多相关文章

  1. python2.7练习小例子(二十九)

        29):1.题目:按相反的顺序输出列表的值. #!/usr/bin/python # -*- coding: UTF-8 -*- a = ['one', 'two', 'three'] for ...

  2. python2.7练习小例子(十二)

        12):题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身.例如:153是一个"水仙花数" ...

  3. python2.7练习小例子(二十八)

    28):题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母.     程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母. ...

  4. python2.7练习小例子(二十四)

        24):1.题目:利用递归方法求5!.     程序分析:递归公式:fn=fn_1*4! #!/usr/bin/python # -*- coding: UTF-8 -*- def fact( ...

  5. python2.7练习小例子(十八)

    19):题目:一个数如果恰好等于它的因子之和,这个数就称为"完数".例如6=1+2+3.编程找出1000以内的所有完数.      #!/usr/bin/python # -*- ...

  6. python2.7练习小例子(十六)

    16):题目:输入一行字符,分别统计出其中英文字母.空格.数字和其它字符的个数.     程序分析:利用 while 或 for 语句,条件为输入的字符不为 '\n'.     程序源代码: #!/u ...

  7. python2.7练习小例子(十五)

        15):题目:输出指定格式的日期.     程序分析:使用 datetime 模块.     程序源代码: #!/usr/bin/python # -*- coding: UTF-8 -*- ...

  8. python2.7练习小例子(八)

        8):题目:输出 9*9 乘法口诀表.     程序分析:分行与列考虑,共9行9列,i控制行,j控制列.     程序源代码: #!/usr/bin/python # -*- coding: ...

  9. python2.7练习小例子(七)

        7):题目:将一个列表的数据复制到另一个列表中.     程序分析:使用列表[:].     程序源代码: #!/usr/bin/python # -*- coding: UTF-8 -*- ...

随机推荐

  1. 收放卷及张力控制 PID调试技巧

    1) 小 Kp( 0.01) , 大 Ti ( 20000ms) 2)逐渐增大Kp, 减小Ti ( 20000ms – 3000ms),避免发生震荡 3)观察I-out 是否在0附近 可能原因:卷径不 ...

  2. June 16th 2017 Week 24th Friday

    Progress is the activity of today and the assurance of tomorrow. 进步是今天的活动,明天的保证. The best preparatio ...

  3. 安卓Socket开发注意事项

    如果要在安卓app里用到Socket通信,要满足: 1.在写代码的activity里import进Socket相关的包,这个很easy,如果你不知道要import什么包,也可以先不指定,可       ...

  4. Jmeter入门15 JSON Assertion 适用于json格式的响应断言

    当响应结果是json格式时,用JSON Assertion更方便判断. 1 在请求上右键添加json断言 2  编辑json Assertion 判断方式: 如果响应结果不是json格式的,fail ...

  5. IOS NSLayoutConstraint 页面布局(通过代码添加约束)

    #import "ViewController.h" @interface ViewController () @property (nonatomic, strong) UIVi ...

  6. 深搜(DFS),Image Perimeters

    题目链接:http://poj.org/problem?id=1111 解题报告: 1.这里深搜有一点要注意,对角线上的点,如果为'.',则total不应该增加,因为这不是他的边长. #include ...

  7. HDU 1298 T9【字典树增加||查询】

    任意门:http://acm.hdu.edu.cn/showproblem.php?pid=1298 T9 Time Limit: 2000/1000 MS (Java/Others)    Memo ...

  8. ART_20190430

    Algorithm-算法题 第一个只出现一次的字符 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要 ...

  9. WPF学习笔记(7):DataGrid中数字自定义格式显示

    DataGrid中数据显示如下图,数据格式比较杂乱.希望达到以下要求:(1)所有数据保留两位小数:(2)超过1000的数字显示千分位:(3)如果数据为0,不显示. 首先想到用StringFormat进 ...

  10. css3中有关transform的问题

    Transform属性应用于元素的2D或3D转换.这个属性允许你将元素旋转,缩放,移动,倾斜等.