日拱一卒,伯克利教你Python进阶,高阶函数与lambda表达式

大哥在线求帮请分析下,日拱一卒,伯克利教你Python进阶,高阶函数与lambda表达式
最新回答
冰糖橙°

2024-11-27 05:54:57

大家好,我是梁唐,日拱一卒。在编程之旅中,lambda表达式和高阶函数是Python中极为重要的概念,它们构成了Python语法的核心部分,是学习Python时不能绕过的知识点。无论你是通过博客还是书籍学习,实际操作的练习是掌握技术的关键。我之前自学时常常缺乏实践场景,只能自己拼凑例子来练习。如今,伯克利的公开课资料为学习者提供了宝贵的资源,不仅能够听到专业老师的讲解视频,还能亲自参与课后练习和实验,这是一个绝佳的学习机会,而且所有资源都是免费的。


本系列将持续更新,欢迎有兴趣的同学们在评论区留下学习的足迹。我们准备开始这次的实验之旅。


首先,打开原始文档并下载压缩包,或从我的GitHub获取资源。解压后,你会看到一些文件,我们只关注lab03.py和lab03_extra.py,其他文件无需改动,它们主要是测试文件。


准备工作完成后,让我们进入实验阶段。以下是本次实验的关键任务:


必做题


Q1: GCD

古希腊数学家欧几里得在公元前300年发明了计算两个数最大公约数的算法。对于正数a和b,如果a不能被b整除,那么它们的最大公约数为b。实现欧几里得算法(辗转相除法)的递归版本。递归终止的条件是a % b = 0,此时的最大公约数就是b。


代码框架如下:


使用Ok测试程序进行验证。


Q2: Hailstone

回顾作业1中“hailstone”问题。对于任意正整数n,如果n是偶数则除以2,如果是奇数则乘以3加1,重复此操作直至n等于1。实现递归版本的hailstone,打印中间步骤并返回操作次数。


代码框架如下:


完成之后,通过Ok进行测试。


Q3: WWPD: Call Expressions

解答填空题,输入代码运行结果或返回情况。


使用命令:python3 ok -q call_expressions -u 进行测试。


共有六道题,难度适中,如果遇到困难,可以尝试复制代码到Python解释器中运行。


高阶函数


Q4: I Heard You Liked Functions...

设计一个函数cycle,接收三个函数f1, f2, f3。cycle返回一个新函数,接收整数n作为参数,并返回一个函数,该函数接收参数x,根据n值循环调用f1, f2, f3并应用在x上。


代码框架如下:


测试命令:python3 ok -q cycle


Lambda 表达式


Q5: Palindrome

实现一个判断回文数的lambda函数。回文数是从前往后和从后往前读起来一样的数字。请不要修改函数框架。


完成后,使用Ok进行测试。


Environment diagrams


Q6: Doge

绘制程序执行后的函数调用图。


提供专门的网站用于逐步展示绘制过程:pythontutor.com/composi...


More Recursion Practice


Q7: Find the Bug

找出递归函数中的错误并修复。验证答案后,测试代码。


代码框架及测试命令如下:


Q8: Is Prime

实现一个递归函数is_prime,判断一个数是否为质数。


提示:使用helper函数。


测试命令:python3 ok -q is_prime


Q9: Interleaved Sum

实现一个函数interleaved_sum,计算从1到n的term和,但奇数和偶数的term函数不同。避免使用循环或判断奇偶的逻辑。


代码框架及测试命令如下:


Q10: Ten-pairs

计算一个整数n中拥有的ten-pairs数量。ten-pair指的是n中两个数加起来等于10的组合。


提示:使用helper函数计算每个数字出现的次数。


测试命令:python3 ok -q ten_pairs


通过实验和练习,我明显感觉到自己对这些概念的理解和熟练度有所提升。我建议大家亲自尝试这些练习,享受编程带来的乐趣。希望你们也能从中获益。