- 译者序
- 前言
- 第1章 问答环节
- 第2章 Python 如何运行程序
- 第3章 如何运行程序
- 第4章 介绍 Python 对象类型
- 第5章 数字
- 第6章 动态类型简介
- 第7章 字符串
- 第8章 列表与字典
- 第9章 元组、文件及其他
- 第10章 Python 语句简介
- 第11章 赋值、表达式和打印
- 第12章 if 测试和语法规则
- 第13章 while 和 for 循环
- 第14章 迭代器和解析,第一部分
- 第15章 文档
- 第16章 函数基础
- 第17章 作用域
- 第18章 参数
- 第19章 函数的高级话题
- 第20章 迭代和解析,第二部分
- 第21章 模块:宏伟蓝图
- 第22章 模块代码编写基础
- 第23章 模块包
- 第24章 高级模块话题
- 第25章 OOP:宏伟蓝图
- 第27章 更多实例
- 第28章 类代码编写细节
- 第29章 运算符重载
- 第30章 类的设计
- 第31章 类的高级主题
- 第32章 异常基础
- 第34章 异常对象
- 第35章 异常的设计
- 第36章 Unicode 和字节字符串
- 字符串基础知识
- Python 的字符串类型
- 文本和二进制文件
- Python 3.0 中的字符串应用
- 转换
- 编码 Unicode 字符串
- 编码非ASCII文本
- 编码和解码非ASCII文本
- 其他 Unicode 编码技术
- 转换编码
- 在 Python 2.6 中编码 Unicode 字符串
- 源文件字符集编码声明
- 使用 Python 3.0 Bytes 对象
- 序列操作
- 创建 bytes 对象的其他方式
- 混合字符串类型
- 使用 Python 3.0(和 Python 2.6)bytearray 对象
- 使用文本文件和二进制文件
- Python 3.0 中的文本和二进制模式
- 类型和内容错误匹配
- 使用 Unicode 文件
- 在 Python 3.0 中处理 BOM
- Python 2.6 中的 Unicode 文件
- Python 3.0 中其他字符串工具的变化
- Struct二进制数据模块
- pickle对象序列化模块
- XML解析工具
- 本章小结
- 本章习题
- 习题解答
- 第37章 管理属性
- 第38章 装饰器
- 第39章 元类
- 附录A 安装和配置
- 附录B 各部分练习题的解答
- 作者介绍
- 封面介绍
第二部分 练习题
1.基础。以交互模式,实验第2部分表中的常见类型的表达式。首先,打开Python交互模式解释器,输入下列表达式,然后试着说明每种情况所产生的结果。注意,在这些情况中,分号用作语句分隔符,以把多条语句压缩成单独的一行:例如,X=1;X赋值并打印出一个变量(本书下一部分将更多地介绍语句语法)。还要记住表达式之间的逗号通常用来构建元组,即便没有包围的圆括号:X,Y,Z是一个三项元组,Python打印它的时候会带上圆括号。
2.索引运算和分片运算。在交互模式提示符下,定义一个名为L的列表,内含四个字符串或数字(例如,L=[0,1,2,3])。然后,实验一些边界情况;你可能不会在真实的程序中看到这些例子,但是,它们用来促使你思考底层的模式,并且其中一些可能在较少的人为编写的形式中有用:
a.索引值超过边界时,会发生何事(例如,L[4])?
b.分片运算超出边界时又如何(例如,L[-1000:100])?
c.最后,如果你试着反向抽取序列,也就是较低边界值大于较高边界值(例如,L[3:1]),Python会怎么处理?提示:试着赋值至此分片(L[3:1]=['?']),看看此值置于何处。你觉得这和分片超出边界是相同的现象吗?
3.索引运算、分片运算以及del。定义另一个列表L,有四个元素,然后赋值一个空列表给其偏移值之一(例如,L[2]=[])。发生什么事?然后,赋值空列表给分片(L[2:3]=[])。现在,发生了什么事?回想一下,分片赋值运算删除分片,并将新值插入分片曾经的地方。
del叙述会删除偏移值、键、属性以及名称。将其用在列表上来删除一个元素(例如,del L[0])。如果你删除整个分片,会发生何事(del L[1:])?当你赋值非序列给分片时,会发生什么变化(L[1:2]=1)?
4.元组赋值运算。输入下面几行:
当你输入这个序列时,你觉得X和Y会发生什么变化?
5.字典键。考虑下列代码片段:
已知道字典不是按偏移值读取的,那么这里是在做什么?下面的例子让你看见了其主题吗?(提示:字符串、整数以及元组共享哪种类型分类?)
6.字典索引运算。创建一个字典,名为D,有三个元素,而键为'a'和'c'。如果你试着以不存在的键进行索引运算(D['d']),会发生何事?如果你试着赋值到不存在的键'd'(例如,D['d']='spam'),Python会怎么做?这一点和列表超出边界的赋值运算以及引用应该作何比较?这听起来是否像是变量名的规则?
7.通用运算。执行交互模式测试来回答下列问题:
a.使用“+”运算符在不同“/”混合的类型时(例如,字符串+列表和列表+元组),会发生何事?
b.当操作数之一是字典时,“+”还能工作吗?
c.append方法能用于列表和字符串吗?可以对列表使用keys方法吗?(提示:append对其主体对象做了什么假设吗?)
d.最后,当你对两个列表或两个字符串做分片或合并时,你会得到什么类型的对象?
8.字符串索引运算。定义一个S字符串,有四个字符:S="spam"。然后输入下列表达式:S[0][0][0][0][0]。对这一次所发生的事,有任何线索吗?(提示:回想一下,字符串是字符集合体,但是,Python字符是一个字符的字符串)。如果你将此索引表达式施加于['s','p','a','m']这种列表,还能运行吗?为什么?
9.不可变类型。再次定义一个四字符的S字符串:S="spam"。写个赋值运算,把字符串改成"slam";只使用分片和合并运算。你可以只用索引运算和串接进行相同运算吗?索引赋值运算行吗?
10.嵌套。写个数据结构,表示你的个人信息:姓名(名、中间名、姓)、年龄、工作、住址、电子信箱以及电话号码。你可以用任何喜欢的内置对象类型组合创建这个数据结构(列表、元组、字典、字符串、数字)。然后,通过索引运算读取数据结构的个别元素。就这个对象而言,有些结构是否比其他的更有道理?
11.文件。写个脚本,创建名为myfile.txt的新的输出文件,把字符串"Hello file world!"写入。然后写另一个脚本,开启myfile.txt,把其内容读出来并将其打印。从系统命令行执行你的两个脚本。新文件是否出现在执行脚本所在的目录中?如果对开启的文件名新增不同的目录路径,又会怎样?附注:文件写入方法是不会新增换行字符到你的字符串的;如果你想在文件中完全终止这一行,就在字符串末尾明确的增加\n。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论