[課後作業] 第032講:異常處理:你不可能總是對的|課後測試題及答案
VIDEO
《零基礎入門學習Python》視頻下載地址: 傳送門 Q9p_]7Z+MG
1j98.2x#'En%&6QkpqXR!*<TY=dV> 測試題: 權屬於: bbs.fishc.com ~8i<apfRzuB5)= XVcT6eW9j^b 0.結合你自身的編程經驗,總結下異常處理機制的重要性? >[ s&a) c%:IhXH5`xFQ|R"O]WqvL39,@umnJ 以下題目可以參考( http://bbs.fishc.com/thread-45814-1-1.html ),但要求不使用IDLE直接獲得答案。 sF.fx P%i1'UQvM =j5r786F{SC-4RY,kt 1.請問以下代碼是否會產生異常,如果會的話,請寫出異常的名稱:
>>> my_list = [1, 2, 3, 4,,]
複製代碼
q.;_$9r2JcUV[yFlRahLg%1TP~jEe 2.請問以下代碼是否會產生異常,如果會的話,請寫出異常的名稱:
>>> my_list = [1, 2, 3, 4, 5]
>>> print(my_list[len(my_list)])
複製代碼
l>8^Idt|Mz,E:ZuDr;ch[ 3.請問以下代碼是否會產生異常,如果會的話,請寫出異常的名稱:
>>> my_list = [3, 5, 1, 4, 2]
>>> my_list.sorted()
複製代碼
WimYJVe(Za30SN)$:k|GML6,tc{ 4.請問以下代碼是否會產生異常,如果會的話,請寫出異常的名稱:
>>> my_dict = {'host': 'http://bbs.fishc.com', 'port': '80'}
>>> print(my_dict['server'])
複製代碼
xQta]oDgl*?qh)S#.=^OrBWN}V_Ic 5.請問以下代碼是否會產生異常,如果會的話,請寫出異常的名稱:
def my_fun(x, y):
print(x, y)
my_fun(x=1, 2)
複製代碼
AzuY0DW%~^M'L5r3IvRbZtg{QpH6 6.請問以下代碼是否會產生異常,如果會的話,請寫出異常的名稱:
f = open('C:\\test.txt', wb)
f.write('I love FishC.com!\n')
f.close()
複製代碼
S=ZVBdCzLIo)x`g.!XP3ab 7.請問以下代碼是否會產生異常,如果會的話,請寫出異常的名稱:
def my_fun1():
x = 5
def my_fun2():
x *= x
return x
return my_fun2()
my_fun1()
複製代碼
pvZTW!=>{ykn9<hgx5'_CfOcz 8.請寫下這一節課你學習到的內容:格式不限,回憶並複述是加強記憶的好方式!
回复您的答案即可查看參考答案! n6>t%BsyG$ ?Rj~avN0dXqC]-FVWy6Psk%#)f`;1o 41@Dai^}R8gq#)>KrfHcET`eMn={5 測試題答案: 來自: bbs.fishc.com
本帖隱藏的內容
來自: bbs.fishc.com 0.結合你自身的編程經驗,總結下異常處理機制的重要性? 8vap>[r-5M 6ZIjLu^lRF.,NW2;z0xTps7h[ 答:由於環境的不確定性和用戶操作的不可以預知性都可能導致程序出現各種問題,因此異常機制最重要的無非就是:增強程序的健壯性和用戶體驗,盡可能的捕獲所有預知的異常並寫好處理的代碼,當異常出現的時候,程序自動消化並恢復正常(不至於崩潰)。 |j=N0AOq7p xvHOIy5J,;|W#[($E.?w1 以下題目可以參考( http://bbs.fishc.com/thread-45814-1-1.html ),但要求不使用IDLE直接獲得答案。 1JXAUMza -AZ9<:yrE]hFJtcRQuVsa 1.請問以下代碼是否會產生異常,如果會的話,請寫出異常的名稱: A6o<V
>>> my_list = [1, 2, 3, 4,,]
複製代碼
答:語法錯誤 版權屬於: bbs.fishc.com SyntaxError: invalid syntax ^ZHA! `L-_gAN9t,vOq+pVb:@C>M{ l2w0 Q0JXgdB3rT)Zw{DGeb&Yk-}^$ 2.請問以下代碼是否會產生異常,如果會的話,請寫出異常的名稱: ;5dLE?h{
>>> my_list = [1, 2, 3, 4, 5]
>>> print(my_list[len(my_list)])
複製代碼
答:len(my_list)是獲得列表的長度,這里長度為5,該列表各個元素的訪問索引號分別是:[0, 1, 2, 3, 4],因此試圖訪問my_list(5)會引發IndexError : list index out of range異常。 XdKJ' v5"<dlm4-%QMo~h,.3:E7TR 52%W)pRNJrBt1E#IF*Cw 3.請問以下代碼是否會產生異常,如果會的話,請寫出異常的名稱: mpWh:`s (M
>>> my_list = [3, 5, 1, 4, 2]
>>> my_list.sorted()
複製代碼
答:初學者容易疏忽的錯誤,列表的排序方法叫list.sort(),sorted()是BIF。 因此會引發AttributeError: 'list' object has no attribute 'sorted'異常。 HItK=>Z}G >CZY.p6eh^5,tObE#o3jg khg i01THOX-pt9D;F{aK 4.請問以下代碼是否會產生異常,如果會的話,請寫出異常的名稱: ?kKt^V}
>>> my_dict = {'host': 'http://bbs.fishc.com', 'port': '80'}
>>> print(my_dict['server'])
複製代碼
答:嘗試訪問字典中一個不存在的“鍵”引發KeyError: 'server'異常,為了避免這個異常發生,可以使用dict.get()方法: 9Cb&KS_~n
if not my_dict.get('server'):
print('您所訪問的鍵【server】不存在!')
複製代碼
zn[sFYG2xo$#B30r6Q*LEAi 5.請問以下代碼是否會產生異常,如果會的話,請寫出異常的名稱: 1]}psG7
def my_fun(x, y):
print(x, y)
my_fun(x=1, 2)
複製代碼
答:如果使用關鍵字參數的話,需要兩個參數均使用關鍵字參數my_fun(x=1, y=2) DZ4`!C( jZb7vsQPT`iU<]4z6{V!Xqp.R(:y T4d[ $2;w'iK3_oz~M8%n!tUJr 6.請問以下代碼是否會產生異常,如果會的話,請寫出異常的名稱: GJS{F
f = open('C:\\test.txt', wb)
f.write('I love FishC.com!\n')
f.close()
複製代碼
答:注意open()第二個參數是字符串,應該f = open('C:\\test.txt', 'wb') 。 wb不加雙引號Python還以為是變量名呢,往上一找,艾瑪沒找著……引發NameError異常。 由於打開文件失敗,接著下邊一連串與f相關的均會報同樣異常。 Yy<(|L3W] b#M` s+]"tdi>z@-BGX^hO|[ mH')"Lxh2lwV^8]<}s,yT:@ivOgRM 7.請問以下代碼是否會產生異常,如果會的話,請寫出異常的名稱: z?L x
def my_fun1():
x = 5
def my_fun2():
x *= x
return x
return my_fun2()
my_fun1()
複製代碼
答:閉包的知識大家還記得不? Python認為在內部函數的x是局部變量的時候,外部函數的x就被屏蔽了起來,所以執行x *= x的時候,在右邊根本就找不到局部變量x的值,因此報錯。 5%e1xW,u+ 9`oFwVhEBi}O_b~!TWe$P 在Python3之前沒有直接的解決方案,只能間接地通過容器類型來存放,因為容器類型不是放在棧裡,所以不會被“屏蔽”掉。 容器類型這個詞兒大家是不是似曾相識? 我們之前介紹的字符串、列表、元祖,這些啥都可以往裡的扔的就是容器類型啦。 u,gS>^ s^;CB1W#0x kw?c)&8d(j<_3 於是乎我們可以把代碼改造為: 來自: bbs.fishc.com
def my_fun1():
x = [5]
def my_fun2():
x[0] *= x[0]
return x[0]
return my_fun2()
my_fun1()
複製代碼
YdLZ3&w.7XoVSlUO"`@a 但是到了Python3的世界裡,又有了不少的改進,如果我們希望在內部函數里可以修改外部函數里的局部變量的值,那麼也有一個關鍵字可以使用,就是nonlocal : uC{L$J)1%E
def my_fun1():
x = 5
def my_fun2():
nonlocal x
x *= x
return x
return my_fun2()
my_fun1()
複製代碼
8.請寫下這一節課你學習到的內容:格式不限,回憶並複述是加強記憶的好方式! 小甲魚希望你認真對待作業就像你希望小甲魚推出高質量視頻一樣渴望^_^
Python標準異常總結
AssertionError 斷言語句(assert)失敗
AttributeError 嘗試訪問未知的對象屬性
EOFError 用戶輸入文件末尾標誌EOF(Ctrl+d)
FloatingPointError 浮點計算錯誤
GeneratorExit generator.close()方法被調用的時候
ImportError 導入模塊失敗的時候
IndexError 索引超出序列的範圍
KeyError 字典中查找一個不存在的關鍵字
KeyboardInterrupt 用戶輸入中斷鍵(Ctrl+c)
MemoryError 內存溢出(可通過刪除對象釋放內存)
NameError 嘗試訪問一個不存在的變量
NotImplementedError 尚未實現的方法
OSError 操作系統產生的異常(例如打開一個不存在的文件)
OverflowError 數值運算超出最大限制
ReferenceError 弱引用(weak reference)試圖訪問一個已經被垃圾回收機制回收了的對象
RuntimeError 一般的運行時錯誤
StopIteration 迭代器沒有更多的值
SyntaxError Python的語法錯誤
IndentationError 縮進錯誤
TabError Tab和空格混合使用
SystemError Python編譯器系統錯誤
SystemExit Python編譯器進程被關閉
TypeError 不同類型間的無效操作
UnboundLocalError 訪問一個未初始化的本地變量(NameError的子類)
UnicodeError Unicode相關的錯誤(ValueError的子類)
UnicodeEncodeError Unicode編碼時的錯誤(UnicodeError的子類)
UnicodeDecodeError Unicode解碼時的錯誤(UnicodeError的子類)
UnicodeTranslateError Unicode轉換時的錯誤(UnicodeError的子類)
ValueError 傳入無效的參數
ZeroDivisionError 除數為零
0 留言:
發佈留言