第七章函数与函数式编程(甘琳凤)

1: 在Python中如何定义一个函数?
def 函数名([形参列表])
(缩进) 函数体

<1>:函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。
<2>:任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
<3>:函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。 <4>:函数内容以冒号起始,并且缩进。 <5>:return
[表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。

2:什么是Lambda函数?
lambda 函数是一个可以接收任意多个参数(包括可选参数)并且返回单个表达式值的匿名函数
3:什么是递归函数?在递归函数的使用中为什么需要设置终止条件?
<1>:递归函数是子调用函数,在函数体内部直接或间接地自己调用自己,即函数的嵌套调用时函数本身。
<2>:终止条件是表示递归的结束条件,用于返回函数值,不再递归调用,如果缺少终止条件的递归函数,将会导致无限递归函数调用,其最终结果是系统会耗尽内存。
上机实践练习:
2:编写程序,定义一个求阶乘的函数fact(n),并编写测试代码,要求输入整数n(n>=0)。请分别使用递归和非递归方式实现

递归实现代码如下:

def fac(n):
    if(n==0):
        return 1
    return n*fac(n-1)
print("请输入整数n(n>=0):",end=' ')
n=int(input())
print("{0}!={1}".format(n,fac(n)))

非递归代码如下:

def glf(n):
    s=1
    for i in range(1,n+1):
        s*=i
    return s
print("请输入整数n(n>=0):",end=' ')
n=int(input())
print("{0}!={1}".format(n,glf(n)))

运行结果如下:
在这里插入图片描述
3:编写程序,定义一个求Fibonacci数列的函数fib(n),并编写测试代码,输出前20项(每项宽度5个字符位置,右对齐),每行输出10个。请分别使用递归和非递归方式实现
递归代码如下:

def fib(n):
    if(n==1 or n==2):
        return 1
    return fib(n-1)+fib(n-2)
for i in range(1,21):
    print(str(fib(i)).rjust(5),end=' ')
    if(i%10==0):
        print()

非递归代码如下:

def glf(n):
    if(n==1 or n==2):
        return 1
    n1=n2=1
    for i in range(3,n+1):
        n3=n1+n2
        n1=n2
        n2=n3
    return n3
for i in range(1,21):
    print(str(glf(i)).rjust(5),end=' ')
    if(i%10==0):
        print()

运行结果如下:
在这里插入图片描述
4:编写程序,利用可变参数定义一个求任意个数数值的最小值的函数min_n(a,b,c),并编写测试代码。例如对于“print(min_n(8, 2))”以及“print(min_n(16, 1, 7, 4, 15))”的测试代码
代码如下:
** *

def min_n(a,b,*c):
    min=a
    if(a<b):
        min=a
    else:
        min=b
    for i in c:
        if(i<min):
            min=i
    return min
print("最小值为:{}".format(min_n(8, 2)))
print("最小值为:{}".format(min_n(16, 1, 7, 4, 15)))

运行结果如下:
在这里插入图片描述
5:编写程序,利用元组作为函数的返回值,求序列类型中的最大值、最小值和元素个数,并编写测试代码,假设测试代码数据分别为s1=[9, 7, 8, 3, 2, 1, 55, 6]、s2=[“apple”, “pear”, “melon”, “kiwi”]和s3=“TheQuickBrownFox”
代码如下:

def func(n):
    return (max(n), min(n), len(n))
s1 = [9, 7, 8, 3, 2, 1, 55, 6]
s2 = ["apple", "pear", "melon", "kiwi"]
s3 = "TheQuickBrownFox"
for i in (s1, s2, s3):
    print("list = ", i)
    t = func(i)
print("最大值 = {0},最小值 = {1},元素个数 = {2}".format(t[0], t[1], t[2]))

运行结果如下:
在这里插入图片描述

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值