《Python 3程序开发指南(第2版•修订版)》——1.5 练习

简介:

本节书摘来自异步社区《Python 3程序开发指南(第2版•修订版)》一书中的第1章,第1.5节,作者[英]Mark Summerfield,王弘博,孙传庆 译,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.5 练习

在本书的每一章最后,都有一节练习,设置练习的目的是鼓励读者对Python进行实践,获取实际经验,以助于吸收每章中所学的知识。本节包括的实例与练习既涉及数字处理,也涉及文本处理,以便尽可能满足更多读者的需求。此外,这些实例与练习都有非常小的代码规模,以便于读者将重点和注意力集中于学习与思考,而不是仅仅输入代码。本书的实例中,为每个练习都提供了一个解决方案。

1.bigdigits.py程序的一个变形,不再打印*,而是打印具体的数字。例如:

bigdigits_ans.py 719428306
77777   1    9999     4     222    888    333     000     666
    7   11   9   9    44    2   2  8   8  3   3   0   0    6
   7     1   9   9   4 4    2   2   8  8      3  0    0   6
  7      1    9999  4  4      2     888     33   0    0   6666
 7       1       9  444444   2     8  8      3  0     0   6   6
7        1       9     4    2      8   8  3   3   0   0   6   6
7       111      9     4    22222   888    333     000     666

可以采取两种方法。最简单的方法只是简单地改变列表中的,但这种方法太过死板,也不是你应该采取的方法。读者应该采取的方法是,改变处理代码,不再将每个数字的行字符串一次性地添加到行,而是逐个字符添加,遇到时,就使用相关的数字替代。

为实现上述方法,可以复制本章中讲解的bigdigits.py,并修改其中大概5行,这些工作并不难,但稍有些微妙之处。对于这一练习题,提供了解决方案bigdigits_ans.py。

2.IDLE可以用作一个功能非常强大而灵活的计算器,但有时候,针对特定任务的计算器也是有用的。创建一个程序,该程序提示用户在while循环中输入数值,并根据输入的数值逐步构建一个列表。用户结束输入(按Enter键)时,打印出输入的数值本身、输入数值个数、输入数值和、输入的最小值与最大值以及平均值(sum/count),下面给出一个运行实例:

average1_ans.py
enter a number or Enter to finish: 5
enter a number or Enter to finish: 4
enter a number or Enter to finish: 1
enter a number or Enter to finish: 8
enter a number or Enter to finish: 5
enter a number or Enter to finish: 2
enter a number or Enter to finish:
numbers: [5, 4, 1, 8, 5, 2]
count = 6 sum = 25 lowest = 1 highest = 8 mean = 4.16666666667

要完成这一程序,需要大约4行代码初始化必要的变量(空列表使用[]表示),少于15行代码实现while循环,包括基本的错误处理,最后打印相关结果也可以在几行代码中实现,因此,整个程序(包括为代码清晰添加的空白行)应该在25行左右。

3.有些情况下,我们需要生成测试文本——比如,在网站真实内容可用之前,生成一个Web站点的设计方案,或者在开发报告写入者之前提供测试内容。为这一目的,可以编写一个用于生成可怕的诗歌(那种让Vogon都自愧不如的诗歌)的程序。

创建一些词汇列表,比如,冠词("the"、"a"等)、主题("cat"、"dog"、"man"、"woman")、动词("sang"、"ran"、"jumped")与状语("loudly"、"quietly"、"well"、"badly")等,之后循环5次,在每次迭代中,使用random.choice()函数选取冠词、主题、动词、状语等内容。使用random.randint()函数在两种语句结构之间进行选择:冠词、主题、动词、状语;只包括冠词、主题与动词,之后打印语句,下面给出了一个运行的实例:

awfulpoetry1_ans.py
another boy laughed badly
the woman jumped
a boy hoped
a horse jumped
another man laughed rudely

为实现上述功能,你需要导入random模块。列表部分大概需要4~10行代码完成,具体代码量依赖于在其中放置多少词汇;循环本身需要不到10行代码,加上一些必要的空白行,整个程序代码量大约在20行左右。对于这一练习题,提供了解决方案awfulpoetry1_ans.py。

4.为了使得产生可怕诗歌的程序功能更丰富,可以向其中添加一些代码,以便于用户在命令行上输入一个数字(在1与10之间)时,程序将输出该数字代表的行数。如果没有给定命令行参数,默认就像以前一样打印5行。为了完成上述任务,需要改变主循环(比如,变为一个while循环)。要记住的是,Python的比较操作符可以结链,因此,在检查某参数是否在范围内时,并不需要使用逻辑and操作符。添加这些额外的功能,大概需要10行代码。对于这一练习题,提供了解决方案awfulpoetry2_ans.py.

5.对于练习2,如果可以计算中间值以及平均值,那么应该是一个不错的功能。为了做到这一点,我们必须对列表进行排序。在Python中,列表可以很容易地使用list.sort()方法排序,但是目前尚未讲解这方面的知识,因此这里不适用这种方法。使用一段对数列表排序的代码,扩展平均值计算程序——不需要太考虑性能问题,使用你能想到的最简单的方法即可。对列表排序后,如果列表有奇数个数据项,中间值就是中间那个数据项的值;如果列表有偶数个数据项,中间值就是两个中间项值的平均值。计算中间值,并将其与其他相关信息一起输出。

上面的要求还是相当棘手的,对不熟练的程序员更是如此。如果你已具备一些Python编程经验,可能仍然会感觉到有些棘手,尤其是要限定在使用本书到此为止讲解的相关知识。排序需要大约十几行代码,中间值计算(注意不能使用modulus操作符,因为本书尚未讲到)大约要4行代码。对于这一练习题,提供了解决方案average2_ans.py。

相关文章
|
2月前
|
机器学习/深度学习 数据挖掘 Python
Python编程入门——从零开始构建你的第一个程序
【10月更文挑战第39天】本文将带你走进Python的世界,通过简单易懂的语言和实际的代码示例,让你快速掌握Python的基础语法。无论你是编程新手还是想学习新语言的老手,这篇文章都能为你提供有价值的信息。我们将从变量、数据类型、控制结构等基本概念入手,逐步过渡到函数、模块等高级特性,最后通过一个综合示例来巩固所学知识。让我们一起开启Python编程之旅吧!
|
8天前
|
存储 NoSQL 数据库连接
在Python程序中实现LevelDB的海量key的分批次扫描
通过本文的步骤,您可以在Python程序中实现对LevelDB海量key的分批次扫描。这样不仅能够有效地管理大规模数据,还可以避免一次性加载过多数据到内存中,提高程序的性能和稳定性。希望这篇指南能为您的开发工作提供实用的帮助。
53 28
|
2月前
|
存储 Python
Python编程入门:打造你的第一个程序
【10月更文挑战第39天】在数字时代的浪潮中,掌握编程技能如同掌握了一门新时代的语言。本文将引导你步入Python编程的奇妙世界,从零基础出发,一步步构建你的第一个程序。我们将探索编程的基本概念,通过简单示例理解变量、数据类型和控制结构,最终实现一个简单的猜数字游戏。这不仅是一段代码的旅程,更是逻辑思维和问题解决能力的锻炼之旅。准备好了吗?让我们开始吧!
|
27天前
|
安全 API C语言
Python程序的安全逆向(关于我的OPENAI的APIkey是如何被盗的)
本文介绍了如何使用C语言编写一个简单的文件加解密程序,并讨论了如何为编译后的软件添加图标。此外,文章还探讨了Python的.pyc、.pyd等文件的原理,以及如何生成和使用.pyd文件来增强代码的安全性。通过视频和教程,作者详细讲解了生成.pyd文件的过程,并分享了逆向分析.pyd文件的方法。最后,文章提到可以通过定制Python解释器来进一步保护源代码。
73 6
|
1月前
|
IDE 程序员 开发工具
Python编程入门:打造你的第一个程序
迈出编程的第一步,就像在未知的海洋中航行。本文是你启航的指南针,带你了解Python这门语言的魅力所在,并手把手教你构建第一个属于自己的程序。从安装环境到编写代码,我们将一步步走过这段旅程。准备好了吗?让我们开始吧!
|
21天前
|
Shell 开发工具 Python
如何在vim里直接运行python程序
如何在vim里直接运行python程序
|
2月前
|
开发者 Python
使用Python实现自动化邮件通知:当长时程序运行结束时
本文介绍了如何使用Python实现自动化邮件通知功能,当长时间运行的程序完成后自动发送邮件通知。主要内容包括:项目背景、设置SMTP服务、编写邮件发送函数、连接SMTP服务器、发送邮件及异常处理等步骤。通过这些步骤,可以有效提高工作效率,避免长时间等待程序结果。
83 9
|
2月前
|
存储 人工智能 数据挖掘
Python编程入门:打造你的第一个程序
本文旨在为初学者提供Python编程的初步指导,通过介绍Python语言的基础概念、开发环境的搭建以及一个简单的代码示例,帮助读者快速入门。文章将引导你理解编程思维,学会如何编写、运行和调试Python代码,从而开启编程之旅。
54 2
|
2月前
|
Python
在Python中,`try...except`语句用于捕获和处理程序运行时的异常
在Python中,`try...except`语句用于捕获和处理程序运行时的异常
67 5
|
2月前
|
存储 Python
Python编程入门:理解基础语法与编写简单程序
本文旨在为初学者提供一个关于如何开始使用Python编程语言的指南。我们将从安装Python环境开始,逐步介绍变量、数据类型、控制结构、函数和模块等基本概念。通过实例演示和练习,读者将学会如何编写简单的Python程序,并了解如何解决常见的编程问题。文章最后将提供一些资源,以供进一步学习和实践。
59 1