《Python核心程式設計》第10章 習題

2021-07-08 16:52:55 字數 1408 閱讀 7590

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...