基于python语言-实验二 函数式编程实验

2022-05-19 18:56:15   文档大全网     [ 字体: ] [ 阅读: ]

#文档大全网# 导语】以下是®文档大全网的小编为您整理的《基于python语言-实验二 函数式编程实验》,欢迎阅读!
实验,函数,基于,语言,编程
基于python语言-实验二 函数式编程实验

一、实验目的

了解什么是函数式编程 了解函数式编程的优点

掌握lambda表达式、map()函数、filter()函数、reduce()函数、zip()函数的使用方法;

掌握闭包和递归函数的设计 掌握迭代器和生成器的设计

二、实验内容(包括分析或步骤)

1. 使用lambda表达式定义函数

定义函数完成z=x3+y/x3 定义函数完成z=x3+ x2+ x+1

2. 使用map()函数完成函数计算

使用map()函数依次计算[246810][13579]的乘积;(举例:2*14*3..

编写一个判断字符串是否是回文联的函数,然后使用map()函数依次判断

[abbbabbba ,“asababaSa”, asffbaffssa”, attbabtgba]是否是回文联;

3. 使用reduce()函数完成函数计算

使用reduce()函数计算[246810]的乘积;

使用reduce()函数计算[2-46-210-84-25]中正数的乘积; 4. 使用filter()函数完成函数计算

使用filter()函数将[have a apple’,’you are student’,’hello world]中,包含2个以上a字符的字符串过滤掉。 5. 使用递归函数设计完成计算

求第50位斐波纳契数列的值

楼梯有n阶台阶,上楼可以一步上1,也可以一步上2,利用递归算法编写程序计算共有多少种不同的走法. 三、实验实现

核心代码:

# from functools import reduce



1 3


def f1():

z1 = lambda x, y: x ** 3 + y / (x ** 3) z2 = lambda x: x ** 3 + x ** 2 + x + 1 print(z1(1, 2)) print(z2(1))

def f2():

m1 = map(lambda x, y: x * y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10]) m2 = map(lambda s: s[-1::-1] == s, ['abbbabbba',

'asababaSa', 'asffbaffssa', 'attbabtgba'])

print(list(m1)) print(list(m2))

def f3():

r1 = reduce(lambda x, y: x * y, [2, 4, 6, 8, 10]) r2 = reduce(lambda x, y: x * y if y > 0 else x, [2, -4, 6, -2, 10, -8, 4, -2, 5]) print(r1) print(r2)

def f4():

f1 = filter(lambda s: s.count('a') < 2, [

'have a apple', 'you are student', 'hello world']) print(list(f1))

def f5():

def f5_1(n=1, pre=1, pre_pre=0): if n is 1:

return pre else:

return f5_1(n - 1, pre + pre_pre, pre)

def f5_2(n): count = 0 if n >= 2:

count += f5_2(n - 1) # 1 count += f5_2(n - 2) # 2 elif n == 1:

count += f5_2(n - 1) else:

count = 1 return count



2 3


print(f5_1(50)) print(f5_2(10))

if __name__ == '__main__': f1() f2() f3() f4() f5()

#

运行结果:





3 3


本文来源:https://www.wddqxz.cn/bb4aafcbce1755270722192e453610661fd95ad2.html

相关推荐