• Python_斐波那契数列


    斐波那契数列

      斐波那契数列有称为黄金分割数列。

      在数学上,斐波那契数列可以以递归的方法定义:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n>=2,n属于正整数)。

      简单的归结斐波那契数列为:第1个数值为0,第2个数值为1,之后的每个数值是位于它之前的两个数值之和。

    代码实现

      每隔一秒打印一个“斐波那契”数列数字,并且将数列保存到指定的文件中。

     1 #!/user/bin/env python
     2 # -*- coding:utf-8 -*-
     3 
     4 import time
     5 
     6 
     7 def fbis(num):
     8     result =[0,1]
     9     for i in range(num-2):
    10         result.append(result[-2]+result[-1])
    11     return result
    12 
    13 
    14 def main():
    15     result = fbis(10)
    16     fobj = open("./01_fbis_result.txt",'w+')
    17     for i ,num in enumerate(result):
    18         print("第 %d 个数是: %d"%(i,num))
    19         fobj.write("%d "%num)
    20         time.sleep(1)
    21 
    22 
    23 if __name__ == '__main__':
    24     main()

    代码解析

    • 一般情况下,在Python中用 # 标识注释行。但有两种特殊情况,在Python代码运行在Linux系统时, #!/user/bin/env python 用于告诉Python解释器的位置; # -*- coding:utf-8 -*- 用于标识文本文件用UTF-8格式编码。
    • import 语句用于导入包。本例中导入了 time 包,因为之后的 sleep() 函数位于其中。
    • Python的函数定义使用 def 关键字完成。冒号“:”用户代码块开域。代码块通过缩进对齐代表代码逻辑,而不是使用大括号。因为没有了额外的字符,程序的可读性更高,而且缩进完全能够清楚地表达一个语句属于哪个代码块。本例中定义了两个函数:fbis 和 main。

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

    • 函数参数无需定义类型,比如本例中fbis的参数是num。
    • List是Python中常用的列表类型,Python中的列表类型用中括号对“[ ]”定义。本例 fbis() 中的result变量是list的实例,用于保存被生成的数列。
    • range(num) 函数用于生成0到num-1的数字序列。
    • [for ... in ...]语句是循环流程语句。在fbis()的for语句中,生成一个从0到num-2-1的循环,每个循环体中计算一个数值并加入到result列表中。
    • 列表变量的负数索引用于获取列表中倒数的元素。例如本例中result[-1]意为获取result的倒数第1个元素。
    • 函数main()中用参数10调用fbis()函数,生成10个斐波那契数字。
    • Python的内置函数open用于打开文件,其第1个参数是被打开文件的文件名,第2个参数是打开的方式。“w+”表示打开待写入的文件,函数main()将打开的文件句柄放到fobj变量中。
    • enumerate()会将数组或列表组成一个索引序列,其返回值内包含两个变量的迭代器,第1个是序列号,第2个是数组、列表元素。

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

    • 在Python中可以调用print语句打印输出,可以用print语句显示变量的字符串表示,或者仅使用变量名查看该变量的原始值。Python的print语句与字符串格式运算符(%)结合使用,可以实现字符串替换功能,这一点和C语言的printf()函数非常相似。字符串中的前缀"u"表示字符串用UTF-8格式编码。

      注意:print中的格式运算符(%)后面的被替代变量一定要放在小括号内。

    • 用文件句柄的write()函数可以向文件写入数据。类似地,文件句柄还有read()函数可以读入数据。

      技巧:用open()函数打开文件,用write()函数向文件写入内容,用read()函数从文件中读入内容。

    • 用time包的sleep()函数可以让程序暂停一段时间,本例中输入参数1以指定暂停1秒。
    • 与其他高级语言一样,判断逻辑用if语句表达。本例中的if语句用于判断代码是被其他模块导入还是直接被执行;如果是直接被执行,则调用main()函数。
    • __name__ 是Python的只读内置变量。在模块中访问该变量时,其随着模块被调用的方式不同而有不同的值:当该模块被直接执行调用时,__name__ 的值为 __main__ ;当该模块被其他模块用import语句调用时,该值为当前模块名。

      技巧:用本例中的 if __name__ == '__main__': main()的方法启动main()函数值Python的常用方法。在Python中,所有的内置变量都以"前带两个下划线_,后带两个下划线_"的方式命名。另一个常用的内置变量是 __class__ ,在类内部使用时其内容为当前类名。

      将代码保存为 fbi.py 文件,无需编译程序,直接用python命令执行程序,其结果如下:

     

      文件中的内容

     

  • 相关阅读:
    MAC OS 快捷键一览
    JavaScript检测实例属性, 原型属性
    jQuery $.each用法
    双击和单击事件冲突解决方法
    移动WEB前端开发资源整合
    纯CSS3实现自定义涂鸦风格的边框
    jquery如何阻止子元素相应mouseout事件
    jquery键盘事件全记录
    javascript类型系统之基本数据类型与包装类型
    经验分享:CSS浮动(float,clear)通俗讲解
  • 原文地址:https://www.cnblogs.com/doitjust/p/12766949.html
Copyright © 2020-2023  润新知