返回介绍

第三部分 练习题

发布于 2024-01-29 22:24:16 字数 1538 浏览 0 评论 0 收藏 0

现在,你知道了怎样去编写基本程序逻辑,下面的练习题会要求你使用语句实现一些简单的任务。多数工作在练习题4,让你探索代码编写的各种替代方法。此外,还有很多种方式可以安排语句,并且学习Python的一部分内容就是学习什么样的安排要比其他的更好。

参考附录B“第三部分语句和语法”的解答。

1.编写基本循环。

a.写个for循环,打印字符串S中每个字符的ASCII码。使用内置函数ord(character)把每个字符转换成ASCII整数(在交互模式下测试来观察其工作方式)。

b.接着,修改循环来计算字符串中所有字符的ASCII码的总和。

c.最后,再次修改代码,来返回一个新的列表,其中包含了字符串中每个字符的ASCII码。表达式map(ord,S)是否有类似的效果?(提示:参考第14章)。

2.反斜线字符。当在交互模式下输入下面的代码时,你的机器上会发生什么?

要注意,如果是在IDLE接口外执行,这个例子可能会发出蜂鸣声,所以,你可能不想在有很多人的实验室里执行。IDLE会改为打印奇怪的字符(参考表7-2的反斜线转义字符)。

3.排序字典。在第8章中,我们知道字典是无序集合体。编写一个for循环来按照排序后(递增)顺序打印字典的项目。提示:使用字典keys和列表sort方法,或者较新的sorted内置函数。

4.程序逻辑替代方案。考虑下列代码,使用while循环以及found标志位来搜索2的幂值列表[到2的5次方(32)]。它保存在名为power.py的模块文件内。

这个例子并没有遵循一般的Python代码编写的技巧。遵循这里所提到的步骤来改进它(就所有的转变而言,你可以在交互模式下输入代码,或者将其保存在脚本文件中从系统命令行来运行,使用文件会让这个练习更加容易):

a.首先,以while循环else分句重写这个代码来消除found标志位和最终的if语句。

b.接着,使用for循环和else分句重写这个例子,去掉列表索引运算逻辑。提示:要取得元素的索引,可以使用列表index方法(L.index(X)返回列表L中第一个X的偏移值)。

c.接着,重写这个例子,改用简单的in运算符成员关系表达式,从而完全移除循环(参考第8章的细节,或者以这种方式来测试:2 in[1,2,3])。

d.最后,使用for循环和列表append方法来产生2列表(L),而不是通过列表常量硬编码。

深入思考:

e.把2**X表达式移到循环外,这样能够改善性能吗?如何编写代码?

f.就像我们在练习题1中所看到过的,Python有一个map(function,list)工具也可以产生2次方值的列表:map(lambda x:2**x,range(7))。试着在交互模式下输入这段代码;我们将会在第19章正式引入lambda。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文