返回介绍

第二部分 练习题

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

这里涉及内置的对象基础。就像往常一样,一些新概念会在这个过程中出现,所以当你做完时(或者做不完时),一定要翻到附录B看一看答案。如果你时间有限,建议你从练习题10和11开始(最实际的),然后在时间允许的情况下,再从头做到尾。不过这全都是基本材料,所以能做多少就做多少吧。

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 技术交流群。

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

发布评论

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