75、文件和异常课后习题
10-6,7计算器
编写一个程序,提示用户输入两个数字,再将它们相加并打印结果。

但经常遇到一个问题,用户有可能输入的不是一个数字而引发错误,如:

这时候使用try-except代码块,当用户输入的不是数字时打印一条消息。

当用户犯错(输入的是文本而不是数字)后能够继续输入数字,我们使用了while循环。

10-8,9猫和狗
我编写一个程序让用户分别输入他喜欢的小猫和狗狗的名字,并把名字存储在两个文件cats.txt和dogs.txt放在当前目录下。


再编写一个程序,尝试读取这些文件,并将其内容打印到屏幕上。

然后再将这些代码稍微修改下加入一个形参animal用来提示这些名字是属于哪种动物的,再把代码放在一个try-except 代码块中,以便在文件不存在时捕获FileNotFound 错误,并打印一条友好的消息。

将dog.txt这个文件移到另一个地方,并确认except 代码块中的代码将正确地执行。

使用pass语句,让程序在文件不存在时一言不发。

10-10分析常见单词
我下载了一本电子求《Perfumes and their Preparation by Georg-e William Askinson》,使用方法count()来统计“the”这个单词在这本书中出现了几次。

结果发现,代码能够统计这本书有多少个单词,却在统计“the”这个单词时报错了,仔细检查后找到原因是:在代码第9行使用了函数split()把整本书的内容生成一个单词列表

而后在代码13行中

我使用函数lower()在这个列表中把字符串转换为小写而引起的错误,lower()函数不能在一个列表中使用,我把lower()函数删除就可以了。

但是问题又来了,如果“the”这个单词出现有字母大写的情况就统计不进来了,因此不是对这个列表进行统计,而是对没有变成列表前的整个文本内容使用函数lower()和count()进行统计,所以我把代码13行中的words换成contents就可以了
