




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、?Python程序設(shè)計?習(xí)題與參考答案第1章根底知識簡單說明如何選擇正確的Python版本.答:在選擇Python的時候,一定要先考慮清楚自己學(xué)習(xí)Python的目的是什么,打算做哪方 面的開發(fā),有哪些擴展庫可用,這些擴展庫最高支持哪個版本的Python,是Python還是 Python ,最高支持到Python還是Python.這些問題都確定以后,再做出自己的選擇,這 樣才能事半功倍,而不至于把大量時間浪費在Python的反復(fù)安裝和卸載上.同時還應(yīng)該注 意,當(dāng)更新的Python版本推出之后,不要急于更新,而是應(yīng)該等確定自己所必須使用的擴 展庫也推出了較新版本之后再進行更新.盡管如此,Pytho
2、n 3畢竟是人勢所趨,如果您暫時還沒想到要做什么行業(yè)領(lǐng)域的應(yīng)用開 發(fā),或者僅僅是為了嘗試一種新的、好玩的語言,那么請亳不猶豫地選擇Python系列的最 高版本(目前是Python ).為什么說Python采用的是基于值的內(nèi)存治理模式?答:Python采用的是基于值的內(nèi)存治理方式,如果為不同變量賦值相同值,那么在內(nèi)存中只 有一份該值,多個變量指向同一塊內(nèi)存地址,例如卞面的代碼.»> x = 3»> id(x)»>y=3»> id(v)»> y = 5»> id(v)»> id(x)在P
3、ython中導(dǎo)入模塊中的對象有哪幾種方式?答:常用的有三種方式,分別為 import模塊名as別名 fiom模塊名import對象名as別名 fiom math import *使用pip命令安裝numpv. scipy模塊.答:在命令提示符環(huán)境卞執(zhí)行下面的命令:pip install numpvpip install scipy編寫程序,用戶輸入一個三位以上的整數(shù),輸出其百位以上的數(shù)字.例如用戶輸入1234,那么程序輸出12.(提示:使用整除運算.)答:1) Python 代碼:x = mput(,Please mput an mteger of more than 3 digits/)tr
4、y:x = iiit(x)x = xelse:piiiit(x)except BaseException:print(fYdu must input an mteger.2 ) Python 代碼:unport typesx = mput(,Please mput an mteger of more than 3 digits/)if type(x) !=:print *Ydu must mput ail integer/elif len(str(x) !=4:print *Ydu must mput an integer of more than 3 digits.1else:print x
5、oin(inap(strjesult)2 ) Python 代碼x = mput(,Please mput an mteger less than 1000/)t = xi = 2result =wliile Tine:ift=l:breakif t%i=O:wt = t/ielse:i+=lprint x/=7*,.join(inap(sti;result)編寫程序,至少使用2種不同的方法計算100以內(nèi)所有奇數(shù)的和.答:Python代碼如卜,如果使用Python只需要把其中的pimtQ函數(shù)改為pimt語句即 可.x = i for i ill range(l,100) if i%2=lpri
6、nt(sum(x)print(sum(iange( 1,100)二 2)編寫程序,實現(xiàn)分段函數(shù)計算,如卞表所示.Xyx<000<=x<5X5<=x<103x-510<=x<2020<=x0答:Python代碼如下,如果使用Python只需要把其中的pnnt0函數(shù)改為pnnt語句即 可.x = mput(*Please mput x Jx = eval(x)if x<0 or x>=20:pnnt(0)elif 0<=x<5:print(x)elif 5<=x<10:pnnt(3*x-5)elif 10<=
7、x<20:print*x-2)第4章字符串與正那么表達(dá)式假設(shè)有一段英文,其中有單獨的字母"in誤寫為請編寫程序進行糾正.答:這里給出Python代碼,如果使用Python的話只需要修改其中的pmit()函數(shù)為punt 語句即可.1) 不使用正那么表達(dá)式x = Hi am a teacherj am man. and i am 38 years am not a businessman.Mx = (ri ;r)x =(i,T)print(x)2) 使用正那么表達(dá)式x = Hi am a teacherj am man. and i am 38 years am not a bus
8、inessman.Munport repattern = (rF(?: Aw |b)i(?: Aw)*)wliile Tine:result = (x)if result:if(0) !=0:x = x:(0)+l+T+x(0)-l:else:x = x:(0)+T+x(0)-l:else:breakprint(x)假設(shè)有一段英文,其中有單詞中間的字母“1誤寫為T,請編寫程序進行糾正.答:這里給出Python代碼,如果使用Python的話只需要修改其中的pmit()函數(shù)為punt 語句即可.unport rex = nI am a teacherj am man, and I am 38 ye
9、ais am not a businessman."print(x)pattern = (rr(?:M)I(?:w)r)wliile Tine:result = (x)if result:if(0) !=0:x = x:(0)+l+,i,+x(0)-l:else: x = x:(O)+T+x(O)-l:else:breakprint(x)有一段英文文本,其中有單詞連續(xù)重復(fù)了2次,編寫程序檢查重復(fù)的單詞并只保存一 個.例如文本內(nèi)容為"This is is a desk.",程序輸出為"This is a desk.答:這里給出Python代碼,如果使用Py
10、thon的話只需要修改其中的pmit()函數(shù)為punt 語句即可.1)方法一unport rex = This is a a desk/pattern = (Ab(w+)(s+ 1) 1 JXb1)inatcliResult = (x)X = (l),x)print(x)2)方法二x = This is a a desk/pattern = (F(?Pvf>bw+b)s(?P=f)JinatcliResult = (x)X = (0),(1)簡單解釋Python的字符串駐留機制.答:Python支持字符串駐留機制,即:對于短字符串,將其賦值給多個不同的對象時,內(nèi) 存中只有一個副本,多個對
11、彖共享該副本.這一點不適用于長字符串,即長字符串不遵守駐 留機制,下面的代碼演示了短字符串和長字符串在這方面的區(qū)別.»> a = ,1234|»>b = ,1234,»> id(a) = id(b)Tme»> a = 1234,*50 »>b = ,1234,*50 »> id(a) = id(b) False編寫程序,用戶輸入一段英文,然后輸出這段英文中所有長度為3個字母的單詞.答:這里給出Python代碼,如果使用Python的話只需要修改其中的pmit()函數(shù)為punt 語句即可.miport
12、 rex = mput(,Please mput a string:*) pattern = (fb a-z A-Z 3 br) pmit(x)第5章函數(shù)設(shè)計與使用運行小節(jié)最后的例如代碼,查看結(jié)果并分析原因.答:原因是對于函數(shù)的默認(rèn)值參數(shù)只會被處理一次,下次再調(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代碼,如果使用Python的話只需要修改其中的pnntQ函數(shù)為punt 語句即可.miport
13、 matlidef IsPrime(v):n =for i in iange(2,n):if v%i=(Xreturn No'else:return "Yes*print(IsPrime(37)print(IsPrime(60)pnnt(IsPiime(113)編寫函數(shù),接收一個字符串,分別統(tǒng)計大寫字母、小寫字母、數(shù)字、其他字符的個數(shù), 并以元組的形式返回結(jié)果.答:這里給出Python代碼,如果使用Python的話只需要修改其中的pnntQ函數(shù)為punt 語句即可.def demo(v):capital = little = digit = other =0for i in
14、v:if Ay=i<=Z:capital+=lelifh<=i<=N:little+=lelif,0,<=i<=,9r:digit+=lelse:other+=lreturn (capital,little,digit,other)x = Capital = little = digit = other =0pnnt(demo(x)在Python程序中,局部變量會隱藏同名的全局變量嗎?請編寫代碼進行驗證. 答案:會.»> def demoQ:a=3print a»> a=5»> demoQ3»>a5編
15、寫函數(shù),可以接收任意多個整數(shù)并輸出其中的最人值和所有整數(shù)之和.答:這里給出Python代碼,如果使用Python的話只需要修改其中的pmit()函數(shù)為punt 語句即可.def demo(*v):print(v)print(niax(v)print(sum(v)demo(l,23)denio(12,3,4)demo(lZ3,4,5)編寫函數(shù),模擬內(nèi)置函數(shù)sum()o答:這里給出Python代碼,如果使用Python的話只需要修改其中的pmit()函數(shù)為pnnt 語句即可.def Sum(v): s = 0 for i in v:s += i return s x= 1,23,4,5 pnnt(
16、Sum(x) x = (1,23,4,5) pnnt(Sum(x)編寫函數(shù),模擬內(nèi)置函數(shù)sortedQo答:這里給出Python代碼,如果使用Python的話只需要修改其中的pnnt()函數(shù)為pnnt 語句即可.def Sorted(v): t = v:1 = wliile t:tt = nun(t)(tt)(tt)return r x= 1,3,5,2,1Q9,7 print(x) print(Soited(x)第6章面向?qū)ο蟪绦蛟O(shè)計繼承節(jié)例2中的Person類生成Student類,填寫新的函數(shù)用來設(shè)置學(xué)生專業(yè),然后生 成該類對彖并顯示信息.答:Python代碼為miport typescl
17、ass Person(object):存基類必須繼承于object,否那么在派生類中將無法使用super()函數(shù)def _iiiit_(self name = age = 20, sex = man1):(name)(age)(sex)def setNaine(self, name):if not ismstaiice(naine,sti):piiiit(rname must be string/)retuin=namedef setAge(self, age):if not isiiistaiice(age,int):piiiit(,age must be integer.retuin= a
18、gedef setSex(self, sex):if sex != Inair and sex != 'woman1:priiit(,sex must be "maiV or nwoman,u)retuin=sexdef show(self):printprintprintclass Student(Person):def _uiit_(self name=H? age = 30, sex = major = oniputer1):#調(diào)用基類構(gòu)造方法初始化基類的私有數(shù)據(jù)成員super(Student, self)._init_(name, age, sex)(maj or)
19、#初始化派生類的數(shù)據(jù)成員def setMajor(self, major):if not ismstaiice(niajoi str):prmt(rmajor must be a strmg/)retuin=majordef show(self):super(Student, self).show()printif_name_ =f_main_zhaiigsan = Person(,Zhang San 19, mad) 0lisi = StudenTi Si32, *nian Math*)0設(shè)計一個三維向量類,并實現(xiàn)向量的加法、減法以及向量與標(biāo)量的乘法和除法運算.答:Python代碼如下cla
20、ss Vecter3:def _iiiit_(self! x=0, y=0, z=0):=ydef _add_(self! n): r = Vecter3()=+=+return rdef _sub_(self! n):r = Vecter3()return rdef _mul_(self n):r = Vecter3()=* n=* n=* nreturn rdef trnediv_(self, n):r = Vecter3()=/ nreturn rdef _floordiv_(self! n):r = Vecter3()=類名_xxx這樣的特殊方式來訪問.Python中沒有純粹的C卄意義
21、上的私有成員.3在實際開發(fā)中,同一段代碼可能會拋出多個異常,需要針對不同的異常類型進行相 應(yīng)的處理.為了支持多個異常的捕捉和處理,Python提供了帶有多個except的異常處理結(jié) 構(gòu),這類似于多分支選擇結(jié)構(gòu),一旦某個except捕獲了異常,那么后面剩余的except子句將 不會再執(zhí)行.語法為:try:try塊#被監(jiān)控的語句except Exception 1:except塊1#處理異常1的語句except Exception2:except塊2#處理異常2的語句4將要捕獲的異常寫在一個元組中,可以使用一個except語句捕獲多個異常,并且共 用同一段異常處理代碼,當(dāng)然,除非確定要捕獲的多個異
22、??梢允褂猛欢未a來處理,并 不建議這樣做.5最后一種常用的異常處理結(jié)構(gòu)是try.except.finally.結(jié)構(gòu).在該結(jié)構(gòu)中,filially子 句中的內(nèi)存無論是否發(fā)生異常都會執(zhí)行,常用來做一些清理工作以釋放try子句中申請的資 源.語法如下:try:filially:#無論如何都會執(zhí)行的代碼異常和錯誤有什么區(qū)別?答:異常是指由于程序執(zhí)行過程中出錯而在正常限制流以外采取的行為.嚴(yán)格來說,語法錯 誤和邏輯錯誤不屬于異常,但有些語法錯誤往往會導(dǎo)致異常,例如由于人小寫拼寫錯誤而訪 問不存在的對彖,或者試圖訪問不存在的文件,等等.使用pdb模塊進行Python程序調(diào)試主要有哪幾種用法?答:主要有
23、三種方式,1在交互模式下使用pdb模塊提供的功能可以直接調(diào)試語句塊、表達(dá)式、函數(shù)等多種 腳本.2在程序中嵌入斷點來實現(xiàn)調(diào)試功能在程序中首先導(dǎo)入pdb模塊,然后使用在需要的位置設(shè)置斷點.如果程序中存在通過該方法調(diào)用顯式插入的斷點,那么在命令提示符壞境下執(zhí)行該程序或雙擊執(zhí)行程序時將自動 翻開pdb調(diào)試壞境,即使該程序當(dāng)前不處于調(diào)試狀態(tài).3使用命令行調(diào)試程序在命令行提示符卞執(zhí)行“python mpdb腳本文件名,那么直接進入調(diào)試環(huán)境;當(dāng)調(diào)試 結(jié)束或程序正常結(jié)束以后,pdb將重啟該程序.Python內(nèi)建異常類的基類是BaseException °斷言語句的語法為assert °Pv
24、thon上F文治理語句是with第9章GUI編程設(shè)計一個窗體,并放置一個按鈕,單擊按鈕后彈出顏色對話框,關(guān)閉顏色對話框后提示選中的顏色.答:Python代碼如下,unport wxclass wxGUI:def Oiihut(self):frame = (parent=None, tith=vxGUI; size=(160J40) panel = (flame,1)buttonOK = (panel,JOK; pos=(0,0),buttonOK)0return Truedef OiiButtonOK(self, event):coloiDlg = (None)0color = Q.Colou
25、r(str(color)app = wxGUI()設(shè)計一個窗體,并放置一個按鈕,按鈕默認(rèn)文本為“開始,單擊按鈕后文本變?yōu)椤敖Y(jié) 束,再次單擊后變?yōu)椤伴_始,循壞切換.答:Python代碼如下,unport wxclass wxGUI:def Oiihut(self):frame = (parent=None, tith=vxGUI; size=(160J40)panel = (flame,1)=(panel. JStart: pos=(0.0)0return Tmedef OiiButtonOK(self, event):text =if text = Start:End*)elif text =
26、 'End':Start*)app = wxGUI()0設(shè)計一個窗體,模擬QQ登錄界面,當(dāng)用戶輸入號123456和密碼654321時提示正 確,否那么提示錯誤.答:Python代碼如下,miport wxclass wxGUI:def Oiihut(self):frame = (parent=None, title=,Logm size=(250,150). pos=(350,350)panel = (flame, -1)label 1 = (panel, -1, UserName:1, pos=(0,10), style=label2 = (panel, -1, Passwo
27、rd:1, pos=(0,30), style=(panel, -1, pos=(70J0), size=( 160,20)=(panel, -1, pos=(70,30), size=(l 60,20),style=buttonOK = (panel, -I JOK; pos=(30.60),buttonOK)buttonCancel = (panel,'Cancel; pos=( 120,60),buttonCancel)00return Truedef OiiButtonOK(self, event):usrName =usrPwd =if usrName=, 123456* a
28、ndusrPwd= 65432CRighf)else:(Wrong')def OiiButtonCaiicel(self event):passapp = wxGUI()0第10章網(wǎng)絡(luò)程序設(shè)計簡單解釋TCP和UDP協(xié)議的區(qū)別.答:TCP協(xié)議是面向連接的、具有質(zhì)量保證的可靠傳輸協(xié)議,但開銷較人;UDP協(xié)議是盡 最人水平傳輸?shù)臒o連接協(xié)議,開銷小,常用于視頻在線點播(Video On Demand, VOD)之 類的應(yīng)用.TCP協(xié)議和UDP協(xié)議并沒有優(yōu)劣之分,僅僅是適用場合有所不同.同學(xué)之間合作編寫UDP通信程序,分別編寫發(fā)送端和接收端代碼,發(fā)送端發(fā)送一個字 符串“Hello world!.
29、假設(shè)接收端在計算機的5000端I I進行接收,并顯示接收內(nèi)容.答:首先使用ipconfig/aU命令查看本機IP地址,然后分別編寫卞面的代碼,并將其中 的IP地址替換為相應(yīng)的IP地址.接收端代碼:unport sockets=,('", 5000) #空字符串表示本機任何可用IP地址data, add尸(1024)#緩沖區(qū)人小為1024字節(jié)piint1 received message:%s' % data 執(zhí)顯示接收到的內(nèi)容0發(fā)送端代碼:unport sockets=,(Hello, world!,(" ,5000) #假設(shè)是接收端主機的IP地址0簡單介紹
30、socket模塊中用于TCP編程的常用方法.TCP 一般用于要求可靠數(shù)據(jù)傳輸?shù)膱龊?編寫TCP程序時經(jīng)常需要用到的socket模塊 方法主要有: comiect(addiess):連接遠(yuǎn)程計算機 send(bvtes.flags):發(fā)送數(shù)據(jù) recv(bufsize,flags):接收數(shù)據(jù) bind(address):綁定地址 listen(backlog):開始監(jiān)聽,等待客戶端連接 acceptQ:響應(yīng)客戶端的請求編寫代碼讀取搜狐網(wǎng)頁首頁內(nèi)容.答:»> unport»> du»> fp =n)»> dii(fp)»&g
31、t; pnnt(lOO)»>()在自己的機器上配置IIS以支持Python腳本的運行,然后使用Python編寫腳本,運行 后在網(wǎng)頁上顯示“Hello world!答:核心代碼為printprint Status: 200 OK1print Content-type: text/htnil*printprint ,<HTML><HEAD><TITLE>Python Sample CGI</TITLE></HEAD>,print ,<BODY>,print *<Hl>Tlus is a headei
32、</Hl>'print r<p>Hello world!1print r<bi>rpmit y/BODY>第11章大數(shù)據(jù)處理簡單介紹常見的人數(shù)據(jù)處理框架.答:主要有三種, MapReduce:分布式計算框架,可以將單個大型計算作業(yè)分配給多臺計算機執(zhí)行, 可以在短時間內(nèi)完成大量工作,尤其適合數(shù)值型和標(biāo)稱型數(shù)據(jù),但需要對行業(yè)領(lǐng)域具有 一定理解后重寫算法來完成特定的業(yè)務(wù)處理要求.MapReduce的名字由函數(shù)式編程中 常用的map和leduce兩個單詞組成.MapReduce在人量節(jié)點組成的集群上運行,工作 流程是:單個作業(yè)被分成很多小份,輸入數(shù)據(jù)也
33、被切片并分發(fā)到每個節(jié)點,每個節(jié)點只 在本地數(shù)據(jù)上做運算,對應(yīng)的運算代碼稱為mapper,這個過程即map階段;每個mapper 的輸出通過某種方式組合,根據(jù)需要可能再進行重新排序,排序后的結(jié)果再被切分成小 份并分發(fā)到各個節(jié)點進行下一步處理,這個過程被稱為reduce階段,對應(yīng)的代碼稱為 reducero不同類型的作業(yè)可能需要不同數(shù)量的reducer,并且,在任何時候,每個mapper 或reducer之間都不進行通信,每個節(jié)點只負(fù)貴處理自己的事務(wù),并且只在分配到本地 的數(shù)據(jù)集上進行運算. Hadoop: Hadoop是MapReduce框架的一個免費開源實現(xiàn),采用Java語言編寫, 支持在大量
34、機器上分布式處理數(shù)據(jù).除了分布式計算之外,Hadoop還自帶分布式文件 系統(tǒng),可以在上面運行多種不同語言編寫的分布式程序.Hadoop在可伸縮性、健壯性、 計算性能和本錢上具有無可替代的優(yōu)勢,事實上已成為當(dāng)前互聯(lián)網(wǎng)企業(yè)主流的人數(shù)據(jù)分 析平臺. Spark: Spark是一個針對超大數(shù)據(jù)集合的低延遲集群分布式計算系統(tǒng),比 MapReduce快40倍左右.Spaik是Hadoop的升級版本,兼容Hadoop的API,能夠讀 寫Hadoop的HDFS HBASE順序文件等,與之不同的是將結(jié)果保存在內(nèi)存中.Hadoop 作為第一代產(chǎn)品使用了 HDFS,第二代參加了 Cache來保存中間計算結(jié)果,第三代
35、那么是 Spark倡導(dǎo)的流技術(shù)Streaming.運行本章中代碼并理解MapReduce編程思路.答:略第12章Windows系統(tǒng)編程查閱相關(guān)資料,解釋注冊表幾人根鍵的用途.答:略選擇一個編寫好的Python程序,將其轉(zhuǎn)換為exe可執(zhí)行文件.答:略,請參考書中相關(guān)介紹.編寫代碼,使用至少3中不同的方法啟動Wmdows自帶的計算器程序.答:第一種方法:»> unport os»> (“)第二種方法:»> unport os»> (“)第三種方法:»> unport os»> (“)第四種方法:
36、7;> unport win32api»> (0, 'open; ",1)第五種方法:»> unport wm32process»> handle=(r,c:windowssystem327 Non匕Non匕0八 None, None,Q)編寫代碼,檢測您所使用的操作系統(tǒng)版本.答:略,請參考節(jié).第13章多線程編程簡單表達(dá)創(chuàng)立線程的方法.答:Tluead類支持使用兩種方法來創(chuàng)立線程,一種是為構(gòu)造函數(shù)傳遞一個可調(diào)用對彖,另 一種是繼承Tluead類并在派生類中重寫和nm()方法.創(chuàng)立了線程對彖以后,可以 調(diào)用其start()方
37、法來啟動,該方法自動調(diào)用該類對象的nm()方法,此時該線程處于alive狀 態(tài),直至線程的nm()方法運行結(jié)束.簡單表達(dá)Tluead對象的方法.答:(1) join(timeoUt:阻塞當(dāng)前線程,等待被調(diào)線程結(jié)束或超時后再繼續(xù)執(zhí)行當(dāng)前線程 的后續(xù)代碼,參數(shù)timeout用來指定最長等待時間,單位為秒.(2) isAlive():測試線程是否處于運行狀態(tài)(3) start.:自動調(diào)用run()方法,啟動線程,執(zhí)行線程代碼.(4) nm():線程代碼,用來實現(xiàn)線程的功能與業(yè)務(wù)邏輯,可以在子類中重寫該方法來 自定義線程的行為.簡單表達(dá)線程對彖的daemon屬性的作用和影響.答:在腳本運行過程中有一個
38、主線程,假設(shè)在主線程中創(chuàng)立了子線程,當(dāng)主線程結(jié)束時根據(jù)子 線程daemon屬性值的不同可能會發(fā)生下面的兩種情況之一:1)當(dāng)某子線程的daemon屬性 為False時,主線程結(jié)束時會檢測該子線程是否結(jié)束,如果該子線程尚未完成,那么主線程會 等待它完成后再退出;2)當(dāng)某子線程的daemon屬性為True時,主線程運行結(jié)束時不對該 子線程進行檢查而直接退出,同時所有daemon值為True的子線程將隨主線程一起結(jié)束,而 不管是否運行完成.daemon屬性的值默認(rèn)為False,如果需要修改,那么必須在調(diào)用start()方 法啟動線程之前進行修改.解釋至少3種線程同步方法.答:(1)使用Conditio
39、n對彖可以在某些事件觸發(fā)后才處理數(shù)據(jù),可以用于不同線程之間的 通信或通知,以實現(xiàn)更高級別的同步.Condition對彖除了具有acqimeQ和release.方法之外, 還有wait.、notify.、notify_all等方法.下面通過經(jīng)典生產(chǎn)者/消費者問題來演示Condition 對象的用法.2 Queue模塊在Python 3中為queue模塊實現(xiàn)了多生產(chǎn)者/多消費者隊列,尤其 適合需要在多個線程之間進行信息交換的場合,該模塊的Queue對彖實現(xiàn)了多線程編程所 需要的所有鎖語義.3 Event對彖是一種簡單的線程通信技術(shù),一個線程設(shè)置Event對象,另一個線程等 待Event對彖.Eve
40、nt對象的set.方法可以設(shè)置Event對象內(nèi)部的信號標(biāo)志為真;clearQ方法 可以去除Event對彖內(nèi)部的信號標(biāo)志,將其設(shè)置為假:isSetQ方法用來判斷其內(nèi)部信號標(biāo)志 的狀態(tài);方法只有在其內(nèi)部信號狀態(tài)為真時將很快地執(zhí)行并返回,假設(shè)Event對象的內(nèi) 部信號標(biāo)志為假,方法將一直等待至超時或內(nèi)部信號狀態(tài)為真.第14章數(shù)據(jù)庫編程簡單介紹SQLite數(shù)據(jù)庫.答:SQLite是內(nèi)嵌在Python中的輕量級、基于磁盤文件的數(shù)據(jù)庫治理系統(tǒng),不需要效勞器 進程,支持使用SQL語句來訪問數(shù)據(jù)庫.該數(shù)據(jù)庫使用C語言開發(fā),支持大多數(shù)SQL91 標(biāo)準(zhǔn),支持原子的、一致的、獨立的和持久的事務(wù),不支持外鍵限制;通過
41、數(shù)據(jù)庫級的獨占 性和共享鎖定來實現(xiàn)獨立事務(wù),當(dāng)多個線程同時訪問同一個數(shù)據(jù)庫并試圖寫入數(shù)據(jù)時,每一 時刻只有一個線程可以寫入數(shù)據(jù).SQLite支持2TE大小的單個數(shù)據(jù)庫,每個數(shù)據(jù)庫完全存 儲在單個磁盤文件中,以E+樹數(shù)據(jù)結(jié)構(gòu)的形式存儲,一個數(shù)據(jù)庫就是一個文件,通過簡單 復(fù)制即可實現(xiàn)數(shù)據(jù)庫的備份.使用Python內(nèi)置函數(shù)山查看Cursor對彖中的方法,并使用內(nèi)置函數(shù)help.查看其用 法.答:略.表達(dá)使用Python操作Access數(shù)據(jù)庫的步驟.答:1建立數(shù)據(jù)庫連接miportcoim =MDSN = PROVIDER= SOURCE=C:/;DSN2翻開記錄集IS = rs_name = MyR
42、ecordset* #表名T + rs_name + conn33操作記錄集0=rdata*04操作數(shù)據(jù)DSN = ,PROTDER= SOURCE:/;1sqLstatement = "Insert INTO TableName (Fieldl, Field_2) VALUES fdatal; ,data2,)M (DSN)(sqLstatement)0(5)遍歷記錄0count = 0wliile 1:if:breakelse:count = count + 10表達(dá)使用Python操作MS SQL Server數(shù)據(jù)庫的步驟.答:可以使用pywiii32和pymssql兩種不同的
43、方式來訪問MS SQL Server數(shù)據(jù)庫.先來了解一下pywui32模塊訪問MS SQL Server數(shù)據(jù)庫的步驟.(1) 添加引用:miport adodbapi=False # adds details to the sample printoutmiport as adc(2) 創(chuàng)立連接:Cfg = ,seiver,:,/password,:,xxxx,db,:,pscitemp,consti = iHProvidei-; Initial Catalog=%s; Data Souice=%s; user LD=%s; Password=%s; H% (Cfgfdb'J, Cfg
44、fserv-ef, *sa Cfg,password,)coim = (consti)(3) 執(zhí)行sql語句:CUI =()sql = ,Hselect * from softextBook where title-0' and reniaik3!=f 1 Hn.fbnnat(bookName.flag) (sql)data = Q0(4) 執(zhí)行存儲過程:#假設(shè)pioName有三個參數(shù),最后一個參數(shù)傳了 null ret = (*procN aine (parm 1 ,paini2 .N one) 0(5)關(guān)閉連接0接下來再通過一個例如來簡單了解一下使用pymssql模塊訪問MS SQ
45、L Sewer數(shù)據(jù)庫的 方法.unport pymssqlcoim = (host=,SQLOr. user=,user password=,passwoid database=,mvdatabase,)cur =()('CREATE TABLE persons(id INT. name VARCHAR(IOO)?("INSERT INTO persons VALUES(%d. (1,John Doe'), (2, Jane Doe') 0SELECT * FROM persons WHERE salesrep= John Doe')low = Qwl
46、iile row:print MLD=%d, Name=H % (iow0, rowl)row = 0("SELECT * FROM persons WHERE salesrep LIKE 7%H,) 0表達(dá)MySQLDb模塊提供的數(shù)據(jù)庫訪問方法.答:Python訪問MySQL數(shù)據(jù)庫可以使用MvSQLDb模塊,該模塊主要方法有: commit():提交事務(wù). rollback():回滾事務(wù). callproc(self, procname, args):用來執(zhí)行存儲過程,接收的參數(shù)為存儲過程名和參數(shù) 列表,返回值為受影響的行數(shù). execute(self, queiy, args):
47、執(zhí)行單條sql語句,接收的參數(shù)為sql語句本身和使用的 參數(shù)列表,返回值為受影響的行數(shù). executeniany(self, query, args):執(zhí)行單條sql語句,但是重復(fù)執(zhí)行參數(shù)列表里的參數(shù), 返回值為受影響的行數(shù). nextset(self):移動到下一個結(jié)果集. fetchall(self):接收全部的返回結(jié)果行. fetclmiany(self, size=None):接收size條返回結(jié)果行,如果size的值人于返回的結(jié) 果行的數(shù)屋,那么會返回條數(shù)據(jù). fetchone(self):返回一條結(jié)果行. scroll(self, value, mode=*relative,):
48、移動指針到某一行,如果 mode=,relative 那么表示 從當(dāng)前所在行移動value條;如果mode='absolute那么表示從結(jié)果集的第一行移動value 條.第15章多媒體編程編程程序,在窗門上繪制一個三角形,設(shè)置三個頂點為不同的顏色,并對內(nèi)部進行光 滑著色.答:from import *from import *from import *unport svsclass MyPvOpenGLTest:def _ink_(self, width = 640, height = 480, title = 'MvPyOpenGLTesf): glutlmtglutIiut
49、DisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT.DEPTH) glutImtWmdowSize(width. height)=glutCreateWmdow(title) glutDisplayFunc glutldleFunc(widtli, height)#default drawing functiondef Draw(self):glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) glLoadIdentity()glTranslatef,#draw 2D grapliic, leaving z to
50、 be 0glBegin(GL_POLYGON)glColoi3f,glVertex3£ ,glColor3f?、glVertex3£ ,glColor3f?、 glVertex3£ , glEndQ glTranslatef,glutSvapBufifers()def IiutGL(self. width, height):glClearColor, glClearDeptli glDepthFunc(GL_LESS)glShadeModel(GL_SMOOTH) glEnable(GL_POINT_SMOOTH) glEnabb(GL_LINE_SMOOTH)
51、 glEnable(GL_POLYGON.SMOOTH) glMatnxMode(GL_PROJECTION) glHmt(GL_POINT_SMOOTH_HINT,GL_NICEST) glHmt(GL_LINE_SMOOTH_HINT,GL_NICEST) glHmt(GL_POLYGON_SMOOTH_HINTGL_FASTEST) glLoadIdentity()gluPerspective, float(width)/float(h還ght), glMatnxMode(GL-MODELVIEW)def MauiLoop(self): glutMauiLoopQif_name_ = 1
52、_main_w = MyPvOpeiiGLTest()0編寫程序,讀取兩幅人小一樣的圖片,然后將兩幅圖像的內(nèi)容疊加到一幅圖像,結(jié)果圖像中每個像素值為原兩幅圖像對應(yīng)位置像素值的平均值.答:from PIL import linagemil = Cd:W)mi2 = Cd:W)size =for i in iaiige(sizeO):for j in iange(sizel):color! = (i,j)coloi-2 = (i,j)r = (color 1 0+color20)p3,)Jtotal = len(musics)wliile :if notnextMusic = (musics)print rplaving.nextMusicelse:def OiiButtonOK(self, event):=Tme# create a new tluead to play music t = (taiget=0=False=Tmedef OiiButtonCaiicel(self event):=False=Tme=F
溫馨提示
- 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年工業(yè)互聯(lián)網(wǎng)平臺TEE在工業(yè)自動化中的應(yīng)用策略研究報告
- 文化娛樂產(chǎn)業(yè)消費者行為洞察報告-2025年市場細(xì)分與跨界合作
- 農(nóng)業(yè)溫室建設(shè)項目2025年投資回報率與可持續(xù)發(fā)展研究報告
- 2025年中國燃料油市場全景調(diào)查與投資前景評估報告
- 疫情返校心理健康教育
- 2025年中國汽油抗爆劑項目商業(yè)計劃書
- 鄉(xiāng)村手工藝研學(xué)行企業(yè)制定與實施新質(zhì)生產(chǎn)力項目商業(yè)計劃書
- 耐油耐化學(xué)品NBR彈性體行業(yè)深度調(diào)研及發(fā)展項目商業(yè)計劃書
- 2025年銻礦行業(yè)企業(yè)戰(zhàn)略風(fēng)險管理報告
- 高端體檢中心會員制度企業(yè)制定與實施新質(zhì)生產(chǎn)力項目商業(yè)計劃書
- 股票的知識講座
- 工廠管理工作流程
- 服裝企業(yè)銷售經(jīng)理的主要工作職責(zé)描述范本
- 人工智能在招聘中的應(yīng)用
- 電扶梯發(fā)生夾人夾物現(xiàn)場處置方案演練
- 日結(jié)人員勞務(wù)合作協(xié)議 標(biāo)準(zhǔn)版
- (完整版)病例演講比賽PPT模板
- 初中生物知識雙向細(xì)目表
- 中國建行存單英文翻譯
- 事業(yè)單位工作人員調(diào)動審批表格
- 八年級英語-多維閱讀Skycar示范課教學(xué)設(shè)計1
評論
0/150
提交評論