10–6. 改進的 open().
為內建的 open() 函式建立乙個封裝. 使得成功開啟檔案後, 返回檔案控制代碼; 若開啟失敗則返回給呼叫者 none , 而不是生成乙個異常. 這樣你開啟檔案時就不需要額外的異常處理語句
def myopen(infile,mode='r'):
try:
fo=open(infile,mode)
except ioerror:
fo=none
return fo
if __name__ == '__main__':
f = myopen('1.txt')
print f
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(inputstr):
try:
instr=raw_input(inputstr)
except (eoferror,keyboardinterrupt):
instr=none
return instr
if __name__ == '__main__':
s = safe_input('pls input something:')
print s
10–9. 改進的 math.sqrt().
math 模組包含大量用於處理數值相關運算的函式和常量. 不幸的是, 它不能識別複數, 所以我們建立了 cmath 模組來支援複數相關運算. 請建立乙個safe_sqrt() 函式, 它封裝 math.sqrt() 並能處理負值, 返回乙個對應的複數.
import cmath,math
def safe_sqrt(x):
try:
num=math.sqrt(x)
except valueerror:
num=cmath.sqrt(x)
return num
if __name__ == '__main__':
x = float(raw_input('pls input a number:'))
s = safe_sqrt(x)
print s
Python核心程式設計v2 0 第10章習題答案
10.1 不確定 程式執行時產生的異常可能來自於 使用者,程式 10.2 不確定 在執行互動直譯器的時候會引發異常 直譯器,程式 10.3 觸發 引發的關鍵字為raise 10.4 try except 定義了進行異常監控的一段 提供了異常處理的機制。在程式執行時,直譯器嘗試執行try模組裡的 如果...
《Python核心程式設計》第14章 習題
14 3.執行環境。建立執行其他python 指令碼的指令碼。filename r d test.py execfile filename 14 4.os.system 呼叫os.system 執行程式。附加題 將你的解決方案移植到subprocess.call import os from sub...
python核心程式設計第12章習題
12 1路徑搜尋和搜尋路徑有什麼不同 路徑搜尋是查詢某個檔案的操作,搜尋路徑是查詢一組目錄。12 2匯入屬性。假設你的模組mymodule裡有乙個foo 函式。a 把這個函式匯入到你的命名空間有哪兩種方法?b 這兩種方法匯入後的命名空間有什麼不同?from mymodule import foo i...