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

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 开始,之后的费波那西系数就由之前的两数相加。首几个费波那西系数是:

01123581321345589144233377610, 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 = 1024
b = "Python"
print "a is %s, b is %s" %(a, b)

temp = a
a = b
b = 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_num

min_num = min(my_list)
print min_num

print "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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值