Python实现:斐波那契数列、交换两个变量的值、从一组数据中找出最大最小值

来源:互联网 发布:单片机继电器怎么使用 编辑:程序博客网 时间:2024/04/26 10:22

Python实现:斐波那契数列、交换两个变量的值、从一组数据中找出最大最小值

Fibonacci series, swapping two variables, finding maximum/minimum among a list of number



维基百科:费波那西数列Fibonacci Sequence),又译费波拿契数斐波那契数列费氏数列黄金分割数列

数学上,费波那西数列是以递归的方法来定义:

  • F_0=0
  • F_1=1
  • F_n = F_{n-1}+ F_{n-2}

用文字来说,就是费波那西数列由 0 和 1 开始,之后的费波那西系数就由之前的两数相加。首几个费波那西系数是:

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946,


代码一:

#!/usr/bin/env python#-*- coding:utf-8 -*-'''费波那西数列由 0 和 1 开始,之后的费波那西系数就由之前的两数相加@author: 易枭寒'''def fib(n):      """打印n个Fib序列值"""        fib_result = []    a, b = 0, 1    if n == 0:        fib_result = [0]        return fib_result    if n == 1:        fib_result = [0, 1]        return fib_result     while a < n:        fib_result.append(a)         a, b = b, a + b            return fib_result  print fib(0)print fib(1)print fib(20)

代码二:

#!/usr/bin/env python#-*- coding:utf-8 -*-'''费波那西数列由 0 和 1 开始,之后的费波那西系数就由之前的两数相加@author: 易枭寒'''num = int(raw_input("请输入一个数字:"))def fib(num):    result = [0, 1]    for i in range(num - 2):        result.append(result[-2] + result[-1])    return result    print fib(num)

代码三:考虑用 __iter__ 实现(TODO)

--------------------------------------------------

#!/usr/bin/env python#-*- coding:utf-8 -*-'''Python 实现交换两个变量的值传统的做法是,定义一个临时变量。但,Python中有更简洁的交换方法,
也即#a, b = b, a  强烈推荐a,b=b,a这种写法!!!@author: 易枭寒'''a = 1024b = "Python"print "a is %s, b is %s" %(a, b)temp = aa = bb = temp #a, b = b, a  强烈推荐a,b=b,a这种写法!!!print "After swapped,a is %s, b is %s" %(a, b)

-----------------------------------------------------------------

#!/usr/bin/env python#-*- coding:utf-8 -*-'''Python 从一组数据中找出最大最小值@author: 易枭寒'''#最简单的实现内置函数max()和min(),或者使用list内置函数sort()先排序,再切片操作。#sort()函数为原位(就地)操作,也即修改的是列表本身。my_list = [4, 6, 3, 2, 1, 8, 9]my_list.sort()max_num = max(my_list)print max_nummin_num = min(my_list)print min_numprint "The max number is:%d" % my_list[-1]print "The min number is:%d" % my_list[0]>>> help(list.sort)Help on method_descriptor:sort(...)    L.sort(cmp=None, key=None, reverse=False) -- stable sort *IN PLACE*;    cmp(x, y) -> -1, 0, 1#考虑列表长度。列表元素相等(set()去重复元素)#扩展:无序列表,先排序,再搜索。自己实现一个排序方法吧(TODO


原创粉丝点击