python2.7练习小例子(十)

    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

原文地址:https://www.cnblogs.com/luyaran/p/8942095.html

时间: 2024-10-11 03:44:12

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

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

28):题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母.     程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母. #!/usr/bin/python # -*- coding: UTF-8 -*- letter = raw_input("please input:") #while letter != 'Y': if letter == 'S': print ('please input secon

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

    24):1.题目:利用递归方法求5!.     程序分析:递归公式:fn=fn_1*4! #!/usr/bin/python # -*- coding: UTF-8 -*- def fact(j): sum = 0 if j == 0: sum = 1 else: sum = j * fact(j - 1) return sum print fact(5)     以上实例输出结果为: 120     python3 参考方案: def Factorial(n):     if n ==

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

    25):题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁.问第4个人岁数,他说比第3个人大2岁.问第三个人,又说比第2人大两岁.问第2个人,说比第一个人大两岁.最后问第一个人,他说是10岁.请问第五个人多大?     程序分析:利用递归的方法,递归分为回推和递推两个阶段.要想知道第五个人岁数,需知道第四人的岁数,依次类推,推到第一人(10岁),再往回推.     程序源代码: #!/usr/bin/python # -*- coding: UTF-8 -*- def age

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

    26):题目:给一个不多于5位的正整数,要求:一.求它是几位数,二.逆序打印出各位数字.     程序分析:学会分解出每一位数.     程序源代码: #!/usr/bin/python # -*- coding: UTF-8 -*- x = int(raw_input("请输入一个数:\n")) a = x / 10000 b = x % 10000 / 1000 c = x % 1000 / 100 d = x % 100 / 10 e = x % 10 if a != 0

python2.7练习小例子(五)

    5):题目:输入三个整数x,y,z,请把这三个数由小到大输出.     程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小.     程序源代码: #!/usr/bin/python # -*- coding: UTF-8 -*- l = [] for i in range(3): x = int(raw_input('integer:\n')) l.append(x)

python2.7练习小例子(九)

    9)1.题目:暂停一秒输出.     程序分析:使用 time 模块的 sleep() 函数.     程序源代码: #!/usr/bin/python # -*- coding: UTF-8 -*- import time myD = {1: 'a', 2: 'b'} for key, value in dict.items(myD): print key, value time.sleep(1) # 暂停 1 秒     以上实例输出结果为(会有停顿效果): 1 a 2 b     

python速成第二篇(小爬虫+文件操作+socket网络通信小例子+oop编程)

大家好,由于前天熬夜写完第一篇博客,然后昨天又是没休息好,昨天也就不想更新博客,就只是看了会资料就早点休息了,今天补上我这两天的所学,先记录一笔.我发现有时候我看的话会比较敷衍,而如果我写出来(无论写到笔记本中还是博客中,我都有不同的感觉)就会有不同的想法,我看书或者看资料有时候感觉就是有一种惰性,得过且过的感觉,有时候一个知识想不通道不明,想了一会儿,就会找借口给自己说这个知识不重要,不需要太纠结了,还是去看下一个吧,然后就如此往复下去,学习就会有漏洞,所以这更加坚定了我写博客来记录的想法.

COM2 --- 小例子

在COM1 的小例子中,,我们大概知道什么是组件类 ,什么是接口了.这小节呢,我们来实现一下由一个组件类去实现两个接口的过程. 新建项目: 我们的 解决方案的 名字是 ComDemoCode ,项目名字是 MathToolKit  这表示 我们的 项目 自动 生成的 DLL  的名字就是 MathToolKit(数学工具包). 我们的继承关系 有必要 给大家 先 列出来,让大家 看看 在这里面,IPrimerMath接口 提供 + - * / % 五个基本运算方法,IAdvanceMath接口提

asp.net 文件操作小例子(创建文件夹,读,写,删)

静态生成要在虚拟目录下创建文件夹 来保存生成的页面 那么就要对文件进行操作 一.创建文件夹 using System.IO; string name = "aa"; string path = Server.MapPath("") + "\\" + name; if (Directory.Exists(path)) { Response.Write("<script>alert('文件夹已存在了!');history.go(