《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。

相关文章
|
16天前
|
存储 Shell 区块链
怎么把Python脚本打包成可执行程序?
该文档介绍了如何将Python脚本及其运行环境打包成EXE可执行文件,以便在不具备Python环境的计算机上运行。首先确保Python脚本能够正常运行,然后通过安装PyInstaller并使用`--onefile`参数将脚本打包成独立的EXE文件。此外,还提供了去除命令行窗口和指定可执行文件图标的详细方法。这些步骤帮助用户轻松地将Python程序分发给最终用户。
怎么把Python脚本打包成可执行程序?
|
11天前
|
Python
探索Python编程的奥秘:打造你的第一个程序
【9月更文挑战第8天】本文将带你进入Python编程的世界,通过一个有趣的项目——制作一个简单的猜数字游戏,让你快速入门。我们不仅会分享代码编写的步骤,还会讲解每一行代码的含义和作用,确保即使是编程新手也能跟上节奏。文章末尾附有完整代码,方便读者实践和学习。
23 12
|
4天前
|
机器学习/深度学习 IDE 算法框架/工具
Python程序开发
Python程序开发
9 3
|
7天前
|
JSON 监控 数据挖掘
Python I/O管理新篇章:优化你的程序,让数据流动更顺畅
【9月更文挑战第13天】在数据驱动时代,Python因其在数据分析、科学计算及Web开发中的广泛应用而备受青睐。本文探讨了Python I/O管理的关键方面,包括理解I/O瓶颈、使用缓冲技术、并发与异步I/O、高效数据序列化及监控调试。通过具体示例,展示了如何优化文件读写和网络通信,提高程序性能。掌握这些技能,可使数据在程序中流动更加顺畅。
23 3
|
7天前
|
Python
惊!Python进程间通信IPC,让你的程序秒变社交达人,信息畅通无阻
【9月更文挑战第13天】在编程的世界中,进程间通信(IPC)如同一场精彩的社交舞会,每个进程通过优雅的IPC机制交换信息,协同工作。本文将带你探索Python中的IPC奥秘,了解它是如何让程序实现无缝信息交流的。IPC如同隐形桥梁,连接各进程,使其跨越边界自由沟通。Python提供了多种IPC机制,如管道、队列、共享内存及套接字,适用于不同场景。通过一个简单的队列示例,我们将展示如何使用`multiprocessing.Queue`实现进程间通信,使程序如同社交达人般高效互动。掌握IPC,让你的程序在编程舞台上大放异彩。
12 3
|
15天前
|
算法 程序员 Linux
Python编程入门:构建你的第一个程序
【9月更文挑战第4天】编程是现代技术发展的基石,而Python作为一门简洁、易学且功能强大的编程语言,已成为众多初学者的首选。本文将引导你通过一个简单的Python程序,探索编程世界的奥秘,并了解如何利用Python实现基本的算法逻辑。无论你是完全的新手还是希望巩固基础的开发者,这篇文章都将为你提供一个清晰的学习路径。从安装Python环境开始,到编写第一个程序,我们将一步步揭开编程的神秘面纱。
|
21天前
|
Python
Python编程入门:构建你的第一个程序
【8月更文挑战第31天】本文是面向初学者的Python编程指南,将引导读者通过实际案例学习Python基础。我们将一起编写一个简单的程序来展示如何运用变量、控制结构和函数等概念。文章末尾附有完整代码示例供参考和实践。
|
1月前
|
数据处理 UED Python
Python 进度条:告别枯燥等待,让你的程序动感十足!
Python 进度条:告别枯燥等待,让你的程序动感十足!
65 1
|
20天前
|
小程序 Python
Python 编程入门:打造你的第一个程序
【8月更文挑战第31天】 在数字化时代,编程已成为一项宝贵的技能。本文将通过一个简单示例引导初学者步入Python编程的世界。我们将从基础语法开始,逐步构建一个小程序,并在此过程中探索编程的逻辑思维与问题解决策略。无论你是科技爱好者还是职场新人,这篇文章都将为你开启编程之旅提供助力。
|
20天前
|
程序员 Python
Python 编程入门:打造你的第一个程序
【8月更文挑战第31天】编程初学者常常在起步时感到迷茫。本文将通过浅显易懂的方式,带领读者从零开始,一步步构建他们的第一个 Python 程序。我们将探索 Python 的安装、基础语法,并通过一个实际的项目——简易计算器,来巩固学习成果。无论你的背景如何,这篇文章都将为你打开编程世界的大门,让你轻松上手,享受编程的乐趣。