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__)