版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
《Python程序設(shè)計》習(xí)題與參考答案第1章基礎(chǔ)知識1.1簡單說明如何選擇正確的Python版本。答:在選擇Python的時候,一定要先考慮清楚自己學(xué)習(xí)Python的目的是什么,打算做哪方面的開發(fā),有哪些擴展庫可用,這些擴展庫最高支持哪個版本的Python,是Python2.x還是Python3.x,最高支持到Python2.7.6還是Python2.7.9。這些問題都確定以后,再做出自己的選擇,這樣才能事半功倍,而不至于把大量時間浪費在Python的反復(fù)安裝和卸載上。同時還應(yīng)該注意,當(dāng)更新的Python版本推出之后,不要急于更新,而是應(yīng)該等確定自己所必須使用的擴展庫也推出了較新版本之后再進行更新。盡管如此,Python3畢竟是大勢所趨,如果您暫時還沒想到要做什么行業(yè)領(lǐng)域的應(yīng)用開發(fā),或者僅僅是為了嘗試一種新的、好玩的語言,那么請毫不猶豫地選擇Python3.x系列的最高版本(目前是Python3.4.3)。1.2為什么說Python采用的是基于值的內(nèi)存管理模式?答:Python采用的是基于值的內(nèi)存管理方式,如果為不同變量賦值相同值,則在內(nèi)存中只有一份該值,多個變量指向同一塊內(nèi)存地址,例如下面的代碼。>>>x=3>>>id(x)10417624>>>y=3>>>id(y)10417624>>>y=5>>>id(y)10417600>>>id(x)104176241.3在Python中導(dǎo)入模塊中的對象有哪幾種方式?答:常用的有三種方式,分別為●import模塊名[as別名]●from模塊名import對象名[as別名]●frommathimport*1.4使用pip命令安裝numpy、scipy模塊。答:在命令提示符環(huán)境下執(zhí)行下面的命令:pipinstallnumpypipinstallscipy1.5編寫程序,用戶輸入一個三位以上的整數(shù),輸出其百位以上的數(shù)字。例如用戶輸入1234,則程序輸出12。(提示:使用整除運算。)答:1)Python3.4.2代碼:x=input('Pleaseinputanintegerofmorethan3digits:')try:x=int(x)x=x//100ifx==0:print('Youmustinputanintegerofmorethan3digits.')else:print(x)exceptBaseException:print('Youmustinputaninteger.')2)Python2.7.8代碼:importtypesx=input('Pleaseinputanintegerofmorethan3digits:')iftype(x)!=types.IntType:print'Youmustinputaninteger.'eliflen(str(x))!=4:print'Youmustinputanintegerofmorethan3digits.'else:printx//100第2章Python數(shù)據(jù)結(jié)構(gòu)2.1為什么應(yīng)盡量從列表的尾部進行元素的增加與刪除操作?答:當(dāng)列表增加或刪除元素時,列表對象自動進行內(nèi)存擴展或收縮,從而保證元素之間沒有縫隙,但這涉及到列表元素的移動,效率較低,應(yīng)盡量從列表尾部進行元素的增加與刪除操作以提高處理速度。2.2編寫程序,生成包含1000個0到100之間的隨機整數(shù),并統(tǒng)計每個元素的出現(xiàn)次數(shù)。(提示:使用集合。)答:1)Python3.4.2代碼importrandomx=[random.randint(0,100)foriinrange(1000)]d=set(x)forvind:print(v,':',x.count(v))2)Python2.7.8代碼importrandomx=[random.randint(0,100)foriinrange(1000)]d=set(x)forvind:printv,':',x.count(v)2.3編寫程序,用戶輸入一個列表和2個整數(shù)作為下標(biāo),然后輸出列表中介于2個下標(biāo)之間的元素組成的子列表。例如用戶輸入[1,2,3,4,5,6]和2,5,程序輸出[3,4,5,6]。答:1)Python3.4.2代碼x=input('Pleaseinputalist:')x=eval(x)start,end=eval(input('Pleaseinputthestartpositionandtheendposition:'))print(x[start:end])2)Python2.7.8代碼x=input('Pleaseinputalist:')start,end=input('Pleaseinputthestartpositionandtheendposition:')printx[start:end]2.4設(shè)計一個字典,并編寫程序,用戶輸入內(nèi)容作為鍵,然后輸出字典中對應(yīng)的值,如果用戶輸入的鍵不存在,則輸出“您輸入的鍵不存在!”答:1)Python3.4.2代碼d={1:'a',2:'b',3:'c',4:'d'}v=input('Pleaseinputakey:')v=eval(v)print(d.get(v,'您輸入的的鍵不存在'))2)Python2.7.8代碼d={1:'a',2:'b',3:'c',4:'d'}v=input('Pleaseinputakey:')print(d.get(v,'您輸入的的鍵不存在'))2.5編寫程序,生成包含20個隨機數(shù)的列表,然后將前10個元素升序排列,后10個元素降序排列,并輸出結(jié)果。答:1)Python3.4.2代碼importrandomx=[random.randint(0,100)foriinrange(20)]print(x)y=x[0:10]y.sort()x[0:10]=yy=x[10:20]y.sort(reverse=True)x[10:20]=yprint(x)2)Python2.7.8代碼importrandomx=[random.randint(0,100)foriinrange(20)]printxy=x[0:10]y.sort()x[0:10]=yy=x[10:20]y.sort(reverse=True)x[10:20]=yprintx2.6在Python中,字典和集合都是用一對
大括號
作為定界符,字典的每個元素有兩部分組成,即
鍵
和
值
,其中
鍵
不允許重復(fù)。2.7假設(shè)有列表a=['name','age','sex']和b=['Dong',38,'Male'],請使用一個語句將這兩個列表的內(nèi)容轉(zhuǎn)換為字典,并且以列表a中的元素為鍵,以列表b中的元素為值,這個語句可以寫為
c=dict(zip(a,b))。2.8假設(shè)有一個列表a,現(xiàn)要求從列表a中每3個元素取1個,并且將取到的元素組成新的列表b,可以使用語句
b=a[::3]。2.9使用列表推導(dǎo)式生成包含10個數(shù)字5的列表,語句可以寫為
[5foriinrange(10)]。2.10不可以
(可以、不可以)使用del命令來刪除元組中的部分元素。第3章選擇結(jié)構(gòu)與循環(huán)結(jié)構(gòu)3.1分析邏輯運算符“or”的短路求值特性。答:假設(shè)有表達式“表達式1or表達式2”,如果表達式1的值等價于True,那么無論表達式2的值是什么,整個表達式的值總是等價于True。因此,不需要再計算表達式2的值。3.2編寫程序,運行后用戶輸入4位整數(shù)作為年份,判斷其是否為閏年。如果年份能被400整除,則為閏年;如果年份能被4整除但不能被100整除也為閏年。答:1)Python3.4.2代碼x=input('Pleaseinputanintegerof4digitsmeaningtheyear:')x=eval(x)ifx@0==0or(x%4==0andnotx0==0):print('Yes')else:print('No')2)Python2.7.8代碼x=input('Pleaseinputanintegerof4digitsmeaningtheyear:')ifx@0==0or(x%4==0andnotx0==0):print'Yes'else:print'No'3.3編寫程序,生成一個包含50個隨機整數(shù)的列表,然后刪除其中所有奇數(shù)。(提示:從后向前刪。)答:1)Python3.4.2代碼importrandomx=[random.randint(0,100)foriinrange(50)]print(x)i=len(x)-1whilei>=0:ifx[i]%2==1:delx[i]i-=1print(x)2)Python2.7.8代碼把上面的代碼中第三行和最后一行改為printx即可。34編寫程序,生成一個包含20個隨機整數(shù)的列表,然后對其中偶數(shù)下標(biāo)的元素進行降序排列,奇數(shù)下標(biāo)的元素不變。(提示:使用切片。)答:1)Python3.4.2代碼importrandomx=[random.randint(0,100)foriinrange(20)]print(x)y=x[::2]y.sort(reverse=True)x[::2]=yprint(x)2)Python2.7.8代碼把上面的代碼中第三行和最后一行改為printx即可。35編寫程序,用戶從鍵盤輸入小于1000的整數(shù),對其進行因式分解。例如,10=2×5,60=2×2×3×5。答:1)Python3.4.2代碼x=input('Pleaseinputanintegerlessthan1000:')x=eval('x')t=xi=2result=[]whileTrue:ift==1:breakift%i==0:result.append(i)t=t/ielse:i=1Printx,'=','*'.join(map(str,result))2)Python2.7.8代碼x=input('Pleaseinputanintegerlessthan1000:')t=xi=2result=[]whileTrue:ift==1:breakift%i==0:result.append(i)t=t/ielse:i=1printx,'=','*'.join(map(str,result))3.6編寫程序,至少使用2種不同的方法計算100以內(nèi)所有奇數(shù)的和。答:Python3.4.2代碼如下,如果使用Python2.7.8只需要把其中的print()函數(shù)改為print語句即可。x=[iforiinrange(1,100)ifi%2==1]print(sum(x))print(sum(range(1,100)[::2]))3.7編寫程序,實現(xiàn)分段函數(shù)計算,如下表所示。xyx<000<=x<5x5<=x<103x-510<=x<200.5x-220<=x0答:Python3.4.2代碼如下,如果使用Python2.7.8只需要把其中的print()函數(shù)改為print語句即可。x=input('Pleaseinputx:')x=eval(x)ifx<0orx>=20:print(0)elif0<=x<5:print(x)elif5<=x<10:print(3*x-5)elif10<=x<20:print(0.5*x-2)
第4章字符串與正則表達式4.1假設(shè)有一段英文,其中有單獨的字母“I”誤寫為“i”,請編寫程序進行糾正。答:這里給出Python3.4.2代碼,如果使用Python2.7.8的話只需要修改其中的print()函數(shù)為print語句即可。1)不使用正則表達式x="iamateacher,iamman,andiam38yearsold.Iamnotabusinessman."x=x.replace('i','I')x=x.replace('i','I')print(x)2)使用正則表達式x="iamateacher,iamman,andiam38yearsold.Iamnotabusinessman."importrepattern=pile(r'(?:[^\w]|\b)i(?:[^\w])')whileTrue:result=pattern.search(x)ifresult:ifresult.start(0)!=0:x=x[:result.start(0)1]'I'x[result.end(0)-1:]else:x=x[:result.start(0)]'I'x[result.end(0)-1:]else:breakprint(x)4.2假設(shè)有一段英文,其中有單詞中間的字母“i”誤寫為“I”,請編寫程序進行糾正。答:這里給出Python3.4.2代碼,如果使用Python2.7.8的話只需要修改其中的print()函數(shù)為print語句即可。importrex="Iamateacher,Iamman,andIam38yearsold.IamnotabusInessman."print(x)pattern=pile(r'(?:[\w])I(?:[\w])')whileTrue:result=pattern.search(x)ifresult:ifresult.start(0)!=0:x=x[:result.start(0)1]'i'x[result.end(0)-1:]else:x=x[:result.start(0)]'i'x[result.end(0)-1:]else:breakprint(x)4.3有一段英文文本,其中有單詞連續(xù)重復(fù)了2次,編寫程序檢查重復(fù)的單詞并只保留一個。例如文本內(nèi)容為“Thisisisadesk.”,程序輸出為“Thisisadesk.”答:這里給出Python3.4.2代碼,如果使用Python2.7.8的話只需要修改其中的print()函數(shù)為print語句即可。1)方法一importrex='Thisisaadesk.'pattern=pile(r'\b(\w)(\s\1){1,}\b')matchResult=pattern.search(x)x=pattern.sub(matchResult.group(1),x)print(x)2)方法二x='Thisisaadesk.'pattern=pile(r'(?P<f>\b\w\b)\s(?P=f)')matchResult=pattern.search(x)x=x.replace(matchResult.group(0),matchResult.group(1))4.4簡單解釋Python的字符串駐留機制。答:Python支持字符串駐留機制,即:對于短字符串,將其賦值給多個不同的對象時,內(nèi)存中只有一個副本,多個對象共享該副本。這一點不適用于長字符串,即長字符串不遵守駐留機制,下面的代碼演示了短字符串和長字符串在這方面的區(qū)別。>>>a='1234'>>>b='1234'>>>id(a)==id(b)True>>>a='1234'*50>>>b='1234'*50>>>id(a)==id(b)False4.5編寫程序,用戶輸入一段英文,然后輸出這段英文中所有長度為3個字母的單詞。答:這里給出Python3.4.2代碼,如果使用Python2.7.8的話只需要修改其中的print()函數(shù)為print語句即可。importrex=input('Pleaseinputastring:'
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版綿陽市醫(yī)療機構(gòu)租賃合同4篇
- 2025年度城市綜合體施工合同(含裝修工程)2篇
- 2025年美團外賣騎手服務(wù)區(qū)域劃分合同
- 2025年冷鏈物流送貨員專業(yè)培訓(xùn)及聘用合同
- 二零二五年度農(nóng)業(yè)產(chǎn)業(yè)鏈借貸合同協(xié)議
- 二零二五年度太陽能光伏電站設(shè)備保險與理賠合同
- 2025年度智能家居租賃運營合同3篇
- 二零二五年度木門行業(yè)技術(shù)培訓(xùn)服務(wù)合同4篇
- 2025年度門禁系統(tǒng)項目投資與合作開發(fā)合同4篇
- 2025版農(nóng)藥農(nóng)膜行業(yè)風(fēng)險評估與管控合同3篇
- 柴油墊資合同模板
- 湖北省五市州2023-2024學(xué)年高一下學(xué)期期末聯(lián)考數(shù)學(xué)試題
- 城市作戰(zhàn)案例研究報告
- 【正版授權(quán)】 ISO 12803:1997 EN Representative sampling of plutonium nitrate solutions for determination of plutonium concentration
- 道德經(jīng)全文及注釋
- 2024中考考前地理沖刺卷及答案(含答題卡)
- 多子女贍養(yǎng)老人協(xié)議書范文
- 安踏運動品牌營銷策略研究
- 彩票市場銷售計劃書
- 骨科抗菌藥物應(yīng)用分析報告
- 支付行業(yè)反洗錢與反恐怖融資
評論
0/150
提交評論