




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
習題21.在交互式解釋器中給不同的變量賦予不同數(shù)據(jù)類型的值,如浮點數(shù)、字符串等,輸入變量名并按Enter鍵,然后針對相同的變量使用print()函數(shù),“輸入變量名并按Enter鍵”與“用print()輸出變量”的操作有何區(qū)別?答案:在交互式解釋器中直接輸入一個變量會立即顯示它的值,這稱為“字面值”。對于數(shù)值類型,字面值和值是相同的;但是對于字符串,字面值包括字符串的邊界引號,而print()打印的內(nèi)容不包括。所以,print()打印字符串的時候不會把邊界的引號顯示出來。2.用表達式來描述下列命題: (1)n是m的倍數(shù) (2)n是小于正整數(shù)k的偶數(shù) (3)x≥y或x<y (4)x,y中有一個小于z (5)x,y都小于z (6)x,y兩者都大于z,且為z的倍數(shù)答案:(1)n%m==0(2)k>0andk%1=0andn<kandn%2==0(3)x>=yorx<y(4)x<zory<z(5)x<zandy<z(6)x>zandy>zandx%z==0andy%z==03.手工計算(或心算)下列表達式的值,然后用代碼來驗證是否正確。 (1)16/4-2**5*8/4%5//2 (2)~30<<2*12**-6*22 (3)6**2+40&1*5答案略4.設計一個程序,讓用戶輸入平面坐標系中的兩個坐標,然后計算出兩點之間的距離。答案見代碼文件:Project02exercise4.py5.在2.4中我們認識了random模塊,它提供了很多有用的隨機函數(shù)。下面列舉了一些需求,請利用help函數(shù)查詢需要用什么函數(shù)來達成目的。(1)在容器對象中隨機選擇一個對象。(2)在容器對象中隨機選擇n個對象,并可以按照需求設置權重。(3)在容器對象中隨機抽?。ú恢貜瓦x擇)n個對象,并可以按照需求設置權重。(4)對可變類型的有序?qū)ο螅ɡ缌斜恚┐騺y其順序。答案:(1)在容器對象a中隨機選擇一個對象,可以使用多種方法,如:a[random.randrange(len(a))]random.choice(a)(2)在容器對象a中隨機選擇n個對象,可以使用random.choices()函數(shù),并設置參數(shù)k=n,對于權重,使用一個權重列表,其長度和a相等,每個元素是一個代表權重的整數(shù)。(3)可以使用random.sample()函數(shù),它的用法和random.choices()是一樣的,區(qū)別在于它是不重復的抽取。(4)要對可變類型的有序?qū)ο蟠騺y其順序,可以使用random.shuffle()函數(shù)。習題31.寫出條件句與循環(huán)句的語句結構。答案:條件句是分支結構,根據(jù)條件表達式真或假來決定要執(zhí)行的語句流;循環(huán)句是循環(huán)結構,分為while循環(huán)和for循環(huán)。while是傳統(tǒng)的循環(huán)結構,可以看成是一個條件判斷語句和一個向回轉(zhuǎn)向語句的組合。for循環(huán)通過遍歷一個可迭代對象來進行有限次數(shù)的循環(huán),并在循環(huán)的過程中遍歷這個對象。2.break和continue控制語句的區(qū)別。答案:break是徹底結束循環(huán);continue是結束當前這一輪循環(huán),進入到下一輪循環(huán)。3.寫出if...if和if...elif的區(qū)別,并舉例編程說明。答案:if…if是兩個獨立的分支結構,互不影響,有可能兩個分支都會執(zhí)行到;if…elif是一個單獨的多分支結構,是多選一的分支,不可能兩個分支都執(zhí)行,也可以理解為在執(zhí)行時遵循短路邏輯。4.求1~100之間的所有素數(shù),并統(tǒng)計素數(shù)的個數(shù)。答案見代碼文件:Project03exercise4.py5.內(nèi)置函數(shù)max()、min()可用于求最大值、最小值。請忽略這兩個函數(shù),用你自己的方式實現(xiàn)下述任務:任意輸入5個數(shù)字,計算它們的最大值,最小值和平均值。答案見代碼文件:Project03exercise5A.py和Project03exercise5B.py兩種方法實現(xiàn)。6.模塊math中的floor()和ceil()函數(shù)分別用于求一個浮點數(shù)的地板數(shù)和天花板數(shù),也就是向下取整和向上取整。請利用這兩個函數(shù)實現(xiàn)四舍五入的功能(考慮由用戶輸入任意的浮點數(shù))。答案見代碼文件:Project03exercise6.py習題41.解釋容器的數(shù)據(jù)類型及其分類。答案:容器是內(nèi)置的數(shù)據(jù)結構,包括序列、映射和集合。序列包括列表、元組和字符串;映射類型只有一種,即字典;集合包括可變集合和不可變集合。2.使用range()函數(shù)生成一個數(shù)列,然后將它們變成單一的數(shù)字,例如通過range(10)得到[0,1,2,3,4,5,6,7,8,9],如何將它轉(zhuǎn)換為單個數(shù)字123456789?要求不使用循環(huán)結構。答案見代碼文件:Project04exercise2.py3.輸入一段英文文章,計算其長度,并統(tǒng)計包含的單詞數(shù)。答案見代碼文件:Project04exercise3.py4.實現(xiàn)一個同學錄,要求提供基于字符的菜單選項,用戶可以選擇顯示所有同學、按關鍵字查找同學、添加同學、刪除同學、退出程序等功能。同學信息保存在字典中,要求有學號、姓名、專業(yè)、班級等信息。鍵必須具有唯一性,因此學號作為鍵。用戶可以通過關鍵字來查詢對應的同學信息,例如用戶輸入姓名王強,若有該同學存在,則返回他的相關信息,否則提示未找到該同學的信息。答案見代碼文件:Project04exercise4.py5.給出下列語句的執(zhí)行結果。答案:abc[100]11111211314161341………每個數(shù)等于它上方兩數(shù)之和每行數(shù)字左右對稱,由1開始逐漸變大。第n行的數(shù)字有n項。第n行數(shù)字和為2(n-1)?!織钶x三角形的圖形表示如右圖所示。請通過編程實現(xiàn)楊輝三角形,用普通循環(huán)和列表推導式均可。答案見代碼文件:Project04exercise6A.py、Project04exercise6B.py兩種方法實現(xiàn)習題51.列舉文件緩沖的幾種形式,包括程序員主動進行的緩沖和因為其他原因造成的緩沖。答案:文件保存依靠緩沖來實現(xiàn),可以使用f.flush()方法來進行緩沖,也可以使用f.close()方法關閉文件,在程序結束時會自動緩沖。此外,當f被賦值為其他類容時,會導致原本引用的文件對象減少引用計數(shù),一旦引用計數(shù)為0,Python垃圾回收機制會關閉文件對象,從而完成緩沖。2.小明在公司信息安全部門工作,最近公司淘汰了一批老舊的服務器硬盤,為了避免商業(yè)對手利用數(shù)據(jù)恢復手段獲取硬盤中的數(shù)據(jù),部門領導讓小明為這些硬盤寫入垃圾數(shù)據(jù)。請你幫小明寫一個腳本,在當前目錄下創(chuàng)建1000個文件,文件名隨機,文件中的內(nèi)容是1000個隨機字符。答案見代碼文件:Project05exercise2.py3.在畢業(yè)季,每個學生都要完成畢業(yè)設計并參加答辯,假如學院要求每個班分成六組參加畢業(yè)答辯。班級名單保存在名為“students.txt”的文件里,每一行一個姓名,請編寫一個程序來實現(xiàn)隨機的分組。答案見代碼文件:Project05exercise3.py4.編寫一個程序,由用戶輸入自己的生日,然后自動計算離下次生日還有多長時間。答案見代碼文件:Project05exercise4.py代碼中自行實現(xiàn)了將代表日期的字符串解析為標準日期格式,也可以通過第三方庫dateutil中的parser()函數(shù)來實現(xiàn)日期文本的解析。習題61.寫出調(diào)用函數(shù)時可使用的參數(shù)類型并解釋。答案:位置參數(shù),也叫必備參數(shù),傳遞參數(shù)的時候,參數(shù)的數(shù)量和順序,都必須和定義時保持一致。關鍵字參數(shù),是指傳遞參數(shù)的時候,按照賦值表達式的方式,函數(shù)定義時規(guī)定的參數(shù)名稱在等號左側(cè),傳遞的值在右側(cè)。這樣,就可以不按順序傳遞參數(shù)了。默認參數(shù),是指在函數(shù)定義時,可以通過復制表達式給予該參數(shù)一個初始的默認值,如果我們在調(diào)用函數(shù)時,不傳遞這個參數(shù),那么該參數(shù)將使用默認值??勺儏?shù),是指在函數(shù)定義時不能確定將來調(diào)用時要使用幾個參數(shù),因此可以定義一個數(shù)目可變的參數(shù)集,用戶可以傳遞多個參數(shù),這些參數(shù)將作為一個元組被傳遞使用。關鍵字收集器,類似于可變參數(shù),但用戶在傳遞參數(shù)時,每一個參數(shù)都使用賦值表達式的形式,這樣的話,多個關鍵字參數(shù)將會作為一個字典被傳遞使用。參數(shù)組,指的是在一個函數(shù)中,同時使用以上兩種或多種參數(shù)傳遞的方式。2.寫出創(chuàng)建一個生成器的兩種方法,并舉例說明。答案:可以使用推導式格式的生成器,也可以使用函數(shù)定義中的yield語句。例如,要快速生成1-9中每個數(shù)字的平方,有下面兩種方法:#第一種方法:g1=(i**2foriinrange(1,10))#第二種方法defsquare():foriinrange(1,10):yieldi**2g2=square()3.編寫一個函數(shù)計算圓柱體的體積。答案見代碼文件:Project06exercise3.py4.如果沒有os.walk(),你是否能以自己的方式實現(xiàn)對多層目錄的遞歸訪問?請設計一個函數(shù),能對多層目錄進行遍歷,顯示出每一層目錄的全部子目錄和文件的名稱。答案見代碼文件:Project06exercise4.py5.利用map()函數(shù),把用戶輸入的不規(guī)范的英文名字,變?yōu)槭鬃帜复髮懀渌懙囊?guī)范名字。輸入:['adam','LISA','barT'],輸出:['Adam','Lisa','Bart']。答案見代碼文件:Project06exercise5.py習題71.設計一個同學錄,用類來定義同學,每個同學是一個實例。類中需要有姓名、班級、學號、聯(lián)系電話等屬性。答案:defClassMate():def__init__(self,name,num,grade,tel):=nameself.num=numself.grade=gradeself.tel=telcm1=ClassMate("李雷",20200705433,"云計算2020",)2.改寫你的同學錄類定義,要求外界不能直接訪問除了姓名之外的其它屬性,必須通過一個特定的方法來作為訪問這些屬性的接口。答案見代碼文件:Project07exercise2.py3.按照下面描述的方式創(chuàng)建一個繼承分級結構。在基類中提供適用于所有哺乳動物對象的方法,并在派生類中覆蓋它們,從而根據(jù)不同的動物采取不同的行動。哺乳動物:貓科:獅子、豹、虎犬科:狼答案:classMammal():#哺乳動物def__init__(self):passdefviviparity(self):print("Viviparity")classFelid(Mammal):#貓科defmiaow(self):#貓叫print("mewmewmew...")classCanidae(mammal):#犬科defbark(self):print("bowwow!bowwow!")classTiger(felid):#虎deftigerRoar(self):#虎嘯print("roar!")4.將第二章和第六章出現(xiàn)過的PPI計算程序改寫為使用類來實現(xiàn)的版本。答案見代碼文件:Project07exercise4.py5.我們在本項目中設計的鏈表是可變對象,所以應該有一個copy()方法用來返回當前對象的淺拷貝。同時,為了方便清空數(shù)據(jù),請再為它設計一個clear()方法,用來清除所有結點,把當前鏈表變成一個空鏈表。答案見代碼文件:Project07exercise5.py詳見其中的LinkList.copy()和LinkList.clear()方法習題81.導入“importmoduleName”和“frommoduleNameimport*”有什么不同?答案:使用第二種語句的時候,會將模塊中的所有名稱直接加入到現(xiàn)有的全局名稱空間里,之后就不再需要使用諸如“模塊名.函數(shù)名”這樣的語法,而是直接使用后面的名稱。但是,缺少模塊名作為前綴,可能會因為重名而導致內(nèi)建的或先前導入過的名稱被覆蓋。2.創(chuàng)建一個importAs()函數(shù)。這個函數(shù)可以把一個模塊導入到你的名稱空間,但使用你指定的別名,而不是原始名字。也就是說,用你自己的方式,在一個函數(shù)中實現(xiàn)importmoduleNameasnewName的效果。答案:在函數(shù)中調(diào)用__import__()并返回即可:defimportAs(module):return__import__(module)3.將本章的用戶賬戶登錄系統(tǒng)打包成二進制可執(zhí)行文件,使其能獨立運行。答案:先進入到用戶賬戶登錄系統(tǒng)的源代碼文件所在的目錄,假設其它模塊也在同目錄下,使用以下命令:pyinstaller-Flogin.py習題91.當你使用try語句處理異常時,如何根據(jù)需要選擇合適的異常類?如果面對不熟悉的錯誤情況,你打算如何查詢對應的錯誤?答案:可以先讓程序出錯一次,根據(jù)拋出的錯誤信息,選擇捕獲對應的錯誤類型。2.下面這些交互解釋器下的Python代碼段分別會引發(fā)什么異常(參閱表9-1給出的內(nèi)建異常清單):代碼請寫下答案>>>if3<4then:print'3islessthan4!'SyntaxError:invalidsyntax>>>aList=['Hello','World!','Anyone','Home?']>>>print('thelaststringinaListis:',aList[len(aList)])IndexError:listindexoutofrange>>>xNameError:name'x'isnotdefined>>>x=4%0ZeroDivisionError:integerdivisionormodulobyzero>>>importmath>>>i=math.sqrt(-1)ValueError:mathdomainerror3.在項目8里,我們在用戶賬戶登錄系統(tǒng)中,用一個文本文件來記錄用戶-密碼對列表,為了防止文件不存在導致程序異常,即使只為了讀取數(shù)據(jù),無需寫入,我們也使用了a+模式打開文件?,F(xiàn)在你已經(jīng)了解了捕獲異常,請改寫程序,如果只需要讀取,就使用r模式,并使用try-except語句來防止文件不存在導致的異常。答案:try:userInf=open('./userpasswd.txt','r')exceptIOError:userInf=open('./userpasswd.txt','w')4.封裝以下內(nèi)建函數(shù),在發(fā)生異常時返回None。float(arg):請考慮兩種錯誤,參數(shù)是一個帶有非數(shù)字字符的字符串,或參數(shù)是一個其他不受支持的類型。raw_input(string):同樣考慮兩種錯誤,用戶輸入了EOF(在Unix下是由于按下了<Ctrl+D>,在Windows命令行下是因為按下了<Ctrl+Z>)或是通過鍵盤中斷事件退出了程序(一般是由于按下了<Ctrl+C>)。答案:對于float(arg),封裝代碼如下:defmy_float(argv):try:returnfloat(argv)except(ValueError,TypeError):returnNone對于input(),代碼如下:defmy_input(string):try:input(string)exceptKeyboardInterrupt:print("YousentaKeyboardInterrupt.")exceptEOFError:print("YousentaEOF.")while1:#下面是測試,一旦執(zhí)行就無法出來了my_input('string')習題101.請描述wxPython窗口對象中子對象和父對象的關系。答案:wxPython窗口對象中的父對象是一種窗口容器,例如框架、面板等,而子對象是父對象中包含的組件或子容器。例如在一個窗口中,框架是面板的父對象,面板是框架的子對象;而對于面板中的一個按鈕來說,面板是父對象,按鈕則是子對象。2.創(chuàng)建一個同學錄管理程序,用靜態(tài)文本框來顯示姓名,用文本框來顯示其他信息,如性別、學號、電話等。答案見代碼文件:Project10exercise2.py3.改寫上面的同學錄管理程序,文本框中的信息處于只讀模式,只有提供管理員密碼,才能編輯。答案見代碼文件:Project10exercise3.py,管理員密碼是admin1234.哪些控件可以提供選擇功能?答案:有單選按鈕、復選框、列表框、下拉框、組合框、樹形控件。5.嘗試為項目8的用戶賬戶登錄系統(tǒng)實現(xiàn)GUI界面。答:原有代碼 作用 使用或修改情況captcha.py 生成驗證碼 原封不動encrypt.py 將密碼加密成密文 原封不動sinput.py 在控制臺輸入字符時遮蓋 GUI不需要使用控制臺,此代碼廢棄newuser.py 創(chuàng)建新賬戶 完全重寫,提供創(chuàng)建新賬戶的操作窗口lock.py 對超過24小時的鎖定賬戶自動解鎖 有部分改動match.py 核對用戶名和密碼,并判斷是否鎖定 有部分改動login.py 登錄 完全重寫,提供登錄的操作窗口上述代碼位于文件夾Project10exercise5中。習題111.還有很多其它持久存儲的方案,例如使用文本、使用電子表格,為什么要使用數(shù)據(jù)庫,數(shù)據(jù)庫的優(yōu)勢是什么?答案:1)數(shù)據(jù)庫可以結構化存儲大量的數(shù)據(jù)信息,方便用戶進行有效的檢索和訪問。2)數(shù)據(jù)庫可以有效地保持數(shù)據(jù)信息的一致性、完整性、降低數(shù)據(jù)冗余。3)數(shù)據(jù)庫可以滿足應用的共享和安全方面的要求,把數(shù)據(jù)放在數(shù)據(jù)庫中在很多情況下也是出于安全的考慮。4)數(shù)據(jù)庫技術能夠方便智能化地分析,產(chǎn)生新的有用信息。2.請列舉幾個Python支持的數(shù)據(jù)庫。答案:主流的數(shù)據(jù)庫系統(tǒng)都支持,包括SQLite、MySQL、MariaDB、SQLServer、PostgreSQL、Oracle、Redis等3.簡單描述Python操作數(shù)據(jù)庫的流程。答案:Python使用PythonDB-API來操作數(shù)據(jù)庫,操作流程大致可以分為4個步驟:1)引入API模塊。2)獲取與數(shù)據(jù)庫的連接。3)執(zhí)行SQL語句和存儲過程。4)關閉數(shù)據(jù)庫連接。4.改寫第8章的用戶賬戶系統(tǒng),使用SQLite數(shù)據(jù)庫來代替文本文件存儲數(shù)據(jù)。答案:第10章已經(jīng)實現(xiàn)了圖形界面的版本,現(xiàn)在在其基礎上繼續(xù)開發(fā):原有代碼 作用 使用或修改情況captcha.py 生成驗證碼 原封不動encrypt.py 將密碼加密成密文 原封不動sqlitedb.py 代替文本存儲用戶賬戶信息 新內(nèi)容newuser.py 創(chuàng)建新賬戶 部分改動,涉及到數(shù)據(jù)庫操作的方法由sqlitedb.py提供lock.py 對超過24小時的鎖定賬戶自動解鎖 由主程序或sqlitedb.py中的方法代替match.py 核對用戶名和密碼,并判斷是否鎖定 由主程序或sqlitedb.py中的方法代替login.py 登錄 部分改動,涉及到數(shù)據(jù)庫操作的方法由sqlitedb.py提供上述代碼位于文件夾Project11exercise4中。5.讓你的用戶賬戶系統(tǒng)改用MySQL數(shù)據(jù)庫,只改寫程序本身,不用考慮舊數(shù)據(jù)從SQLite遷移到MySQL的問題。答案略,由讀者自行研究實現(xiàn)。習題121.在使用套接字編程的時候,TCP和UDP中哪一種服務器在接受連接后,把連接交給不同的套接字來處理與客戶的通信?答案:TCP服務器。TCP服務器使用socket.accept()方法接收一個連接請求,返回一個套接字對象和一個遠程地址元組,服務器使用這個套接字對象來處理(發(fā)送和接收)與客戶端的通信。2.編寫一個程序,讓客戶端能夠發(fā)送消息使服務器休眠,客戶端指定休眠多久,服務器就休眠多久。答案:使用了TCP服務器和客戶端,代碼詳見文件夾Project12exercise2。3.對于12.3.3的文件傳輸程序,是否可以使用無連接通信的方式?答案:不可以,無連接通信方式不適用于文件傳輸。習題131.進程和線程的區(qū)別是什么?答案:正在運行的程序稱為“進程”,除了程序自身的指令,進程還包括地址空間、內(nèi)存、數(shù)據(jù)棧及其他記錄其運行軌跡的輔助數(shù)據(jù)。進程在運行的過程中,其執(zhí)行控制流稱為線程,線程是程序執(zhí)行流的最小單元。線程不像進程那樣擁有完整的系統(tǒng)資源,只擁有一點兒在運行中必不可少的資源,但它可與同屬一個進程
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 保安勞務派遣服務協(xié)議合同
- 開發(fā)商品房借款合同范例二零二五年
- 包工清包合同范本
- 翡翠擺件寄售合同范本
- 彩票代理公司合同范本
- 2025年山西同文職業(yè)技術學院高職單招職業(yè)適應性測試歷年(2019-2024年)真題考點試卷含答案解析
- 2025年山東力明科技職業(yè)學院高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 2025年寶雞職業(yè)技術學院高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 剖宮產(chǎn)主要治療及護理措施
- 老年延續(xù)護理服務
- 憲法與銀行業(yè)務
- 定額〔2025〕1號文-關于發(fā)布2018版電力建設工程概預算定額2024年度價格水平調(diào)整的通知
- 換熱器設計說明書
- 醫(yī)院科研課題申報倫理審查申請及審批表
- 解讀財務報表-三張主表課件
- 工程管理工程項目管理模式和發(fā)展趨勢課件
- 啟備變教學講解課件
- 一般檢查頭頸部課件
- 質(zhì)保體系復習題 2
- DB11-T 3032-2022水利工程建設質(zhì)量檢測管理規(guī)范
- 道路標線標識檢驗批質(zhì)量驗收記錄
評論
0/150
提交評論