《Python程序設(shè)計(jì)基礎(chǔ)》習(xí)習(xí)題答案與分析_第1頁
《Python程序設(shè)計(jì)基礎(chǔ)》習(xí)習(xí)題答案與分析_第2頁
《Python程序設(shè)計(jì)基礎(chǔ)》習(xí)習(xí)題答案與分析_第3頁
《Python程序設(shè)計(jì)基礎(chǔ)》習(xí)習(xí)題答案與分析_第4頁
《Python程序設(shè)計(jì)基礎(chǔ)》習(xí)習(xí)題答案與分析_第5頁
已閱讀5頁,還剩11頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、Python程序設(shè)計(jì)基礎(chǔ)習(xí)題答案與分析程昱第1章 基礎(chǔ)知識(shí) 簡單說明如何選擇正確的Python版本。答:在選擇Python的時(shí)候,一定要先考慮清楚自己學(xué)習(xí)Python的目的是什么,打算做哪方面的開發(fā),有哪些擴(kuò)展庫可用,這些擴(kuò)展庫最高支持哪個(gè)版本的Python,是Python 還是Python ,最高支持到Python 2.7.6還是Python 。這些問題都確定以后,再做出自己的選擇,這樣才能事半功倍,而不至于把大量時(shí)間浪費(fèi)在Python的反復(fù)安裝和卸載上。同時(shí)還應(yīng)該注意,當(dāng)更新的Python版本推出之后,不要急于更新,而是應(yīng)該等確定自己所必須使用的擴(kuò)展庫也推出了較新版本之后再進(jìn)行更新。盡管如

2、此,Python 3畢竟是大勢所趨,如果您暫時(shí)還沒想到要做什么行業(yè)領(lǐng)域的應(yīng)用開發(fā),或者僅僅是為了嘗試一種新的、好玩的語言,那么請毫不猶豫地選擇Python 系列的最高版本(目前是Python 3.4.3)。 為什么說Python采用的是基于值的內(nèi)存管理模式Python采用的是基于值的內(nèi)存管理方式,如果為不同變量賦值相同值,則在內(nèi)存中只有一份該值,多個(gè)變量指向同一塊內(nèi)存地址,例如下面的代碼。>>> x = 3>>> id(x)>>> y = 3>>> id(y)>>> y = 5>>> i

3、d(y)>>> id(x)>>> x = 1, 2, 3, 1, 1, 2>>> id(x0)=id(x3)=id(x4)True 解釋Python中的運(yùn)算符“/”和“3.4.2 else: print(x)except BaseException: print('You must input an integer.')2)Python 2.7.8代碼:import typesx = input('Please input an integer of more than 3 digits:')if type(

4、x) != : print 'You must input an integer.'elif len(str(x) != 4: print 'You must input an integer of more than 3 digits.'else: print x.2del.2oin(map(str,result)2)Python 2.7.8代碼x = input('Please input an integer less than 1000:')t = xi = 2result = while True: if t=1: break if t

5、%i=0: (i) t = t/i else: i+=1print x,'=','*'.join(map(str,result) 編寫程序,至少使用2種不同的方法計(jì)算100以內(nèi)所有奇數(shù)的和。答:Python 3.4.2代碼如下,如果使用Python 只需要把其中的print()函數(shù)改為print語句即可。x = i for i in range(1,100) if i%2=1print(sum(x)print(sum(range(1,100):2) 編寫程序,輸出所有由1、2、3、4這四個(gè)數(shù)字組成的素?cái)?shù),并且在每個(gè)素?cái)?shù)中每個(gè)數(shù)字只使用一次。答:Python 3.

6、4.2代碼如下,答:Python 3.4.2代碼如下,如果使用Python 只需要把其中的print()函數(shù)改為print語句即可。x = input('Please input x:')x = eval(x)if x<0 or x>=20: print(0)elif 0<=x<5: print(x)elif 5<=x<10: print(3*x-5)elif 10<=x<20: print*x-2) 編寫程序,實(shí)現(xiàn)分段函數(shù)計(jì)算,如下表所示。xyx<000<=x<5x5<=x<103x-510<

7、=x<2020<=x0答:Python 3.4.2代碼如下,如果使用Python 只需要把其中的print()函數(shù)改為print語句即可。x = input('Please input x:')x = eval(x)if x<0 or x>=20: print(0)elif 0<=x<5: print(x)elif 5<=x<10: print(3*x-5)elif 10<=x<20:print*x-2)第4章 字符串與正則表達(dá)式 假設(shè)有一段英文,其中有單獨(dú)的字母“I”誤寫為“i”,請編寫程序進(jìn)行糾正。答:這里給出Py

8、thon 3.4.2代碼,如果使用Python 的話只需要修改其中的print()函數(shù)為print語句即可。1)不使用正則表達(dá)式x = "i am a teacher,i am man, and i am 38 years am not a businessman."x = ('i ','I ')x = (' i ',' I ')print(x)2)使用正則表達(dá)式x = "i am a teacher,i am man, and i am 38 years am not a businessman.&

9、quot;import repattern = (r'(:w|b)i(:w)')while True: result = (x) if result: if (0) != 0: x = x:(0)+1+'I'+x(0)-1: else: x = x:(0)+'I'+x(0)-1: else: breakprint(x) 假設(shè)有一段英文,其中有單詞中間的字母“i”誤寫為“I”,請編寫程序進(jìn)行糾正。答:這里給出Python 3.4.2代碼,如果使用Python 的話只需要修改其中的print()函數(shù)為print語句即可。import rex = &q

10、uot;I am a teacher,I am man, and I am 38 years am not a busInessman."print(x)pattern = (r'(:w)I(:w)')while True: result = (x) if result: if (0) != 0: x = x:(0)+1+'i'+x(0)-1: else: x = x:(0)+'i'+x(0)-1: else: breakprint(x) 有一段英文文本,其中有單詞連續(xù)重復(fù)了2次,編寫程序檢查重復(fù)的單詞并只保留一個(gè)。例如文本內(nèi)容為“Th

11、is is is a desk.”,程序輸出為“This is a desk.”答:這里給出Python 3.4.2代碼,如果使用Python 的話只需要修改其中的print()函數(shù)為print語句即可。1)方法一import rex = 'This is a a desk.'pattern = (r'b(w+)(s+1)1,b')matchResult = (x)x = (1),x)print(x)2)方法二x = 'This is a a desk.'pattern = (r'(P<f>bw+b)s(P=f)')m

12、atchResult = (x)x = (0),(1) 簡單解釋Python的字符串駐留機(jī)制。答:Python支持字符串駐留機(jī)制,即:對于短字符串,將其賦值給多個(gè)不同的對象時(shí),內(nèi)存中只有一個(gè)副本,多個(gè)對象共享該副本。這一點(diǎn)不適用于長字符串,即長字符串不遵守駐留機(jī)制,下面的代碼演示了短字符串和長字符串在這方面的區(qū)別。>>> a = '1234'>>> b = '1234'>>> id(a) = id(b)True>>> a = '1234'*50>>> b =

13、 '1234'*50>>> id(a) = id(b)False 編寫程序,用戶輸入一段英文,然后輸出這段英文中所有長度為3個(gè)字母的單詞。答:這里給出Python 3.4.2代碼,如果使用Python 的話只需要修改其中的print()函數(shù)為print語句即可。import rex = input('Please input a string:')pattern = (r'ba-zA-Z3b')print(x)第5章 函數(shù)設(shè)計(jì)與使用 運(yùn)行5.3.1小節(jié)最后的示例代碼,查看結(jié)果并分析原因。答:原因是對于函數(shù)的默認(rèn)值參數(shù)只會(huì)被處理一

14、次,下次再調(diào)用函數(shù)并且不為默認(rèn)值參數(shù)賦值時(shí)會(huì)繼續(xù)使用上一次的結(jié)果,對于列表這樣的結(jié)構(gòu),如果調(diào)用函數(shù)時(shí)為默認(rèn)值參數(shù)的列表插入或刪除了元素,將會(huì)得到保留,從而影響下一次調(diào)用。 編寫函數(shù),判斷一個(gè)整數(shù)是否為素?cái)?shù),并編寫主程序調(diào)用該函數(shù)。答:這里給出Python 3.4.2代碼,如果使用Python 的話只需要修改其中的print()函數(shù)為print語句即可。import mathdef IsPrime(v): n = int(v)+1) for i in range(2,n): if v%i=0: return 'No' else: return 'Yes'print

15、(IsPrime(37)print(IsPrime(60)print(IsPrime(113) 編寫函數(shù),接收一個(gè)字符串,分別統(tǒng)計(jì)大寫字母、小寫字母、數(shù)字、其他字符的個(gè)數(shù),并以元組的形式返回結(jié)果。答:這里給出Python 3.4.2代碼,如果使用Python 的話只需要修改其中的print()函數(shù)為print語句即可。def demo(v): capital = little = digit = other =0 for i in v: if 'A'<=i<='Z': capital+=1 elif 'a'<=i<=

16、9;z': little+=1 elif '0'<=i<='9': digit+=1 else: other+=1 return (capital,little,digit,other)x = 'capital = little = digit = other =0'print(demo(x) 在函數(shù)內(nèi)部可以通過關(guān)鍵字 global 來定義全局變量。 如果函數(shù)中沒有return語句或者return語句不帶任何返回值,那么該函數(shù)的返回值為 None 。 調(diào)用帶有默認(rèn)值參數(shù)的函數(shù)時(shí),不能為默認(rèn)值參數(shù)傳遞任何值,必須使用函數(shù)定義時(shí)設(shè)

17、置的默認(rèn)值。(對、錯(cuò)) 在Python程序中,局部變量會(huì)隱藏同名的全局變量嗎請編寫代碼進(jìn)行驗(yàn)證。答案:會(huì)。>>> def demo():a=3print a>>> a=5>>> demo()3>>> a5 lambda表達(dá)式只能用來創(chuàng)建匿名函數(shù),不能為這樣的函數(shù)起名字。(對、錯(cuò)) 編寫函數(shù),可以接收任意多個(gè)整數(shù)并輸出其中的最大值和所有整數(shù)之和。答:這里給出Python 3.4.2代碼,如果使用Python 的話只需要修改其中的print()函數(shù)為print語句即可。def demo(*v): print(v) print(

18、max(v) print(sum(v)demo(1,2,3)demo(1,2,3,4)demo(1,2,3,4,5) 編寫函數(shù),模擬內(nèi)置函數(shù)sum()。答:這里給出Python 3.4.2代碼,如果使用Python 的話只需要修改其中的print()函數(shù)為print語句即可。def Sum(v): s = 0 for i in v: s += i return sx = 1,2,3,4,5print(Sum(x)x = (1,2,3,4,5)print(Sum(x) 包含 yield 語句的函數(shù)可以用來創(chuàng)建生成器。 編寫函數(shù),模擬內(nèi)置函數(shù)sorted()。答:這里給出Python 3.4.2代

19、碼,如果使用Python 的話只需要修改其中的print()函數(shù)為print語句即可。def Sorted(v): t = v: r = while t: tt = min(t) (tt) (tt) return rx = 1,3,5,2,1,0,9,7print(x)print(Sorted(x)第6章 面向?qū)ο蟪绦蛟O(shè)計(jì) 繼承節(jié)例2中的Person類生成Student類,填寫新的函數(shù)用來設(shè)置學(xué)生專業(yè),然后生成該類對象并顯示信息。答:Python 3.4.2代碼為import typesclass Person(object): #基類必須繼承于object,否則在派生類中將無法使用super

20、()函數(shù) def _init_(self, name = '', age = 20, sex = 'man'): (name) (age) (sex) def setName(self, name): if not isinstance(name,str): print('name must be string.') return = name def setAge(self, age): if not isinstance(age,int): print('age must be integer.') return = age

21、def setSex(self, sex): if sex != 'man' and sex != 'woman': print('sex must be "man" or "woman"') return = sex def show(self): print print printclass Student(Person): def _init_(self, name='', age = 30, sex = 'man', major = 'Computer'

22、;): #調(diào)用基類構(gòu)造方法初始化基類的私有數(shù)據(jù)成員 super(Student, self)._init_(name, age, sex) (major) #初始化派生類的數(shù)據(jù)成員 def setMajor(self, major): if not isinstance(major, str): print('major must be a string.') return = major def show(self): super(Student, self).show() printif _name_ ='_main_': zhangsan = Person

23、('Zhang San', 19, 'man') () lisi = Student('Li Si',32, 'man', 'Math') () 設(shè)計(jì)一個(gè)三維向量類,并實(shí)現(xiàn)向量的加法、減法以及向量與標(biāo)量的乘法和除法運(yùn)算。答:Python 3.4.2代碼如下class Vecter3: def _init_(self, x=0, y=0, z=0): = x = y = z def _add_(self, n): r = Vecter3() = + = + = + return r def _sub_(self, n

24、): r = Vecter3() = - = - = - return r def _mul_(self, n): r = Vecter3() = * n = * n = * n return r def _truediv_(self, n): r = Vecter3() = / n = / n = / n return r def _floordiv_(self, n): r = Vecter3()l = 類名_xxx”這樣的特殊方式來訪問。Python中沒有純粹的C+意義上的私有成員。 與運(yùn)算符“*”對應(yīng)的特殊方法名為 _pow_() ,與運(yùn)算符“.22.7.8.except.else.語

25、句。3)在實(shí)際開發(fā)中,同一段代碼可能會(huì)拋出多個(gè)異常,需要針對不同的異常類型進(jìn)行相應(yīng)的處理。為了支持多個(gè)異常的捕捉和處理,Python提供了帶有多個(gè)except的異常處理結(jié)構(gòu),這類似于多分支選擇結(jié)構(gòu),一旦某個(gè)except捕獲了異常,則后面剩余的except子句將不會(huì)再執(zhí)行。語法為:try:try塊#被監(jiān)控的語句except Exception1:except塊1#處理異常1的語句except Exception2:except塊2#處理異常2的語句4)將要捕獲的異常寫在一個(gè)元組中,可以使用一個(gè)except語句捕獲多個(gè)異常,并且共用同一段異常處理代碼,當(dāng)然,除非確定要捕獲的多個(gè)異??梢允褂猛欢未?/p>

26、碼來處理,并不建議這樣做。5)最后一種常用的異常處理結(jié)構(gòu)是try.except.finally.結(jié)構(gòu)。在該結(jié)構(gòu)中,finally子句中的內(nèi)存無論是否發(fā)生異常都會(huì)執(zhí)行,常用來做一些清理工作以釋放try子句中申請的資源。語法如下:try:finally:.#無論如何都會(huì)執(zhí)行的代碼 異常和錯(cuò)誤有什么區(qū)別答:異常是指因?yàn)槌绦驁?zhí)行過程中出錯(cuò)而在正??刂屏饕酝獠扇〉男袨椤?yán)格來說,語法錯(cuò)誤和邏輯錯(cuò)誤不屬于異常,但有些語法錯(cuò)誤往往會(huì)導(dǎo)致異常,例如由于大小寫拼寫錯(cuò)誤而訪問不存在的對象,或者試圖訪問不存在的文件,等等。 使用pdb模塊進(jìn)行Python程序調(diào)試主要有哪幾種用法答:主要有三種方式,1)在交互模式下使

27、用pdb模塊提供的功能可以直接調(diào)試語句塊、表達(dá)式、函數(shù)等多種腳本。2)在程序中嵌入斷點(diǎn)來實(shí)現(xiàn)調(diào)試功能在程序中首先導(dǎo)入pdb模塊,然后使用()在需要的位置設(shè)置斷點(diǎn)。如果程序中存在通過該方法調(diào)用顯式插入的斷點(diǎn),那么在命令提示符環(huán)境下執(zhí)行該程序或雙擊執(zhí)行程序時(shí)將自動(dòng)打開pdb調(diào)試環(huán)境,即使該程序當(dāng)前不處于調(diào)試狀態(tài)。3)使用命令行調(diào)試程序在命令行提示符下執(zhí)行“python m pdb 腳本文件名”,則直接進(jìn)入調(diào)試環(huán)境;當(dāng)調(diào)試結(jié)束或程序正常結(jié)束以后,pdb將重啟該程序。 Python內(nèi)建異常類的基類是 BaseException 。 斷言語句的語法為 assert 。 Python上下文管理語句是 wi

28、th 。第9章 GUI編程 設(shè)計(jì)一個(gè)窗體,并放置一個(gè)按鈕,單擊按鈕后彈出顏色對話框,關(guān)閉顏色對話框后提示選中的顏色。答:Python 2.7.8代碼如下,import wxclass wxGUI: def OnInit(self): frame = (parent=None, title='wxGUI', size=(160,140) panel = (frame, -1) buttonOK = (panel, -1, 'OK', pos=(0,0) , , buttonOK) () return True def OnButtonOK(self, event): colorDlg = (None) () color = ().Colour (str(color) app = wxGUI()() 設(shè)計(jì)一個(gè)窗體,并放置一個(gè)按鈕,按鈕默認(rèn)文本為“開始”,單擊按鈕后文本變?yōu)椤敖Y(jié)束”,再次單擊后變?yōu)椤伴_始”,循環(huán)切換。答:Python 2.7.8代碼如下,import wxclass wxGUI: def OnInit(self): frame = (parent=None, title='wxGUI', size=(160,140) panel = (frame, -1) = (panel,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論