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
python2.7练习小例子(十)的更多相关文章
- python2.7练习小例子(二十九)
29):1.题目:按相反的顺序输出列表的值. #!/usr/bin/python # -*- coding: UTF-8 -*- a = ['one', 'two', 'three'] for ...
- python2.7练习小例子(十二)
12):题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身.例如:153是一个"水仙花数" ...
- python2.7练习小例子(二十八)
28):题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母. 程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母. ...
- python2.7练习小例子(二十四)
24):1.题目:利用递归方法求5!. 程序分析:递归公式:fn=fn_1*4! #!/usr/bin/python # -*- coding: UTF-8 -*- def fact( ...
- python2.7练习小例子(十八)
19):题目:一个数如果恰好等于它的因子之和,这个数就称为"完数".例如6=1+2+3.编程找出1000以内的所有完数. #!/usr/bin/python # -*- ...
- python2.7练习小例子(十六)
16):题目:输入一行字符,分别统计出其中英文字母.空格.数字和其它字符的个数. 程序分析:利用 while 或 for 语句,条件为输入的字符不为 '\n'. 程序源代码: #!/u ...
- python2.7练习小例子(十五)
15):题目:输出指定格式的日期. 程序分析:使用 datetime 模块. 程序源代码: #!/usr/bin/python # -*- coding: UTF-8 -*- ...
- python2.7练习小例子(八)
8):题目:输出 9*9 乘法口诀表. 程序分析:分行与列考虑,共9行9列,i控制行,j控制列. 程序源代码: #!/usr/bin/python # -*- coding: ...
- python2.7练习小例子(七)
7):题目:将一个列表的数据复制到另一个列表中. 程序分析:使用列表[:]. 程序源代码: #!/usr/bin/python # -*- coding: UTF-8 -*- ...
随机推荐
- docker-day1-安装和基本使用
Docker 1.什么是docker Docker 是一个开源项目,可以实现轻量级的操作系统虚拟化解决方案. Docker 的基础是 Linux 容器(LXC)等技术.在 LXC 的基础上 Docke ...
- javascript Object与Array用法
引用类型:引用类型是一种数据结构,用于将数据和功能组织在一起.引用类型的值是引用类型的一个实例. 一.Object ECMAScript中的对象其实就是一组数据和功能的结合. Object类型其实是所 ...
- 数据库操作(c#)
windows窗体程序中的数据库操作部分 //数据库连接串 internal static string connstring = "Data Source = 192.168.1.1; I ...
- SpringCloud实战3-Hystrix请求熔断与服务降级
我们知道大量请求会阻塞在Tomcat服务器上,影响其它整个服务.在复杂的分布式架构的应用程序有很多的依赖,都会不可避免地在某些时候失败.高并发的依赖失败时如果没有隔离措施,当前应用服务就有被拖垮的风险 ...
- python_列表/元组/元组列表以及如何使用
1.list是处理一组有序项目的数据结构 #定义一个列表 list=[1,2,3] print type(list) print list[0] 输出: <type 'list'> 1 2 ...
- python核心编程中网络爬虫的例子
#!/usr/bin/env python import cStringIO # import formatter # from htmllib import HTMLParser # We use ...
- IOS GCDAsyncSocket
// // ViewController.m // 05.聊天室 // // Created by apple on 14/12/5. // Copyright (c) 2014年 heima. Al ...
- Python map/reduce/filter/sorted函数以及匿名函数
1. map() 函数的功能: map(f, [x1,x2,x3]) = [f(x1), f(x2), f(x3)] def f(x): return x*x a = map(f, [1, 2, 3, ...
- python:pymysql模块使用
一,基本使用 # 导入pymysql模块 import pymysql # 连接database conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,p ...
- POJ 2985 名次树
题意:1~n个猫,有合并操作,有询问操作,合并两只猫所在的集合,询问第K大的集合. 分析:合并操作用并查集,用size维护,询问操作用Treap.注意优化,不能刚开始就把所有size = 1放到名次树 ...