python中抽象的的办法:函数和类。
函数#
简单的函数使用#
用一个斐波那契数列代码说明函数1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18#!/usr/bin/env python
#-*- coding: utf-8 -*-
def fibs(num):
result = [0,1]
for i in range(num-2):
result.append(result[-2]+result[-1])
return result
def main():
n = int(raw_input('how many Fionacci nuimbers do you want? '))
print fibs(n)
main()
[root@backup py_basic]# ./fibs.py
how many Fionacci nuimbers do you want? 10
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
收集参数#
1 | #!/usr/bin/env python |
注意:
python中如果出现中文,需要在第一行(即#!/usr/bin/env python下一行)添加代码#-*- coding: utf-8 -*-
def params01(*params):说明前面加上一个星号是元组,收集其余位置的参数
def params03(**params):说明前面加上两个星号是字典,收集键值类型的参数
递归#
通过两个实例来说明递归用法.
实例1:阶乘1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18#!/usr/bin/env python
#-*- coding: utf-8 -*-
def factorial(num):
result = num
for i in range(1,num):
result *= i
return result
def main():
n = int(raw_input('how many Factorial nuimbers do you want? '))
print factorial(n)
main()
#结果
[root@backup py_basic]# ./factorial.py
how many Factorial nuimbers do you want? 4
24
实例2:二分查找法1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22#!/usr/bin/env python
#-*- coding: utf-8 -*-
def search(lists,num,lower=0,upper=None):
if upper is None: upper = len(lists)-1
if lower == upper:
assert num == lists[upper]
return upper
else:
middle = (lower+upper)//2
if num > lists[middle]:
return search(lists,num,middle+1,upper)
else:
return search(lists,num,lower,middle)
if __name__ == '__main__':
seq =[4, 8, 15, 17, 26, 33, 47, 59, 65, 74]
print search(seq,17)
#结果
[root@backup py_basic]# ./search.py
3