zoukankan      html  css  js  c++  java
  • python基础===通过菲波那契数列,理解函数

    def fib(n):           # write Fibonacci series up to n
        """Print a Fibonacci series up to n."""
        a, b = 0, 1
        while b < n:
            print(b)
            a, b = b, a+b
    
    
    >>>fib(2000)
    1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597

    我们可以编写一个函数来生成有给定上界的菲波那契数列。

    你可能认为fib不是一个函数(function),而是一个过程(procedure)。Python和C一样,过程只是一个没有返回值的函数。实际上,从技术上讲,过程也有一个返回值,虽然是一个不讨人喜欢的。这个值被称为 None(这是一个内置命名)。如果一个值只是None的话,通常解释器不会写一个None出来,如果你真想要看它的话,可以这样做:

    >>> print fib(0)
    
    None

    以下示列演示了如何从函数中返回一个包含菲波那契数列的数值链表,而不是打印它:

    >>> def fib2(n):    # return Fibonacci series up to n
        ... """Return a list containing the Fibonacci series up to n."""
        ... result = []
        ... a, b = 0, 1
        ... while b < n:
        ...     result.append(b) # see below
        ...     a, b = b, a+b
        ... return result
        ... 
    >>> f100 = fib2(100) # call it
    >>> f100 # write the result
    [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
    • return语句从函数中返回一个值,不带表达式的return返回None。过程结束后也会返回None。
    • 语句result.append(b)称为链表对象result的一个方法(method)。方法是一个“属于”某个对象的函数,它被命名为obj.methodename,这里的obj是某个对象(可能是一个表达式),methodename是某个在该对象类型定义中的方法的命名。 不同的类型定义不同的方法。不同类型可能有同样名字的方法,但不会混淆。(当你定义自己的对象类型和方法时,可能会出现这种情况,本指南后面的章节会介绍如何使用类)。示例中演示的append()方法由链表对象定义,它向链表中加入一个新元素。在示例中它等同于"result = result + [b]",不过效率更高。
  • 相关阅读:
    Eclipse中jsp、js文件编辑时,卡死现象解决汇总
    环境安装备忘录 Nginx
    环境安装备忘录 Redis redis-slave-端口号.conf
    环境安装备忘录 Redis redis-common.conf
    环境安装备忘录 Redis
    Leetcode 131 Palindrome Partitioning(DFS思路)
    排序算法之快速排序(Quick Sort) -- 适用于Leetcode 75 Sort Colors
    谈STL的重要应用与实现
    二分图匹配相关问题
    理解操作系统相关知识
  • 原文地址:https://www.cnblogs.com/botoo/p/7552078.html
Copyright © 2011-2022 走看看