Python Function Note

Python Function Note

1 #汉诺塔问题Python实现
2 def my_move(n, a, b, c):
3   if n == 1:
4     print(a + ' --> ' + c)
5   else:
6     my_move(n-1, a, c, b)#将前n-1个盘子从a放到b
7     my_move(1, a, b, c)#将最下面的盘子从a放到c
8     my_move(n-1, b, a, c)#将b上的n-1个盘子放到c上
9   return
1 #杨辉三角Python实现
2 def my_triangles(max):
3   i = 1
4   now = [1]
5   while i <= max:
6     yield now#保存当前list
7     now = [1] + [now[n]+now[n+1] for n in range(len(now)-1)] + [1]#构建下层list
8     i+=1
9   print('done')
 1 #实现将‘123.456’转换成123.456,即函数float的实现
 2 def my_float(s):
 3   def my_front(x, y):
 4     return x*10+y
 5   def my_behind(x, y):
 6     return x*0.1+y
 7 
 8   front = s.split('.')[0]
 9   behind = s.split('.')[1]
10   return reduce(my_front, map(int, front)) + 0.1*reduce(my_behind, map(int, behind))
 1 #利用埃氏筛法筛选出素数
 2 #产生无限的奇数
 3 def my_productNumber():
 4   n = 1
 5   while 1:
 6     n += 2
 7     yield n
 8 
 9 #返回判断是否是素数的函数
10 def my_isPrime(n):
11     return lambda x: x % n > 0
12 
13 #素数发生器
14 def my_Primes():
15   yield 2
16   it = my_productNumber()
17   while 1:
18     n = next(it)
19     yield n
20     it = filter(my_isPrime(n), it)
21 
22 for n in my_Primes():
23   if n < 100:
24     print(n)
25   else:
26     break
1 #判断一个数是否回文
2 def my_isPalindrome(n):
3   return str(n)[::-1] == str(n)
4 print(filter(my_isPalindrome, range(1, 1000)))
 1 #关于装饰器
 2 import functools
 3 
 4 def log(text=None):
 5   def decorator(func):
 6     @functools.wraps(func)
 7     def wrapper(*args, **kw):
 8       if text == None:
 9         # print('call %s()' % func.__name__)
10         pass
11       else:
12         # print('%s %s()' % (text, func.__name__))
13         pass
14       print('Begin Func↓')
15       temp = func(*args, **kw)
16       print('End Func↑')
17       return temp
18     return wrapper
19   return decorator
20 
21 @log('call')  #相当于now = log('hahaha')(now)
22 def now(t):
23   print("2015")
24   return t
25 now(4)
26 print(now.__name__)

 

posted @ 2016-01-14 19:05  jackma86  阅读(273)  评论(0编辑  收藏  举报