|
——知識(shí)點(diǎn)—— bug1:粗心 ①語(yǔ)法錯(cuò)誤:SyntaxError: invalid syntax 問(wèn)題:if 語(yǔ)句后面缺了 “:” 自動(dòng)檢測(cè)a = input('你是誰(shuí):') if a == '游樂(lè)王子' print('平平淡淡才是真') 正解: 自動(dòng)檢測(cè)a = input('你是誰(shuí):') if a == '游樂(lè)王子': print('平平淡淡才是真') ②語(yǔ)法錯(cuò)誤:SyntaxError: invalid syntax 問(wèn)題:for 語(yǔ)句后面的冒號(hào) “:” 應(yīng)為英文輸入 “:” 自動(dòng)檢測(cè)for i in range(3): print('延君賊帥') 正解: 自動(dòng)檢測(cè)for i in range(3): print('延君賊帥') ③沒(méi)有驗(yàn)證函數(shù)參數(shù)是否有效:SyntaxError: unexpected EOF while parsing 問(wèn)題:print 語(yǔ)句末尾缺了括號(hào) 自動(dòng)檢測(cè)a=10 b=11 print('我完成第%d關(guān)了,馬上完成第%d關(guān)'%(a,b) 正解: 自動(dòng)檢測(cè)a=10 b=11 print('我完成第%d關(guān)了,馬上完成第%d關(guān)'%(a,b)) ④與任何外部縮進(jìn)級(jí)別都不匹配:IndentationError: unindent does not match any outer indentation level 問(wèn)題:第 6 行的 else 與第 4 行的 if 沒(méi)有對(duì)齊 自動(dòng)檢測(cè)a=int(input('今天完成第幾關(guān)了?')) if a > 10: print('有10關(guān)的筆記') if a >= 11: print('有11關(guān)的筆記') else: print('沒(méi)11關(guān)的筆記') else: print('沒(méi)10關(guān)的筆記') 正解: 自動(dòng)檢測(cè)a=int(input('今天完成第幾關(guān)了?')) if a > 10: print('有10關(guān)的筆記') if a >= 11: print('有11關(guān)的筆記') else: print('沒(méi)11關(guān)的筆記') else: print('沒(méi)10關(guān)的筆記') ⑤類型無(wú)法比較錯(cuò)誤:TypeError: '<' not supported between instances of 'str' and 'int' 問(wèn)題:input 的值為字符型,18 為整數(shù)型,二者無(wú)法比較 自動(dòng)檢測(cè)a=input('同學(xué)知道延君幾歲嗎?') if a < 18: print('答對(duì)了') else: print('答錯(cuò)了') 正解: 自動(dòng)檢測(cè)a=int(input('同學(xué)知道延君幾歲嗎?')) if a < 18: print('答對(duì)了') else: print('答錯(cuò)了') ⑥語(yǔ)法錯(cuò)誤:SyntaxError: invalid syntax 問(wèn)題:= 是賦值語(yǔ)句,== 是判斷語(yǔ)句,不要混淆 自動(dòng)檢測(cè)a=input('同學(xué)記得今天是 day 幾嗎?') if a = '2': print('答對(duì)了') else: print('答錯(cuò)了') 正解: 自動(dòng)檢測(cè)a=input('同學(xué)記得今天是 day 幾嗎?') if a == '2': print('答對(duì)了') else: print('答錯(cuò)了') ⑦變量未定義錯(cuò)誤:NameError: name 'random' is not defined 問(wèn)題:random 模塊未定義,導(dǎo)致提示變量 random 未定義 自動(dòng)檢測(cè)a=random.random() print(a) 正解: 自動(dòng)檢測(cè)import random a=random.random() print(a) bug2:知識(shí)不熟練 ①超出列表范圍:IndexError: list index out of range 問(wèn)題:列表的索引是從 0 開(kāi)始,而不是 1 自動(dòng)檢測(cè)a=['day1','day2'] print(a[2]) 正解: 自動(dòng)檢測(cè)a=['day1','day2'] print(a[1]) ②字典沒(méi)有 append 方法:AttributeError: 'dict' object has no attribute 'append' 問(wèn)題:字典的元素新增是 d['X']=Y 自動(dòng)檢測(cè)d={'延君':1,'卡西':2} d.append('七七') print(d) 正解: 自動(dòng)檢測(cè)d={'延君':1,'卡西':2} d['七七']=3 print(d) bug3、思路不清 在思路不清晰時(shí),我們可以適當(dāng)在代碼中加入 print 語(yǔ)句,打印我們不理解的變量。 例如下面,我們不理解第 5 行的 變量 c 為多少,可以在第 5 行下面加上 print(c) ,借此來(lái)打印我們不理解的值 自動(dòng)檢測(cè)def A(): a='延君' b='卡西' return a,b def B(c): # print(c) name1=c[0] name2=c[1] print(name1 name2) def main(): e=A() B(e) main() try... except... 語(yǔ)句 使用:try 語(yǔ)句內(nèi)放執(zhí)行語(yǔ)句,except 語(yǔ)句放輸入錯(cuò)誤后需要進(jìn)行的下一步操作,例如: 自動(dòng)檢測(cè)try: a=input('同學(xué)知道延君幾歲嗎?') if a < 18: print('答對(duì)了') else: print('答錯(cuò)了') except: print('輸入有誤') 這里無(wú)論輸入任何數(shù)字都會(huì)打印出“輸入有誤”的原因是“input 的值為字符型,18 為整數(shù)型,二者無(wú)法比較”。 ——練習(xí)常見(jiàn)問(wèn)題—— Q1;這里的i-1不太理解什么意思? 
A1:len(deposit)的值是8,所以i1的取值是1到7,當(dāng)i取值為1時(shí),deposit[0]指的是第一個(gè)元素,也就是100,當(dāng)i取值為2時(shí),deposit[1]指的是第二個(gè)元素,取的是300,以此類推下去 Q2:except后面一定要跟Error嗎? 
A2:可以不跟具體的Error報(bào)錯(cuò)信息 Q3:為什么將float去掉就會(huì)報(bào)錯(cuò)? 
A3:因?yàn)樵谒膭t運(yùn)算中,只有整數(shù)和浮點(diǎn)數(shù)才可以運(yùn)算,字符串不可以,所以去除掉float會(huì)報(bào)錯(cuò) Q4:硬幣練習(xí)——為什么不可以直接在括號(hào)里寫“正面”、“反面”? 
A4:括號(hào)里只能是數(shù)字,這是固定用法。在python中的random.randint(a,b)用于生成一個(gè)指定范圍內(nèi)的整數(shù)。其中參數(shù)a是下限,參數(shù)b是上限,生成的隨機(jī)數(shù)n: a <= n <= b。 Q5:課后練習(xí)——sum_score問(wèn)題 
|