版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
Python程序設計基礎習題答案與分析程昱
第1章基礎知識1.1簡單說明如何選擇正確的Python版本。答:在選擇Python的時候,一定要先考慮清楚自己學習Python的目的是什么,打算做哪方面的開發(fā),有哪些擴展庫可用,這些擴展庫最高支持哪個版本的Python,是Python2.x還是Python3.x,最高支持到Python2.7.6還是Python2.7.9。這些問題都確定以后,再做出自己的選擇,這樣才能事半功倍,而不至于把大量時間浪費在Python的反復安裝和卸載上。同時還應該注意,當更新的Python版本推出之后,不要急于更新,而是應該等確定自己所必須使用的擴展庫也推出了較新版本之后再進行更新。盡管如此,Python3畢竟是大勢所趨,如果您暫時還沒想到要做什么行業(yè)領域的應用開發(fā),或者僅僅是為了嘗試一種新的、好玩的語言,那么請毫不猶豫地選擇Python3.x系列的最高版本(目前是Python3.4.3)。1.2為什么說Python采用的是基于值的內存管理模式?Python采用的是基于值的內存管理方式,如果為不同變量賦值相同值,則在內存中只有一份該值,多個變量指向同一塊內存地址,例如下面的代碼。>>>x=3>>>id(x)10417624>>>y=3>>>id(y)10417624>>>y=5>>>id(y)10417600>>>id(x)10417624>>>x=[1,2,3,1,1,2]>>>id(x[0])==id(x[3])==id(x[4])True1.3解釋Python中的運算符“/”和“//”的區(qū)別。答:在Python2.x中,“/”為普通除法,當兩個數值對象進行除法運算時,最終結果的精度與操作數中精度最高的一致;在Python3.x中,“/”為真除法,與除法的數學含義一致。在Python2.x和Python3.x中,“//”表示整除,對整數或浮點數進行該運算時,結果為數學除法的整數部分。1.4在Python中導入模塊中的對象有哪幾種方式?答:常用的有三種方式,分別為●import模塊名[as別名]●from模塊名import對象名[as別名]●frommathimport*1.5
pip
是目前比較常用的Python擴展庫管理工具。1.6解釋Python腳本程序的“__name__”變量及其作用。答:每個Python腳本在運行時都有一個“__name__”屬性。如果腳本作為模塊被導入,則其“__name__”屬性的值被自動設置為模塊名;如果腳本獨立運行,則其“__name__”屬性值被自動設置為“__main__”。利用“__name__”屬性即可控制Python程序的運行方式。1.7運算符“%”
可以
(可以、不可以)對浮點數進行求余數操作。1.8一個數字“5”
是
(是、不是)合法的Python表達式。1.9在Python2.x中,input()函數接收到的數據類型由
界定符
確定,而在Python3.x中該函數則認為接收到的用戶輸入數據一律為
字符串
。1.10編寫程序,用戶輸入一個三位以上的整數,輸出其百位以上的數字。例如用戶輸入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序列2.1為什么應盡量從列表的尾部進行元素的增加與刪除操作?答:當列表增加或刪除元素時,列表對象自動進行內存擴展或收縮,從而保證元素之間沒有縫隙,但這涉及到列表元素的移動,效率較低,應盡量從列表尾部進行元素的增加與刪除操作以提高處理速度。2.2range()函數在Python2.x中返回一個
包含整數的列表
,而Python3.x的range()函數返回一個
可迭代的range對象
。2.3編寫程序,生成包含1000個0到100之間的隨機整數,并統計每個元素的出現次數。答:可以使用集合來實現該功能。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)也可以直接使用字典來實現該功能,并且獲得更高的執(zhí)行效率,例如下面的Python3.4.2代碼:listRandom=[random.randint(1,100)foriinrange(1000000)]d=dict()start=time.time()foriinlistRandom:#對隨機數列表掃描一次,即可得到結果d[i]=d.get(i,0)1print(time.time()-start)2.4表達式“[3]in[1,2,3,4]”的值為
False
。2.5編寫程序,用戶輸入一個列表和2個整數作為下標,然后輸出列表中介于2個下標之間的元素組成的子列表。例如用戶輸入[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.6列表對象的sort()方法用來對列表元素進行原地排序,該函數返回值為
None
。2.7列表對象的
remove()
方法刪除首次出現的指定元素,如果列表中不存在要刪除的元素,則拋出異常。2.8假設列表對象aList的值為[3,4,5,6,7,9,11,13,15,17],那么切片aList[3:7]得到的值是
[6,7,9,11]
。2.9設計一個字典,并編寫程序,用戶輸入內容作為“鍵”,然后輸出字典中對應的“值”,如果用戶輸入的“鍵”不存在,則輸出“您輸入的鍵不存在!”答: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.10編寫程序,生成包含20個隨機數的列表,然后將前10個元素升序排列,后10個元素降序排列,并輸出結果。答: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.11在Python中,字典和集合都是用一對
大括號
作為界定符,字典的每個元素有兩部分組成,即
“鍵”
和
“值”
,其中
“鍵”
不允許重復。2.12使用字典對象的
items()
方法可以返回字典的“鍵-值對”列表,使用字典對象的
keys()
方法可以返回字典的“鍵”列表,使用字典對象的
values()
方法可以返回字典的“值”列表。2.13假設有列表a=['name','age','sex']和b=['Dong',38,'Male'],請使用一個語句將這兩個列表的內容轉換為字典,并且以列表a中的元素為“鍵”,以列表b中的元素為“值”,這個語句可以寫為
c=dict(zip(a,b))
。2.14假設有一個列表a,現要求從列表a中每3個元素取1個,并且將取到的元素組成新的列表b,可以使用語句
b=a[::3]
。2.15使用列表推導式生成包含10個數字5的列表,語句可以寫為
[5foriinrange(10)]
。2.16
不可以
(可以、不可以)使用del命令來刪除元組中的部分元素。第3章選擇與循環(huán)3.1分析邏輯運算符“or”的短路求值特性。答:假設有表達式“表達式1or表達式2”,如果表達式1的值等價于True,那么無論表達式2的值是什么,整個表達式的值總是等價于True。因此,不需要再計算表達式2的值。3.2編寫程序,運行后用戶輸入4位整數作為年份,判斷其是否為閏年。如果年份能被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.3Python提供了兩種基本的循環(huán)結構:
for循環(huán)
和
while循環(huán)
。3.4編寫程序,生成一個包含50個隨機整數的列表,然后刪除其中所有奇數。(提示:從后向前刪。)答: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)3.5編寫程序,生成一個包含20個隨機整數的列表,然后對其中偶數下標的元素進行降序排列,奇數下標的元素不變。(提示:使用切片。)答:Python3.4.2代碼如下,importrandomx=[random.randint(0,100)foriinrange(20)]print(x)y=x[::2]y.sort(reverse=True)x[::2]=yprint(x)3.6編寫程序,用戶從鍵盤輸入小于1000的整數,對其進行因式分解。例如,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=1print(x,'=','*'.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.7編寫程序,至少使用2種不同的方法計算100以內所有奇數的和。答:Python3.4.2代碼如下,如果使用Python2.7.8只需要把其中的print()函數改為print語句即可。x=[iforiinrange(1,100)ifi%2==1]print(sum(x))print(sum(range(1,100)[::2]))3.8編寫程序,輸出所有由1、2、3、4這四個數字組成的素數,并且在每個素數中每個數字只使用一次。答:Python3.4.2代碼如下,答:Python3.4.2代碼如下,如果使用Python2.7.8只需要把其中的print()函數改為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)3.9編寫程序,實現分段函數計算,如下表所示。xyx<000<=x<5x5<=x<103x-510<=x<200.5x-220<=x0答:Python3.4.2代碼如下,如果使用Python2.7.8只需要把其中的print()函數改為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假設有一段英文,其中有單獨的字母“I”誤寫為“i”,請編寫程序進行糾正。答:這里給出Python3.4.2代碼,如果使用Python2.7.8的話只需要修改其中的print()函數為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.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 大氣物理專業(yè)就業(yè)前景
- 數學答疑話術
- 2026陜西漢中市略陽縣綠色循環(huán)經濟產業(yè)園區(qū)管委會(園區(qū)公司)選聘2人備考題庫附答案
- 2026廣東深圳市南山區(qū)教育科學研究院附屬學校教育集團松坪學校小學部教師招聘4人參考題庫附答案
- 屏山縣衛(wèi)生健康局下屬事業(yè)單位屏山縣生育服務和愛國衛(wèi)生事務中心2025年公開考調事業(yè)單位工作 人員考試備考題庫必考題
- 2026湖北省普通選調生招錄497人備考題庫必考題
- 2026廣西北部灣大學公開招聘高層次人才76人參考題庫附答案
- 2025 小學五年級科學下冊非金屬材料的分類與應用范圍課件
- 南充朗池220千伏輸變電工程環(huán)境影響報告表
- 瀘州市輔警考試題庫2025
- 倉庫貨物擺放標準培訓課件
- 2023年運動控制工程師年度總結及下一年展望
- 江蘇省高級人民法院勞動爭議案件審理指南
- 低蛋白血癥的護理查房知識ppt
- 2023自愿離婚協議書范文(3篇)
- 眼科常見疾病診療規(guī)范診療指南2022版
- 30以內加法運算有進位1000題1
- 戰(zhàn)略成本1-6章toc經典案例
- 新藥臨床使用觀察表
- GB/T 34202-2017球墨鑄鐵管、管件及附件環(huán)氧涂層(重防腐)
- DB37-T 5026-2022《居住建筑節(jié)能設計標準》
評論
0/150
提交評論