一、学习目标
1.掌握函数定义和调用。
2.掌握函数形参与实参的使用。
3.熟练掌握lambda表达式使用。
二、相关练习
1.建立自定义函数实现计算圆的面积和球的体积。
- def Count(radius):
-
- area = 3.14*radius**2
-
- volume = (4/3)*3.14*radius**3
-
- print('圆的面积为:{}'.format(area))
-
- print('球的体积为:{}'.format(volume))
-
- radius = float(input('请输入半径:'))
-
- Count(radius)
2.建立自定义函数求小于1000的斐波那契数列。
- def Fibonacci(n):
-
- if n==1 or n==2 :
-
- return 1
-
- else:
-
- return (Fibonacci(n-1)+Fibonacci(n-2))
-
-
-
- n = int(input('请输入一个小于1000的数(以计算斐波那列数列):'))
-
- if n>1000 or n<1:
-
-
-
- print('请在规定范围内输入!!!')
-
- else:
-
- for i in range(1,n+1):
-
- print(Fibonacci(i),end=' ')
3.建立自定义阶乘函数,求n!。
- import functools
-
-
-
- def factorial(n):
-
- if n==0 or n==1:
-
- return 1
-
- else:
-
- return (n*factorial(n-1))
-
- n = int(input('请输入n:'))
-
- print('n! = ',factorial(n))
-
- #用lambda表达式:print(functools.reduce(lambda x,y:x*y,range(1,n+1)))

4.编写函数模拟猜数游戏程序。系统随机产生一个数(<100),玩家最多可以猜5次,系统会根据玩家的猜测进行提示,玩家则可以根据系统的提示对下一次的猜测进行适当调整。
- #模拟猜数游戏.py
-
- import random
-
- x = random.randint(0,100)#系统随机产生一个小于100的数;
-
-
-
- #函数:根据玩家的猜测进行提示
-
- def imply(n,flag):
-
- if n
-
- print('猜小了!!你还有{0:}次机会\n'.format(flag))
-
- if n>x:
-
- print('猜大了!!你还有{0:}次机会\n'.format(flag))
-
- if flag == 0:
-
- print('游戏失败,系统随机所产生的数为:{0:}'.format(x))
-
-
-
- print('欢迎进入猜数小游戏')
-
- flag = 5 #记录所猜测的次数
-
- while flag>0:
-
- flag = flag - 1
-
- n = int(input('请输入你所猜测的数:'))
-
- if n == x:
-
- print('猜对了!!!游戏成功!!!')
-
- break
-
- else:
-
- imply(n,flag)


5.使用递归函数实现汉诺塔问题。(将n个从小到大依次排列的圆盘从柱子a移动到柱子c上,柱子b作为中间缓冲)
- def Hanoi(n,a,b,c):
-
- if n==1:
-
- print('{}->{}'.format(a,c))
-
- else:
-
- #a经过c移动到b
-
- Hanoi(n-1,a,c,b)
-
- #a直接移动到c
-
- Hanoi(1,a,b,c)
-
- #b经过a移动到c
-
- Hanoi(n-1,b,a,c)
-
-
-
- n = int(input('请输入n的值:'))
-
- Hanoi(n,'A','B','C')

三、总结
- 通过这次练习,更好的掌握函数定义和调用。
- 对递归有了更好的理解。
- 并学会运用lambda表达式对阶乘进行求解。
- 掌握了函数形参与实参的使用。