python入门之解决“斐波那契数列”问题

斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)。简单地归结斐波那契数列的规律为:第1个数值为0,第2个数值为1,之后的每个数值都是位于它之前的两个数值的和。

如下python代码用于每隔一秒打印一个斐波那契数列数字,并且将数列保存到制定的文件中:

# !/usr/bin/env python
# -*- coding: utf-8 -*-

import time

def fbis(num):
    result = [0, 1]
    for i in range(num - 2):
        result.append(result[-2] + result[-1])
    return result

def main():
    result = fbis(10)
    fobj = open('result.txt', 'w+')
    for i, num in enumerate(result):
        print("第 %d 个数是: %d" % (i, num))
        fobj.write("%d" % num)
        time.sleep(1)

if __name__ == '__main__':
    main()

代码解析:

  • 一般情况下,在python中用“#”标识注释行,但有两种特殊情况:当python代码运行在linux系统中时,
# !/usr/bin/env python

用于告诉系统python解释器的位置;

# -*- coding: utf-8 -*-

用于标识本文件用UTF-8编码。

  • import语句用于导入包。本例中导入了time包,因为之后的sleep()函数位于其中。

python用缩进标识代码块,因此一个块内的每行代码的前导空格必须一致,否则执行时解释器会报错。

  • range(num)函数用于生成从0到num-1的数字序列。

  • python的内置函数open()用于打开文件,其第1个参数是被打开的文件名,第2个参数是打开的方式,“w+”表示打开代写入的文件。函数main()将打开的文件句柄放在fobj变量中。

  • enumerate()会将数组或者列表组成一个索引序列,其返回值内包含两个变量的迭代器,第1个是序列号,第2个是数组/列表元素。

技巧:用enumerate生成带索引的迭代序列

  • 与其他高级语言一样,判断逻辑用if语句表达。本例中的if语句用于判断代码是被其他模块导入还是直接被执行;如果是直接被执行,则调用main()函数。

  • _ name _ 是python的只读内置变量。在模块中访问该变量时,其随着模块的被调用方式的不同而有不同的值:当该模块被直接执行调用时,_ name _ 的值为_ main _ ;当该模块被其他模块用import语句调用时,该值为当前模块名。

用本例中的if _ name _ == ‘_ main _ ‘:main()的方法启动main()函数是python的常用方法。。在python中,所有内置变量都是以“前带两个下划线 _ ,后带两个下划线 _ ”的方式命名。另一个常用的内置变量是_ class _ ,在类内部使用时其内容为当前类名。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值