《Python编程创造营》实验指导手册习题精华解答汇编

举报
爱学习的多宝 发表于 2021/08/15 22:19:44 2021/08/15
【摘要】 《Python编程创造营》实验指导手册的配套习题精华解答

    笔者以为,华为云《Python编程创造营》最独具匠心的地方是其配套的实验手册,手册以华为云ModelArts平台为背景,编写了很多python程序代码。其中,部分手册最后留有习题,供大家思考和实践。之前笔者曾陆续写过一些习题解答的博文,但太过分散,这次借着《Python编程创造营》第二期活动的推出,重新整理并归纳相关博文,便写下了这篇汇编《Python编程创造营》实验指导手册的习题精华解答博文,以供学员参考。

  1. Python入门篇  《Python中的瓶瓶罐罐》实验指导手册第17页

     实现一个用于计算(包括加减乘除)的小程序,要求:1)接受用户输入的计算式(如:3*4+1.1);2) 计算值;3)将计算过程中涉及到的符号存储在元组中;4)将计算中涉及到的值去重后存在列表里面(由大到小排列)最后将计算过程存在字典里面(如 {"3*4+1.1":13.1}

     习题解答:

     这道题关键在于把握eval的计算使用和set集合的去重。

 HW2.JPG

    2. Python入门篇 《如果和复读机》实验指导手册第9页

     计算猴子吃桃问题。猴子第 1 天摘了若干个桃子,当即吃了一半零一个;第 2 剩下的吃了一半零一个,一直循环。到第十天时想吃就剩下一个桃子。求第一天摘了几个桃子?

  习题解答:

    这道题很适合动态规划的倒推思想,已知猴子第10天只剩下第1个桃子,则猴子在第9天应是(1+1)*2=4个桃子;现已知猴子第9天剩下的是4个桃子,则猴子第8天时应是(4+1)*2=10个桃子;现已知猴子第8天是10个桃子,则以此类推。可一直倒推至第1天的桃子数量。

    用python代码求解此题时,第一段代码采用了倒推方法使用for 循环,从第9天开始计数,设置步长-1,倒推至第1天。循环结束的同时,计算出第1天猴子吃桃数量。第二段代码则是采用递归函数的方法进行正向求解,欲求第1天猴子吃桃数量,则需要计算出第2天猴子吃桃数量;欲求第2天猴子吃桃数量,则需要计算出第3天猴子吃桃数量。如此一直递归,已知第10天猴子的桃子数量是1,而前一天的猴子吃桃数量与这一天有着数量上的对应关系。则递归可求解。

猴子吃桃.JPG

    3. Python进阶篇 《Python中的公式》实验指导手册第10页

    用函数解决约瑟夫环问题:一群小朋友(数量为 n)围坐一圈,从第 k 个(默认 k=0)小朋友开始数数,从 1 开始数到 m(默认为 3),数字为 m 的小朋友退出,然后下面的小朋友继续从 1 开始数,当一圈数完以后,第一个小朋友接着最后一个小朋友的数字继续,一直到只剩下一个小朋友,请问最后一个留下的是开始编号为多少的小朋友? 

   习题解答:

    设计函数Yuesefu, 含有三个变量,n表示参与游戏的总人数,m代表小朋友报的数字(默认为3),k代表游戏开始报数的编号为k的小朋友(默认为0)。使用Python设计语言,使用列表表示圆圈环的小朋友编号。灵活使用list.pop和list.append函数,结合while循环,把第一个报数的小朋友弹出圆圈队伍,并排入到队伍的最后,从而形成一个可以循环报数的圆圈队伍。当小朋友报的数字为程序要求的m时,此视该小朋友彻底退出圆环队伍,通过continue进入下一轮游戏报数, 不再参与队伍的后续排队。 当队伍中只留有一个小朋友时,退出游戏while循环,显示该小朋友的编号,游戏结束。当指定从编号K(k不是0)的小朋友开启游戏报数,则在游戏循环开始前,则先整理游戏队伍,把指定编号的小朋友放置在圆圈队伍的首位,然后再开始游戏。

   

约瑟夫求解截图.JPG

    4.Python进阶篇 《Python也要你的文件读写权限》实验指导手册第9页

    要求:构造一个函数用于获取给定路径下的所有文件(包括子文件夹中的文件),并将这些文件的路径写入文件中。

   习题解答:

    设计函数findFilePath。1).使用了with上下文管理器打开文件findallfiles.txt用于记录要寻找的文件路径,这样不用担心文件的手动关闭问题。2) 使用os.walk来返回目录下所有文件,并用root, dirs, files记录其目录路径,子目录及非目录文件。3)使用os.path.join按当前系统所能识别的方式链接完整路径名。4) 判断完整路径下的是否是文件,若是,则追加写入到findallfiles.txt文件中。最后,调用函数findFilePath,给任意指定的路径,函数会返回给定路径下的所有文件(包括所有子文件夹中的文件),并将这些文件路径写入文件findallfiles.txt中。findallfile.txt文件中存放着指定路径下的所有文件。

  

截图.jpg

   综上所述,这是笔者《Python编程创造营》实验手册习题精华解答汇编,其实白泽老师配套的实验指导手册里的习题会更多些,但笔者这里列举的是其中的精华。作为参与过《Python编程创造营》第一期活动的学员,《Python编程创造营》第二期的课程设计和教学安排上有其自身的特点,但课程的主体内容保持了一致性,白泽老师的实验手册依然是课程中的最大靓点。温故而知新,在重新汇编这份习题精华解答时,也让笔者对于《Python编程创造营》两期活动上有了更多的思考和认识,如果你对这两期《Python编程创造营》的区别有兴趣,可点击笔者的另一篇博文 技术开发课程的教学设计思考【基于Python编程创造营第一期和第二期的学习比较视角】-云社区-华为云 (huaweicloud.com) 。最后,祝愿每一位参与《Python编程创造营》的学员学有所成!




【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。