




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、Python程序設(shè)計基礎(chǔ)習(xí)題答案與分析程昱第1章 基礎(chǔ)知識 簡單說明如何選擇正確的Python版本。答:在選擇Python的時候,一定要先考慮清楚自己學(xué)習(xí)Python的目的是什么,打算做哪方面的開發(fā),有哪些擴展庫可用,這些擴展庫最高支持哪個版本的Python,是Python 還是Python ,最高支持到Python 2.7.6還是Python 。這些問題都確定以后,再做出自己的選擇,這樣才能事半功倍,而不至于把大量時間浪費在Python的反復(fù)安裝和卸載上。同時還應(yīng)該注意,當(dāng)更新的Python版本推出之后,不要急于更新,而是應(yīng)該等確定自己所必須使用的擴展庫也推出了較新版本之后再進行更新。盡管如
2、此,Python 3畢竟是大勢所趨,如果您暫時還沒想到要做什么行業(yè)領(lǐng)域的應(yīng)用開發(fā),或者僅僅是為了嘗試一種新的、好玩的語言,那么請毫不猶豫地選擇Python 系列的最高版本(目前是Python 3.4.3)。 為什么說Python采用的是基于值的內(nèi)存管理模式Python采用的是基于值的內(nèi)存管理方式,如果為不同變量賦值相同值,則在內(nèi)存中只有一份該值,多個變量指向同一塊內(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中的運算符“/”和“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種不同的方法計算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這四個數(shù)字組成的素數(shù),并且在每個素數(shù)中每個數(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) 編寫程序,實現(xiàn)分段函數(shù)計算,如下表所示。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è)有一段英文,其中有單獨的字母“I”誤寫為“i”,請編寫程序進行糾正。答:這里給出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”,請編寫程序進行糾正。答:這里給出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ù)的單詞并只保留一個。例如文本內(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的字符串駐留機制。答:Python支持字符串駐留機制,即:對于短字符串,將其賦值給多個不同的對象時,內(nèi)存中只有一個副本,多個對象共享該副本。這一點不適用于長字符串,即長字符串不遵守駐留機制,下面的代碼演示了短字符串和長字符串在這方面的區(qū)別。>>> a = '1234'>>> b = '1234'>>> id(a) = id(b)True>>> a = '1234'*50>>> b =
13、 '1234'*50>>> id(a) = id(b)False 編寫程序,用戶輸入一段英文,然后輸出這段英文中所有長度為3個字母的單詞。答:這里給出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è)計與使用 運行5.3.1小節(jié)最后的示例代碼,查看結(jié)果并分析原因。答:原因是對于函數(shù)的默認(rèn)值參數(shù)只會被處理一
14、次,下次再調(diào)用函數(shù)并且不為默認(rèn)值參數(shù)賦值時會繼續(xù)使用上一次的結(jié)果,對于列表這樣的結(jié)構(gòu),如果調(diào)用函數(shù)時為默認(rèn)值參數(shù)的列表插入或刪除了元素,將會得到保留,從而影響下一次調(diào)用。 編寫函數(shù),判斷一個整數(shù)是否為素數(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ù),接收一個字符串,分別統(tǒng)計大寫字母、小寫字母、數(shù)字、其他字符的個數(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ù)時,不能為默認(rèn)值參數(shù)傳遞任何值,必須使用函數(shù)定義時設(shè)
17、置的默認(rèn)值。(對、錯) 在Python程序中,局部變量會隱藏同名的全局變量嗎請編寫代碼進行驗證。答案:會。>>> def demo():a=3print a>>> a=5>>> demo()3>>> a5 lambda表達(dá)式只能用來創(chuàng)建匿名函數(shù),不能為這樣的函數(shù)起名字。(對、錯) 編寫函數(shù),可以接收任意多個整數(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è)計 繼承節(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è)計一個三維向量類,并實現(xiàn)向量的加法、減法以及向量與標(biāo)量的乘法和除法運算。答: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īng)的特殊方法名為 _pow_() ,與運算符“.22.7.8.except.else.語
25、句。3)在實際開發(fā)中,同一段代碼可能會拋出多個異常,需要針對不同的異常類型進行相應(yīng)的處理。為了支持多個異常的捕捉和處理,Python提供了帶有多個except的異常處理結(jié)構(gòu),這類似于多分支選擇結(jié)構(gòu),一旦某個except捕獲了異常,則后面剩余的except子句將不會再執(zhí)行。語法為:try:try塊#被監(jiān)控的語句except Exception1:except塊1#處理異常1的語句except Exception2:except塊2#處理異常2的語句4)將要捕獲的異常寫在一個元組中,可以使用一個except語句捕獲多個異常,并且共用同一段異常處理代碼,當(dāng)然,除非確定要捕獲的多個異常可以使用同一段代
26、碼來處理,并不建議這樣做。5)最后一種常用的異常處理結(jié)構(gòu)是try.except.finally.結(jié)構(gòu)。在該結(jié)構(gòu)中,finally子句中的內(nèi)存無論是否發(fā)生異常都會執(zhí)行,常用來做一些清理工作以釋放try子句中申請的資源。語法如下:try:finally:.#無論如何都會執(zhí)行的代碼 異常和錯誤有什么區(qū)別答:異常是指因為程序執(zhí)行過程中出錯而在正??刂屏饕酝獠扇〉男袨?。嚴(yán)格來說,語法錯誤和邏輯錯誤不屬于異常,但有些語法錯誤往往會導(dǎo)致異常,例如由于大小寫拼寫錯誤而訪問不存在的對象,或者試圖訪問不存在的文件,等等。 使用pdb模塊進行Python程序調(diào)試主要有哪幾種用法答:主要有三種方式,1)在交互模式下使
27、用pdb模塊提供的功能可以直接調(diào)試語句塊、表達(dá)式、函數(shù)等多種腳本。2)在程序中嵌入斷點來實現(xiàn)調(diào)試功能在程序中首先導(dǎo)入pdb模塊,然后使用()在需要的位置設(shè)置斷點。如果程序中存在通過該方法調(diào)用顯式插入的斷點,那么在命令提示符環(huán)境下執(zhí)行該程序或雙擊執(zhí)行程序時將自動打開pdb調(diào)試環(huán)境,即使該程序當(dāng)前不處于調(diào)試狀態(tài)。3)使用命令行調(diào)試程序在命令行提示符下執(zhí)行“python m pdb 腳本文件名”,則直接進入調(diào)試環(huán)境;當(dāng)調(diào)試結(jié)束或程序正常結(jié)束以后,pdb將重啟該程序。 Python內(nèi)建異常類的基類是 BaseException 。 斷言語句的語法為 assert 。 Python上下文管理語句是 wi
28、th 。第9章 GUI編程 設(shè)計一個窗體,并放置一個按鈕,單擊按鈕后彈出顏色對話框,關(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è)計一個窗體,并放置一個按鈕,按鈕默認(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)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年X射線管項目建議書
- 小班健康預(yù)防傳染病知識課件
- 海外跨境電商平臺入駐與全球售后服務(wù)支持合同
- 抖音火花小程序版權(quán)審核與侵權(quán)賠償協(xié)議
- 拉美旅游度假村股權(quán)合作與經(jīng)營管理協(xié)議
- 新能源汽車電池租賃全面保障保險理賠服務(wù)補充協(xié)議
- 工業(yè)廢氣處理工程質(zhì)保服務(wù)及長期維護協(xié)議書
- 離婚協(xié)議財產(chǎn)分割、子女撫養(yǎng)、教育、醫(yī)療、贍養(yǎng)及探望權(quán)清單協(xié)議
- 酒店服務(wù)標(biāo)準(zhǔn)與運營培訓(xùn)體系
- 新能源汽車產(chǎn)業(yè)鏈股權(quán)合作與產(chǎn)業(yè)孵化協(xié)議
- 工廠環(huán)保知識培訓(xùn)
- 第10課-《在〈人民報-〉創(chuàng)刊紀(jì)念會上的演說》《在馬克思墓前的講話》(解析版)
- 中小學(xué)心理健康教育現(xiàn)狀問題與發(fā)展趨勢
- 房產(chǎn)過戶借款合同范例
- 《廣東省云浮市羅定產(chǎn)業(yè)轉(zhuǎn)移工業(yè)園地質(zhì)災(zāi)害危險性評估報告pdf》
- JJF(陜) 054-2021 人體靜電綜合測試儀校準(zhǔn)規(guī)范
- 美國制造業(yè)經(jīng)濟2024年度報告-2024-12-宏觀大勢
- 《電工與電子技術(shù)》期末考試復(fù)習(xí)題庫(含答案)
- 《神華新疆能源有限責(zé)任公司瑪納斯?jié)硥螢趁旱V礦山地質(zhì)環(huán)境保護與土地復(fù)墾方案》
- 我的家鄉(xiāng)河南許昌
- 2024年版水利水電工程標(biāo)準(zhǔn)施工招標(biāo)文件技術(shù)標(biāo)準(zhǔn)和要求(合同技術(shù)條款)
評論
0/150
提交評論