一、学习目标
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<x:
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表达式对阶乘进行求解。
- 掌握了函数形参与实参的使用。