python 系列(6) 匿名函数和递归函数

Posted on Posted in python

## 匿名函数

  1. myfun = lambda x,y:x+y  
  2. print myfun(1,2)  
  3.   
  4. myfun01 = lambda x,y=1:x+y  
  5. print myfun01(9)  
  6.   
  7. mylist = [lambda x:x**2, lambda y:y**3, lambda z:z**4]  
  8. print mylist[0](2)  
  9.   
  10. for i in mylist:  
  11.     print i(3)  
  12.   
  13. goods_list = [('a',12,1000),('b',20,9000),('c',15,5000)]  
  14. print sorted(goods_list,key = lambda g:g[2])  

## 全局变量和局部变量

  1. def fun():  
  2.     print '函数一层'  
  3.     global fun2 #声明成全局函数  
  4.     def fun2():  
  5.         print '函数二层'  
  6.     return fun2()  
  7. fun()  
  8. fun2() #定义函数内部global后,必须先执行父函数,才能执行第二层函数  

> 举例

  1. # 数学心算  
  2. import random  
  3. import operator  
  4.   
  5. ops = {'+':operator.add, '-':operator.sub}  
  6. def doprobe():  
  7.     op = random.choice('+-')  
  8.     nums = [random.randint(10,99) for i in range(2)] #随机生成两个两位数的正整数  
  9.         nums.sort(reverse=True)  
  10.     result = ops[op](*nums)  
  11.     pr = '%d %s %d = ' % (nums[0],op,nums[1])  
  12.         count = 0  
  13.         while 1:  
  14.         res = int(raw_input(pr))  
  15.             if res == result:  
  16.                 print '回答正确'  
  17.                 break  
  18.             else:   
  19.                 print '回答错误'  
  20.                 count += 1  
  21.             if count == 3:  
  22.                 print '正确答案', result  
  23.                 break  
  24. doprobe()  

## 函数递归

  1. def sum(n):  
  2.     if m==1:  
  3.         return 1  
  4.     return n+sum(n-1)  
  5. print sum(100)  

Leave a Reply

Your email address will not be published. Required fields are marked *

six + 13 =