当前位置:首页 >> 理学 >>

Python核心编程(第二版)第十章习题答案


10.1 引发异常。以下的哪个因素会在程序执行时引发异常?注意这里我们问的并不是异常 的原因。 a)用户; b)解释器; c)程序; d)以上所有; e)只有 b)和 c); f)只有 a)和 c)。 答案:f 10-2.引发异常。参考上边问题的列表,哪些因素会在执行交互解释器时引发异常? 答案:f 10-3.关键字。用来引发异常的关键字有哪些? 答案:raise 10-4.关键字。try-except 和 try-finally 有什么不同? 答案: try-except:当 try 代码块运行出错,except 代码块才会被执行(匹配到相应异常时) ,处理 完异常后 try-except 后的代码会继续往下执行; try-finally:不管 try 代码块是否出现异常,最终都会执行 finally 里的代码。如果出现异常, 执行完 finally 代码块后,异常会继续往上层抛。 10-5.异常。 下面这些交互解释器下的 Python 代码段分别会引发什么异常(参阅表 10.2 给出的 内建异常清单): (a)>>>if 3 < 4 then:print '3 is less than 4!' (b)>>>aList = ['Hello','World','Anyone','Home?'] >>>print 'the last string in aList is: ',aList[len(aList)] (c)>>>x (d)>>>x = 4 % 0 (e)>>>import math >>>i = math.sqrt(-1) 答案: (a)SyntaxError: invalid syntax (b)IndexError: list index out of range (c)NameError: name 'x' is not defined (d)ZeroDivisionError: integer division or modulo by zero (e)ValueError: math domain error 10-6.改进的 open()。为内建的 open()函数创建一个封装。使得成功打开文件后,返回文件句 柄:若打开失败则返回给调用者 None,而不是生成一个异常。这样你打开文件就不需要额 外的异常处理语句。 答案: def try_open(filename,mode = 'r'):

try: f = open(filename,mode) except IOError: return None return f if __name__ == "__main__": print try_open('test1.txt') 10-7.异常。 下面两端 Python 伪代码 a)和 b)有什么区别?考虑语句 A 和 B 的上下文环境。 (这 么细致的区别要感谢 Guido!) (a) try: statement_A except . . .: ... else: statement_B

(b)

try: statement_A statement_B except . . .: ...

答案: 情况 1: 如果 statement_A 执行出错,则(a)和(b)都不会执行 statement_B; 情况 2: 如果 statement_A 执行正常,则 (a) 和(b)都会执行 statement_B——但是,如果 statement_B 的执行也出错,(b)可以在 except 子句里捕获到异常并做处理,而(a)则只能将 statement_B 产生的异常抛给上层调用者。 10–8.改进的 raw_input()。本章的开头,我们给出了一个”安全”的 float()函数,它建立在内建 函数 float()上,可以检测并处理 float()可能会引发的两种不同异常。同样,raw_input()函数也可 能会生成两种异常,EOFError(文件末尾 EOF,在 Unix 下是由于按下了 Ctrl+D 在 Dos 下是因为 Ctrl+Z) 或是 KeyboardInterrupt( 取消输入 ,一般是由于按下了 Ctrl+C)。请创建一个封装函数 safe_input(),在发生异常时返回 None。 答案: def safe_input(example): symbol = None try: symbol = raw_input(example) except (EOFError, KeyboardInterrupt): pass return symbol

if __name__ == '__main__': print safe_input('please input: ')

10-9.改进的 math.sqrt()。math 模块包含大量用于处理数值相关运算的函数和常量。不幸的 是,它不能识别复数,所以我们创建了 cmath 模块来支持复数相关运算。 请创建一个 safe_sqrt() 函数,它封装 math.sqrt()并能处理负值,返回一个对应的复数。 答案: import math, cmath def safe_sqrt(x): try: num = math.sqrt(x) except ValueError: num = cmath.sqrt(x) return num if __name__ == "__main__": x = float(raw_input('please input a number: ')) print safe_sqrt(x)


赞助商链接
相关文章:
python核心编程第二版第7章习题答案
python核心编程第二版第7章习题答案_教育学_高等教育_教育专区。python核心编程第二版第7章习题答案 7-1.字典方法。哪个字典方法可以用来把两个字典合并到一起。...
python核心编程第二版第4章习题答案
python核心编程第二版第4章习题答案_理学_高等教育_教育专区。python核心编程第二版第4章习题答案 4-1.Python 对象。与所有 Python 对象有关的三个属性是什么?...
Python核心第二版习题答案
Python核心第二版习题答案_文学_高等教育_教育专区。python核心编程第二版 答案 (更新中) Pytho 核心编程第二版(第二,三,四,五章)答案 第二 2-3 a=int(...
python核心编程第二版第9章习题答案
python核心编程第二版第9章习题答案 - 9–1. 文件过滤. 显示一个文件的所有行, 忽略以井号( # )开头的行. 这个字符被用做 Python , Perl, Tcl, 等大多...
python核心编程第二版第8章习题答案
python核心编程第二版第8章习题答案_教育学_高等教育_教育专区。python核心编程第二版第8章习题答案 8-1.条件语句。请看下边的代码: # statement A if x > ...
python核心编程第二版课后题答案第九章
python核心编程第二版课后题答案第九章_理学_高等教育_教育专区。python核心编程第二版课后题答案,转载,仅供参考 9.11 练习 9–1. 文件过滤. 显示一个文件的...
python核心编程第二版第3章习题答案
python核心编程第二版第3章习题答案_理学_高等教育_教育专区。python核心编程第二版第3章习题答案 3-1.标识符。为什么 Python 中不需要变量名和变量类型声明? ...
python核心编程第二版课后题答案第十五章
python核心编程第二版课后题答案第十五章_工学_高等教育_教育专区。python核心编程第二版课后题答案,转载,仅供参考 #15-1 识别下列字符串:“bat,”“bit,”“...
Python核心编程第三版课后习题解答(第二章)
Python核心编程第三版课后习题解答(第二章)_计算机软件及应用_IT/计算机_专业资料。Python核心编程第三版第章课后习题解答 Python 核心编程第三版课后习题解答—...
python核心编程第二版习题解答及执行结果第二章-py3.4实现
python核心编程第二版习题解答及执行结果第二-py3.4实现_计算机软件及应用_IT/计算机_专业资料。python核心编程第二版习题解答及执行结果第二-py3.4实现 附...
更多相关文章: