python3练习100题——011
2024-09-06 19:50:56
原题链接: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()才会打出来。
最新文章
- 使用po模式读取豆瓣读书最受关注的书籍,取出标题、评分、评论、题材 按评分从小到大排序并输出到txt文件中
- 3dmax导出到blend或者vs中
- vyatta常用操作
- web.xml配置详解之欢迎页面和错误页面
- SAP-MM:创建采购组织、采购组
- SHELL网络爬虫实例剖析--转载
- QT中窗口刷新事件的学习总结
- MySQL优化面试
- HDU4466 Triangle 计数 容斥原理
- 带参数的main函数以及execl函数的应用
- SpringAOP学习第一天 @Pointcut注解
- spring(读取外部数据库配置信息、基于注解管理bean、DI)
- 201621123001《Java程序设计》第4周学习总结
- 修改 Semantic UI 中对 Google 字体的引用
- Linux chmod和chown更改文件目录的所属者命令的用法
- java newInstance() 的参数版本与无参数版本详解
- C语言多线程编程二
- Photon3Unity3D.dll 解析三——OperationRequest、OperationResponse
- linux命令(11):df命令
- 在libuv中使用openssl建立ssl连接