python学习笔记三

倾然丶 夕夏残阳落幕 提交于 2020-02-26 20:14:47

  函数:

  __doc__:显示函数文档:也可使用help()

  

   函数中无法直接修改全局变量,需要对变量定义为global:

  

  global适用于函数内部修改全局变量的值

  nonlocal适用于嵌套函数中内部函数修改外部变量的值

  

  使用MyFunction1 时返回的是MyFunction1 这个函数;

  使用MyFunction1() 时返回的是MyFunction1 () 执行后的返回值,如果MyFunction1 ()函数没有返回值则返回值为None,

  

   lambda匿名函数:使用过后被清除,没有名字

  

   fileter()函数:用于过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象,如果要转换为列表,可以使用 list() 来转换。

  最终得出结果为true的新列表:

  

   递归算法:

   递归算法求阶乘:

1 ###递归函数求阶乘
2 def jiecheng(number):
3     if(number == 1):
4         return 1
5     else:
6         return number*jiecheng(number-1)
7 number = int(input('请输入一个正整数:'))
8 print(number,'的阶乘为:',jiecheng(number))
递归求阶乘

  结果:

  

  递归求斐波那契数列:

  一个数列,第一项为1,第二项为1,第三项开始,每一项都等于前两项的和。

 1 ##递归求斐波那契数列
 2 def number(month):
 3     if month == 1:
 4         return 1
 5     elif month == 2:
 6         return 1
 7     else:
 8         return number(month-1)+number(month-2)
 9 month = int(input('请输入一个正整数:'))
10 print(month,'个月后兔子数量为:',number(month))
递归求斐波那契数列

  结果:

  

  递归求汉诺塔问题:

    有三根杆(编号x、y、z),在x杆自下而上、由大到小按顺序放置n个金盘。游戏的目标:把x杆上的金盘全部移到z杆上,并仍保持原有顺序叠好。

 1 ###递归求汉诺塔问题
 2 #注:hanoi(盘子数量,第一根柱子,第二根柱子,第三根柱子)
 3 def hanoi(num,x,y,z):
 4     #如果只有一个盘子
 5     if num == 1:
 6         print(x,'-->',z)
 7     else:
 8         #将n-1个从x-->y
 9         hanoi(num-1,x,z,y)
10         #将最后一个由x-->z
11         print(x,'-->',z)
12         #将y-->z
13         hanoi(num-1,y,x,z)
14 num = int(input('请输入一个正整数:'))
15 if num>0:
16     hanoi(num,'x','y','z')
17 else:
18     print('请重新输入!')
递归求汉诺塔

   结果:

  

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!