大家有沒有在學(xué)習(xí)呢,?卡西準(zhǔn)備來講一下11關(guān)的課后習(xí)題啦,! 今天的爬樓口令是:【第十一關(guān)習(xí)題講解】 先來看11關(guān)的必做練習(xí),由3個(gè)小練習(xí)組成 第1個(gè),,當(dāng)我們執(zhí)行這個(gè)錯(cuò)誤代碼的時(shí)候會(huì)報(bào)錯(cuò),,報(bào)錯(cuò)的意思是: UnboundLocalError:賦值前引用的局部變量’sum_score’ 問題在于,當(dāng)我們?cè)诤瘮?shù)內(nèi)給sum_score這個(gè)變量賦值的時(shí)候,,因?yàn)槿忠泊嬖谝粋€(gè)同名變量,,所以程序分不清這里應(yīng)該是全局變量,還是局部變量 那么,,為了函數(shù)內(nèi)可以正常使用變量,,我們可以有兩種處理方式 一種是把sum_score放在函數(shù)里面定義 一種是在函數(shù)內(nèi)部,用global進(jìn)行聲明 第2個(gè),,當(dāng)我們執(zhí)行這個(gè)錯(cuò)誤代碼的時(shí)候不會(huì)報(bào)錯(cuò),,但是會(huì)陷入死循環(huán) 問題出在于這一句:if x == '小狗’ and x =='汪汪’: 這一句的意思是,當(dāng)x既等于 小狗 ,,也等于 汪汪 的時(shí)候,,才滿足if的條件 那我們思考一下,x是賦值了一次,是不是不可能存在同時(shí)存在兩個(gè)值的情況 或者從生活上的邏輯想一下,,當(dāng)我們喊 小狗 或者 汪汪的時(shí)候,,才滿足條件 所以,這里只要把條件的邏輯連接符改為or,,就可以了 第3個(gè),,被動(dòng)掉坑的情況。當(dāng)我們運(yùn)行代碼的時(shí)候,,會(huì)報(bào)錯(cuò)ZeroDivisionError: division by zero 意思是除數(shù)為0 為了避免除數(shù)為0的報(bào)錯(cuò),,我們有兩種debug方式 一種是利用今天學(xué)到的 try…except語句 相信大部分同學(xué)都想到這個(gè)了,但是有些同學(xué)可能會(huì)出現(xiàn)一個(gè)問題 把for循環(huán)放在try語句的里面,,這樣就會(huì)出現(xiàn),,當(dāng)執(zhí)行到except語句的時(shí)候,程序不會(huì)繼續(xù)往下走了 這是因?yàn)?,?dāng)程序執(zhí)行到except的時(shí)候,,被動(dòng)跳出了循環(huán)。所以循環(huán)未完成的部分也就執(zhí)行不到了 第二種解法是課堂的答案 這里用 if deposit[i-1] == 0: 來判斷除數(shù)是否為0 比如說當(dāng) i 為6的時(shí)候,,deposit[i-1]就是deposit[5],,也就是0。此時(shí)不進(jìn)行運(yùn)算 而其他情況則執(zhí)行else語句,,進(jìn)行運(yùn)算和打印 也講一下進(jìn)階練習(xí)吧,,進(jìn)階練習(xí)其實(shí)存在多種報(bào)錯(cuò)可能的情況 當(dāng)我們有多種報(bào)錯(cuò)的時(shí)候: 1)可以寫多個(gè)except語句 2)寫一個(gè)except語句,包含多個(gè)報(bào)錯(cuò)信息 3)用一個(gè)攏總的報(bào)錯(cuò)概括 這個(gè)進(jìn)階練習(xí)不難,,但是同學(xué)們也需要自己動(dòng)手寫寫看才可以哦 好啦,,我講完了。大家繼續(xù)學(xué)習(xí)吧 |
|