版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
習(xí)題1答案1.選擇題C C C C D B C B D C 2.簡答題(1)Python語言地開發(fā)者是誰?Python地作者GuidovanRossum是荷蘭人.(2)在Windows10操作系統(tǒng)下,Python默認地安裝路徑是什么?在Windows10操作系統(tǒng)下,Python默認地安裝路徑是C:\Users\Administrator\AppData\Local\Programs\Python\Python38-32.(3)簡述Python程序地運行過程。Python源文件地擴展名是.py。在執(zhí)行時,Python解釋器先將.py文件中地源代碼翻譯成中間代碼,這個中間代碼是一個擴展名為.pyc地文件,再由Python虛擬機(PVM)逐條將字節(jié)碼翻譯成機器指令執(zhí)行。(4)列舉出IDLE編程環(huán)境5個以上快捷鍵地功能。快捷鍵功能說明Ctrl+[縮進代碼Ctrl+]取消縮進代碼Alt+3注釋代碼行Alt+4取消注釋代碼行Alt+/單詞自動完成,只要文中出現(xiàn)過,就可以幫妳自動補齊。多按幾次可以循環(huán)選擇Alt+P瀏覽歷史命令(上一條)Alt+N瀏覽歷史命令(下一條)F1打開Python幫助文檔F5運行程序Ctrl+F6重啟Shell,之前定義地對象與導(dǎo)入地模塊全部失效(5)簡述程序地編譯方式與解釋方式地區(qū)別。編譯是將源程序代碼轉(zhuǎn)換成目的代碼地過程。源代碼是計算機高級語言代碼,而目的代碼則是機器語言代碼。解釋是將源代碼逐條轉(zhuǎn)換成目的代碼同時逐條運行目的代碼地過程。執(zhí)行解釋地計算機程序稱為解釋器(Interpreter)。解釋與編譯地區(qū)別在于編譯是一次性地翻譯,程序被編譯后,運行地時候不再需要源代碼。解釋則在每次程序運行時都需要解釋器與源代碼。這兩者地區(qū)類似于外語資料地翻譯與實時地同聲傳譯。(6)敘述程序設(shè)計地IPO模式地特點。程序設(shè)計模式地IPO模式,即程序包括輸入(Input),處理(Process),輸出(Output)3部分。輸入是程序設(shè)計地起點,包括文件輸入,網(wǎng)絡(luò)輸入,交互輸入,參數(shù)輸入等。輸出是程序展示運算成果地方式,包括文件輸出,網(wǎng)絡(luò)輸出,控制臺輸出,圖表輸出等。而處理部分則是編程地核心,包括數(shù)據(jù)處理與賦值,更重要地是算法。3.編程題(1)參考例1-3,輸入三角形地底邊長與高,計算并輸出三角形地面積。#h0101.py#計算三角形面積s。importmatha=eval(input("底邊長:"))h=eval(input("底邊對應(yīng)地高:"))s=a*h/2print("三角形地面積是{:.2f}".format(s))(2)參考例1-6,在列表中給出若干字符串,計算并輸入最長地字符串。#ex0102.pylst=['hi',"program",'school','for','''chinese''']lst1=[]foriteminlst:lst1.append(len(item))p=max(lst1)foriteminlst:iflen(item)==p:print(item,end="")(3)略。習(xí)題2答案1.選擇題D D D D D A C A B DC B2.簡答題(1)什么是標(biāo)識符?簡述Python標(biāo)識符地命名規(guī)則。計算機中地數(shù)據(jù),如一個變量,方法,對象等都需要有名稱,以方便程序調(diào)用。由用戶定義地,由程序使用地符號就是標(biāo)識符。●Python地標(biāo)識符可以由字母,數(shù)字與下劃線"_"組成,且不能以數(shù)字開頭。●標(biāo)識符區(qū)分大小寫,沒有長度限制。●標(biāo)識符不能使用計算機語言中預(yù)留有特殊作用地關(guān)鍵字。●標(biāo)識符地命名盡量符合見名知意地原則,從而提高代碼地可讀性。(2)什么是關(guān)鍵字?True與False是否是Python地關(guān)鍵字?Python語言保留某些單詞用作特殊用途,這些單詞被稱為關(guān)鍵字,也叫保留字。True與False是Python地關(guān)鍵字。(3)比較運算符地運算結(jié)果是什么類型?布爾類型(4)整數(shù)地二進制,八進制,十六進制都用什么格式描述?將十進制數(shù)轉(zhuǎn)換為二進制,八進制,十六進制地函數(shù)是什么?,二進制(以"OB"或"Ob"開頭),八進制(以數(shù)字"0o"或"0O"開頭)與十六進制(以"Ox"或"OX"開頭)。bin(),hex(),oct()(5)Python地數(shù)值類型數(shù)據(jù)有幾種?舉例說明。數(shù)值類型(Number)是Python地基本數(shù)據(jù)類型,包含整型,浮點型,復(fù)數(shù)類型與布爾類型等4種。3.編程題(1)輸入三科成績,計算平均分與總分。x=eval(input("請輸入A科成績:"))y=eval(input("請輸入B科成績:"))z=eval(input("請輸入C科成績:"))print("3科成績地平均分是{},總分是{}".format((x+y+z)/3,x+y+z))(2)編寫程序,給出三角形地三邊,輸出三角形地面積。#輸入三角形三條邊,有海倫公式計算三角形面積s。importmatha=eval(input("請輸入a邊長:"))b=eval(input("請輸入b邊長:"))c=eval(input("請輸入c邊長:"))p=(a+b+c)/2s=math.sqrt(p*(p-a)*(p-b)*(p-c))print("三角形地面積是{:.2f}".format(s))習(xí)題3答案1.選擇題B A B B A C A A D C2.簡答題(1)字符串有哪3種表示形式?Python中地字符串是字符集合,它被引號所包含,引號可以是單引號,雙引號或者三引號(三個連續(xù)地單引號或者雙引號)。單引號與雙引號包含地是單行字符串,二者地作用相同。三引號可以包含多行字符串。(2)字符串地format()方法中,該方法地參數(shù)有哪幾種?str.format()方法中地str被稱為模板字符串,其中包括多個由"{}"表示地占位符,占位符接收format()方法中地參數(shù)。str模板字符串與format()方法中地參數(shù)地對應(yīng)關(guān)系有以下3種情況。第一種,位置參數(shù)匹配。在模板字符串中,如果占位符{}為空(沒有表示順序地序號),按照參數(shù)出現(xiàn)地先后次序匹配。如果占位符{}指定參數(shù)地序號,按照序號對應(yīng)參數(shù)替換。第二種,使用鍵值對地關(guān)鍵字參數(shù)匹配。format()方法中地參數(shù)用鍵值對形式表示時,在模板字符串中用"鍵"來表示。第三種,使用序列地索引作為參數(shù)匹配。如果format()方法地參數(shù)是列表或元組,可以用其索引(序號)來匹配。(3)字符串合并與拆分地函數(shù)是什么,通過示例來驗證。split(sep,num),以sep為分隔符分隔字符串,如果num有指定值,則僅截取num個子字符串join(seq),以指定字符串作為分隔符,將seq中所有地元素(地字符串表示)合并為一個新地字符串(4)len('您好,Helen')與len("\n\t\r")地值都是多少?8與3(5)"China"in"Ilovechina"地值是True還是False?False(6)"Ilovechina".find("China")地值是多少?-13.編程題(1)編寫程序,給出一個英文句子,統(tǒng)計單詞個數(shù)。sentence='''residentXiJinpingurgedall-outeffortstoachievethegoalofeliminatingpovertyinChinawithintwoyearsinhisthree-dayinspectiontourofChongqing,whichendedonWednesday.'''sentence=sentence.replace(",","")sentence=sentence.replace(".","")words=sentence.split()print(len(words))(2)編寫程序,給出一個字符串,將其中地字符"E"用空格替換后輸出。sentence='''residEntXiJinpingurgEdall-outEfforts'''print(sentence.replace("E",""))(3)從鍵盤交互式輸入一個人地18位地身份證號,以類似于"2001年09月12日"地形式輸出該人地出生日期。xx=input("IDCardNumber:")print(xx[6:10]+"年"+xx[10:12]+'月'+xx[12:14]+"日")習(xí)題4答案1.選擇題C A A D A D B D C DA D2.簡答題(1)程序流程圖包括哪些元素?控制流,處理流,判斷框,起始結(jié)束框等。(2)敘述pass語句地作用。pass語句地意義是空語句,主要是為了保持程序結(jié)構(gòu)地完整性設(shè)計地。pass語句一般用做占位語句,該語句不影響其后面語句地執(zhí)行。(3)跳轉(zhuǎn)語句break與continue地區(qū)別是什么?break語句地作用是循環(huán)體內(nèi)部跳出,即結(jié)束循環(huán)。有時也稱為斷路語句,就是循環(huán)被中斷,不再執(zhí)行循環(huán)體。continue語句需要用于循環(huán)結(jié)構(gòu)中,它地作用是終止當(dāng)前這一輪地循環(huán),跳過本輪剩余地語句,直接進入下一輪循環(huán)。continue語句有時也被稱為短路語句,指地是只對本次循環(huán)短路,并不終止整個循環(huán)。(4)敘述for循環(huán)與while循環(huán)地執(zhí)行過程。for循環(huán)從序列中逐一提取元素,放在循環(huán)變量中,對于序列中地每個元素執(zhí)行一次語句塊。序列可以是字符串,列表,文件或range()函數(shù)等。3.編程題(1)給定某一字符串s,對其中地每一字符c大小寫轉(zhuǎn)換:如果c是大寫字母,則將它轉(zhuǎn)換成小寫字母;如果c是小寫字母,則將它轉(zhuǎn)換成大寫字母;如果c不是字母,則不轉(zhuǎn)換。s="abc32TT9ac"t=""foriinrange(len(s)):ifs[i].islower():t+=s[i].upper()elifs[i].isupper():t+=s[i].lower()else:t+=s[i]print(t)(2)輸入一個整數(shù),將各位數(shù)字反轉(zhuǎn)后輸出。num=eval(input("請輸入一個整數(shù):"))s=str(num)print(s[::-1])(3)計算12-22+32-42+…+972-982+992。s=0flag=1foriinrange(1,100):s=s+i*i*flagflag*=-1print(s)(4)一個數(shù)如果恰好等于它地因子這與,這個數(shù)就稱為"完數(shù)",例如,6地因子為1,2,3,而6=1+2+3,因此6就是"完數(shù)"。編程找出100內(nèi)地所有完數(shù)。fornuminrange(1,100):t=0s=""foriinrange(1,num//2+1):ifnum%i==0:t+=is+=str(i)+""ift==num:print("{}是完數(shù),其因子為:{}".format(t,s))(5)輸入兩個正整數(shù)m與n,求其最大公約數(shù)與最小公倍數(shù)。
m=eval(input("請輸入正整數(shù)m:"))n=eval(input("請輸入正整數(shù)n:"))ifm<n:m,n=n,mt=m*nr=m%nwhiler!=0:m=nn=rr=m%nprint("最大公約數(shù)是:{}".format(n))print("最小公倍數(shù)是:{}".format(int(t/n)))習(xí)題5答案1.選擇題B A D C D C D C D DA B D B2.簡答題(1)列表,元組,字典都用什么標(biāo)記或函數(shù)創(chuàng)建?列表使用標(biāo)記"[]"可以創(chuàng)建,元組通常使用標(biāo)記"()"創(chuàng)建。字典可以用標(biāo)記"{}"創(chuàng)建,字典中每個元素都包含鍵與值兩部分,鍵與值用冒號分開,元素之間用逗號分隔。列表與元組相互轉(zhuǎn)換地函數(shù)是tuple(lst)與list(tup),都可以創(chuàng)建元組與列表;dict()是用于創(chuàng)建字典地函數(shù)。(2)列表與元組兩種序列結(jié)構(gòu)有什么區(qū)別?列表它元組都是Python中常用地序列類型。創(chuàng)建列表時,只要把逗號分隔地元素使用方括號括起來即可。列表是可變地,可向列表中任意增加元素或刪除元素,可以對列表進行遍歷,排序,反轉(zhuǎn)等操作。元組是包含0個或多個元素地不可變序列類型。創(chuàng)建元組時,只要將元組地元素用小括號包圍,并使用逗號隔開即可。元組中地任何元素不能替換或刪除。元組與列表地區(qū)別在于元組地元素不能修改。(3)字典有什么特點?列出任意5種字典地操作函數(shù)。字典是Python中內(nèi)置地映射類型。字典可以看成元素對構(gòu)成地列表,其中一個元素是鍵,另一個元素是值。在搜索字典時,首先查找鍵,當(dāng)查找到鍵后就可以直接獲取該鍵對應(yīng)地值。字典中地值并沒有特殊地順序,但是都存儲在一個特定地鍵(key)里,鍵可以是數(shù)字,字符串以及元組等。此外,字典中地元素(鍵值對)是無序地。函數(shù)或操作功能描述dicts.keys()返回所有地鍵信息dicts.values()返回所有地值信息dicts.items()返回所有地鍵值對dicts.get(key,defualt)鍵存在則返回相應(yīng)值,否則返回默認值dicts.pop(key,default)鍵存在則返回相應(yīng)值,同時刪除鍵值對,否則返回默認值dicts.popitem()隨機從字典中取出一個鍵值對,以元組(key,value)形式返回dicts.clear()刪除所有地鍵值對dicts.update(dicts2)更新字典,參數(shù)dict2為更新地字典(4)遍歷列表與元組有哪幾種方法?列表與元組地遍歷地方式相同,以列表為列說明如下。遍歷列表可以逐個處理列表中地元素,通常使用for循環(huán)與while循環(huán)來實現(xiàn)。for循環(huán)可以直接訪問列表中地元素,用while循環(huán)遍歷列表,需要先獲取列表地長度,將獲得地長度作為循環(huán)地條件。(5)給定列表變量ls,ls.pop(i)方法地功能是什么?返回列表ls中地第i項元素并刪除該元素(6)列表與元組相互轉(zhuǎn)換地函數(shù)是什么?列表與元組相互轉(zhuǎn)換地函數(shù)是tuple(lst)與list(tup),其中地參數(shù)分別是被轉(zhuǎn)換對象。(7)給定字典變量dicts,dicts.items()方法地功能是什么?返回字典中所有地鍵值對3.編程題(1)編寫程序,隨機生成由英文字符與數(shù)據(jù)組成地4位驗證碼。importrandomletters1="ABCDEFGHIJKLMN"letters2="opqrstuvwxyz"letters3="0123456789"letters=letters1+letters2+letters3code=""foriinrange(4):code+=random.choice(letters)print("產(chǎn)生地驗證碼是:{}".format(code))(2)用字典描述學(xué)生信息,包括no(學(xué)號),name(姓名),score(成績)等。使用列表存儲學(xué)生信息地,并根據(jù)給定學(xué)生姓名,查找學(xué)生地信息。stu1={"no":101,"name":"Rose","address":"Changjianroad","score":92}stu2=dict(id=201,name="Mike",address="Huangheroad",score=83)stu3=dict([('id',103),('name','Kate'),('address','Xinanroad'),('pcode','116033'),('score',90)])lst=[stu1,stu2,stu3]var=input("請輸入要查找學(xué)生地姓名:")result=Falseforiteminlst:ifvar.strip()initem.values():print(item)result=Trueifresult==False:print("信息不存在")(3)使用input函數(shù),輸入若干單詞,按字典順序輸出單詞(如果某個單詞出現(xiàn)多次,只輸出一次)。words=input("請輸入若干單詞,用英文逗號分割:")word_list=words.split(",")aset=set()foriinword_list:#去除重復(fù)元素aset.add(i)word3=list(aset)#將集合轉(zhuǎn)換為列表后,排序word3.sort()print(word3)(4)利用元組創(chuàng)建一個存儲Python關(guān)鍵字地對象,并檢測給定地單詞是否是Python關(guān)鍵字。tup1=("in","break","continue","True","False","if","while","pass")var=input("Enteraword:")ifvarintup1:print("這個單詞是Python關(guān)鍵字")else:print("這個單詞不是Python關(guān)鍵字")(5)編寫程序,刪除列表中地重復(fù)元素。提示:將列表作為集合對象地參數(shù),再使用list()函數(shù)將集合轉(zhuǎn)換為列表即可。第2章STYLEREF"標(biāo)題1+1"錯誤!文檔中沒有指定樣式地文字。 PAGE20 PAGE21 PAGE1習(xí)題6答案1.選擇題B D D B C B C D D AA A2.簡答題(1)什么是嵌套函數(shù)?舉例說明。嵌套函數(shù)通常是指函數(shù)地嵌套定義,即在函數(shù)內(nèi)部定義地函數(shù),但內(nèi)嵌地函數(shù)只能在該函數(shù)內(nèi)部使用,閉包應(yīng)用了函數(shù)地嵌套定義。defsum(n):deffact(a):#嵌套函數(shù),求階乘t=1foriinrange(1,a+1):t*=ireturnts=0foriinrange(1,n+1):s+=fact(i)#調(diào)用嵌套函數(shù)fact()returnsn=5print(sum(n))(2)函數(shù)地可變參數(shù)有哪幾種,各有什么特點?可變參數(shù)指地是在函數(shù)定義時,該參數(shù)可以接受任意個數(shù)地參數(shù)。可變參數(shù)有兩種形式,參數(shù)名稱前加星號(*)或者加兩個星號(**)。定義可變參數(shù)地函數(shù)語法格式如下。deffunname(formal_args,*args,**kwargs):statementsreturnexpression在上面地函數(shù)格式定義中,formal_args為定義地傳統(tǒng)參數(shù),代表一組參數(shù),*args與**kwargs為可變參數(shù)。函數(shù)傳入地參數(shù)個數(shù)會優(yōu)先匹配formal_args參數(shù)地個數(shù),*args以元組地形式保存多余地參數(shù),**kwargs以字典地形式保存帶有指定名稱形式地參數(shù)。(3)函數(shù)傳遞時,基本數(shù)據(jù)類型做參數(shù)與組合數(shù)據(jù)類型做參數(shù),有什么區(qū)別?舉例說明?;緮?shù)據(jù)類型地變量作為實際參數(shù)時,是將常量或變量地值傳遞給形參,是一種值傳遞地過程,實參與形參是兩個獨立不有關(guān)地變量,因此,實參值一般是不會改變地。列表,元組,字典等組合數(shù)據(jù)類型地變量用做函數(shù)參數(shù)時,這些變量在函數(shù)體外,是全局變量。形參與實參之間傳遞地只是組合數(shù)據(jù)類型變量(參數(shù))地地址(引用),如果在函數(shù)內(nèi)部修改了參數(shù)地值,參數(shù)地地址是不發(fā)生改變地,這種修改將影響到外部地全局變量。(4)在內(nèi)置函數(shù)中,列出5種常用地數(shù)學(xué)運算函數(shù)與字符運算函數(shù)(略)(5)global語句地功能是什么?為了能在函數(shù)內(nèi)部讀/寫全局變量,Python提供了global語句,用于在函數(shù)內(nèi)部聲明全局變量。(6)什么是默認參數(shù)?定義函數(shù)時,可以給函數(shù)地形式參數(shù)設(shè)置默認值,這種參數(shù)被稱為默認參數(shù)。當(dāng)調(diào)用函數(shù)地時候,由于默認參數(shù)在定義時已被賦值了,所以可以直接忽略。如果默認參數(shù)沒有傳入值,則直接使用默認值;如果默認參數(shù)傳入了值,則使用傳入地新值替代。3.編程題(1)編寫函數(shù)isodd(x),若x不是整數(shù),給出提示后退出程序;如果x為奇數(shù),返回True,如果x為偶數(shù),返回False。defisodd(x):ifint(x)!=x:print("x不是整數(shù),程序退出")returnelifx//2!=x/2:returnTrueelse:returnFalseprint(isodd(3))print(isodd(3.2))print(isodd(32))(2)編寫函數(shù)change(str1),其功能是對參數(shù)str1進行大小寫轉(zhuǎn)換,其中地大寫字母轉(zhuǎn)換成小寫字母;小寫字母轉(zhuǎn)換成大寫字母;非英文字符不轉(zhuǎn)換。defchange(str1):t=""foriinrange(len(str1)):ifstr1[i].islower():t+=str1[i].upper()elifstr1[i].isupper():t+=str1[i].lower()else:t+=str1[i]returntprint(change("iu98kLLD"))(3)編寫并測試函數(shù)gcd(m,n)與l(m,n),功能是求兩個整數(shù)地最大公約數(shù)與最小公倍數(shù)。defgcd(m,n):ifm<n:m,n=n,mr=m%nwhiler!=0:m=nn=rr=m%nreturnndefl(m,n):t=m*nreturnint(t/gcd(m,n))m=eval(input("請輸入正整數(shù)m:"))n=eval(input("請輸入正整數(shù)n:"))print("最大公約數(shù)是",gcd(m,n))print("最小公倍數(shù)是",l(m,n))(4)編寫并測試函數(shù)reverse(x),輸入一個整數(shù),將各位數(shù)字反轉(zhuǎn)后輸出。defreverse(x):y=str(x)y=y[::-1]returnint(y)print(reverse(12345))(5)用遞歸方法反轉(zhuǎn)一個字符串,例如"abcde",反轉(zhuǎn)為"edcba"。deffunc(s):iflen(s)<1:returnsreturnfunc(s[1:])+s[0]s="abcde"result=func(s)print(result)(6)編寫程序求12-22+32-42+…+972-982+992。(略)習(xí)題7答案1.選擇題A A D C D A C B B A2.簡答題(1)什么是對象?什么是類?類與對象地關(guān)系是什么?對象(Object)對應(yīng)客觀世界地事物,將描述事物地一組數(shù)據(jù)與與這組數(shù)據(jù)有關(guān)操作封裝在一起,形成一個實體,這個實體就是對象。具有相同或相似性質(zhì)地對象地抽象就是類(Class)。因此,對象地抽象是類,類地具體化就是對象。(2)面向?qū)ο笳Z言有哪三個特性?封裝性,繼承性與多態(tài)性(3)什么是面向?qū)ο缶幊痰乩^承性?有什么優(yōu)點?繼承(Inheritance)描述了類之間地關(guān)系,在這種關(guān)系中,一個類共享了一個或多個其它類定義地數(shù)據(jù)與操作。繼承地類(子類)可以對被繼承地類(父類)地操作進行擴展或重定義。通過繼承,可以在無須重新編寫原有類地情況下,對原有類地功能進行擴展。繼承不僅增強了代碼復(fù)用性,提高了開發(fā)效率,而且為程序地修改補充提供了便利。(4)類屬性與實例屬性地區(qū)別是什么?屬性也叫成員變量,分為兩種類型:一種是實例屬性,另一種是類屬性。實例屬性是在構(gòu)造方法__init__()中定義地,定義時以self作為第1個參數(shù);類屬性是在類中方法之外定義地屬性。在類地地外部,實例屬性屬于實例(對象),只能通過對象名訪問;類屬性屬于類,可以通過類名訪問,也可以通過對象名訪問,被類地所有對象共享。(5)構(gòu)造方法與析構(gòu)方法名字都是什么?類中定義地名字為__init__()地方法(以兩個下畫線"_"開頭與結(jié)尾)被稱為構(gòu)造方法。__del__()方法是析構(gòu)方法。(6)構(gòu)造方法作用是什么?與實例方法有什么不同?類中定義地名字為__init__()地方法(以兩個下畫線"_"開頭與結(jié)尾)被稱為構(gòu)造方法。一個類定義了__init__()方法以后,創(chuàng)建對象時,就會自動為新生成地對象調(diào)用該方法。構(gòu)造方法一般用于完成對象數(shù)據(jù)成員設(shè)置初值或進行其它必要地初始化工作。實例方法也叫成員方法,需要通過對象調(diào)用,實現(xiàn)特定地功能。(7)列舉出5種重載地運算符及對應(yīng)地方法。方法名 重載說明 運算符調(diào)用方式__add__ 對象加法運算 x+y,x+=y__sub__ 對象減法運算 x-y,x-=y__div__ 對象除法運算 x/y,x/=y__mul__ 對象乘法運算 x*y,x*-=y__mod__ 對象取余運算 x%y,x%=y__repr__或__str__ 打印或轉(zhuǎn)換對象 print(x),repr(x),str()__getitem__ 對象對象索引運算 x[key],x[i:j]__setitem__ 對象索引賦值 x[key],x[i:j]=3.閱讀程序self.value=200MyClass.value=100super().value=100self.value=200UClass.value=200用對象訪問,cc.value=200用類訪問,UClass.value=2004.編程題(1)設(shè)計一個Group類,在該類中包括:一個數(shù)據(jù)成員score(每個學(xué)生地分數(shù)),兩個類成員total(班級地總分)與count(班級地人數(shù))。成員方法setScore(socre)用于設(shè)置分數(shù),成員方法sum()用于累計總分,類方法average()用于求平均值。交互式輸入某組學(xué)生地成績,顯示該組地總分與平均分。classGroup:total=count=0defsetScore(self,score):self.score=scoredefgetScore(self):returnself.scoredef__init__(self,score):self.setScore(score)Group.count+=1self.sum()defsum(self):Group.total+=self.getScore()@classmethoddefaverage(cls):returnGroup.total/Group.count@classmethoddefshow(cls):print("總分是:{}".format(Group.total))print("平均分是:{}".format(Group.average()))s1=Group(90)s2=Group(87)s3=Group(93)Group.show()(2)為二次方程式ax2+bx+c=0設(shè)計一個名為Equation地類,這個類包括:●代表三個系數(shù)地成員變量a,b,c?!褚粋€參數(shù)為a,b,c地構(gòu)造方法?!褚粋€名為getDiscriminant()地方法返回判別式地值?!褚粋€名為getRoot1()與getRoot2()地方法返回等式地兩個根:如果判別式為負,這些方法返回0。importmathclassEquation:def__init__(self,a,b,c):self.a=aself.b=bself.c=cdefgetDeta(self):returnself.b*self.b-4*self.a*self.cdefgetRoot1(self):ifself.getDeta()<0:return0else:return(-self.b+math.sqrt(self.getDeta()))/(2*self.a)defgetRoot2(self):ifself.getDeta()<0:return0else:return(-self.b-math.sqrt(self.getDeta()))/(2*self.a)e1=Equation(1,4,5)print(e1.getRoot1(),e1.getRoot2())(3)設(shè)計一個描述自由落體運動地類,要求能獲得任意時刻地速度及位移,并進行測試。已知重力加速度為9.8m/s2。classMovement:acceleration=9.8def__init__(self,t):self.t=tdefgetSpeed(self):returnMovement.acceleration*self.tdefgetDistance(self):returnMovement.acceleration*self.t*self.t/2m1=Movement(3)print("{:.1f}秒后,速度是{:.2f},位移是{:.2f}".format(m1.t,m1.getSpeed(),m1.getDistance()))習(xí)題8答案1.選擇題B D A D C A C C B D2.簡答題(1)Python導(dǎo)入模塊時一般采用什么搜索順序?Python模塊地路徑搜索順序如下:當(dāng)前目錄,環(huán)境變量pythonpath包含地目錄,python標(biāo)準(zhǔn)庫目錄與第三方包目錄。(2)Python地內(nèi)置屬性__name__有什么作用?__name__是Python地內(nèi)置屬性,用于表示當(dāng)前模塊地名字,也能反映一個包地結(jié)構(gòu)。如果.py文件作為模塊被調(diào)用,__name__地屬性值為模塊文件地主名,如果模塊獨立運行,__name__屬性值為__main__。語句if__name__=='main'地作用就是控制這兩種不同情況執(zhí)行代碼地過程,當(dāng)__name__值為"main"時,文件作為腳本直接執(zhí)行,而使用import或from語句導(dǎo)入到其它程序中時,模塊中地代碼是不會被執(zhí)行地。(3)Python地第三方庫如何安裝?如何查看當(dāng)前計算機中已經(jīng)安裝地第三方庫?用戶可以使用pip工具安裝第三方庫。pip工具由Python官方提供并維護,是常用且高效地在線第三方庫安裝工具。pip3是Python地內(nèi)置命令,用于Python3版本安裝第三方庫,需要在命令行下執(zhí)行。pip3list命令用于列出當(dāng)前系統(tǒng)中已安裝地第三方庫。(4)敘述用Python地第三方庫pyinstaller打包文件地過程與注意事項。pyinstaller是用于源文件打包地第三方庫,它能夠在Windows,Linux,MacOSX等操作系統(tǒng)下將Python源文件打包。打包后地Python文件可以在沒有安裝Python地環(huán)境中運行,也可以作為一個獨立文件方便傳遞與管理。使用pyinstaller命令打包文件,需要注意以下幾個問題。●文件路徑中不能出現(xiàn)空格與英文句號(.),如果存在,需要修改Python源文件地名字。●源文件需要是UTF-8編碼。采用IDLE編寫地源文件均保存為UTF-8格式,可以直接使用?!袢绻钐崾痉暗芈窂教崾痉莇:\python,生成地打包生成文件地位置與與’>’提示符前地路徑是一致地。(5)模塊與包有什么區(qū)別?它們之間地關(guān)系是什么?模塊是一個包含變量,語句,函數(shù)或類地程序文件,文件地名字就是模塊名加上.py擴展名.包是模塊文件所在地目錄,模塊是實現(xiàn)某一特定功能地函數(shù)與類地文件。模塊通常在包中,包用于模塊地組織。(6)舉例說明random庫中5種函數(shù)地功能。random.random(),返回一個介于左閉右開[0.0,1.0)區(qū)間地浮點數(shù)>>>random.random()0.8880685743559004random.randint(a,b),返回range[a,b]之間地一個隨機整數(shù),等價于range(a,b+1)>>>random.randint(10,20)19random.randrange(stop),返回range(0,stop)之間地一個整數(shù)>>>random.randrange(10)8random.choice(seq),從非空序列seq中隨機選取一個元素。如果seq為空,則報告IndexError異常 >>>random.choice(['a','b','c','d','e'])'c'random.uniform(a,b),返回一個介于a與b之間地浮點數(shù)。如果a>b,則是b到a之間地浮點數(shù)。結(jié)果可能包含a與b>>>random.uniform(10,20)17.27824882833889(7)turtle.setup()方法功能是什么?turtle.setup()方法,用于設(shè)置繪圖窗口地大小與位置。(8)使用jieba庫地什么方法可以實現(xiàn)精確分詞,并返回一個列表?jieba.lcut(s),精確模式分詞菩薩返回一個列表類型。3.閱讀程序(1)代碼1:9;代碼2:45(2)代碼1:turtle.fd;代碼2:turtle.seth3.編程題(1)使用random庫,產(chǎn)生10個100到200之間地隨機數(shù),并求其最大值,平均值,標(biāo)準(zhǔn)差與中位數(shù)。#平均數(shù)defmean(numlist):s=0.0fornuminnumlist:s=s+numreturns/len(numlist)##標(biāo)準(zhǔn)差=sqrt(((x1-x)^2+(x2-x)^2+(xn-x)^2)/n)。defdev(numlist,mean):sdev=0.0fornuminnumlist:sdev=sdev+(num-mean)**2return(sdev/(len(numlist)-1))**0.5defmedian(numlist):numlist.sort()half=len(numlist)//2return(numlist[half]+numlist[~half])/2#函數(shù)調(diào)用ls1=[1,3,-6,5,8]ls2=[3.2,9,-32,56,0,1]v1=max(ls2)v2=mean(ls2)v3=dev(ls2,v2)v4=median(ls2)print("最大值:{:.2f},平均值:{:.2f},標(biāo)準(zhǔn)差:{:.2f},中位數(shù):{:.2f}".format(v1,v2,v3,v4))(2)使用datetime庫,對一個日期(含時間),輸出不少于8種日期格式。(略)(3)使用turtle庫繪制一個疊加三角形。importturtleastt.setup(260,260,None,None)t.pu()t.fd(-60)t.pensize(2)t.width(2)t.pencolor("darkgreen")t.pd()t.fd(100)t.seth(120)t.pencolor("black")t.fd(100)t.seth(-120)t.pencolor("blue")t.fd(100)t.pencolor("purple")t.fd(100)t.seth(0)t.pencolor("green")t.fd(100)t.pencolor("gold")t.fd(100)t.seth(120)t.pencolor("red")t.fd(100)t.seth(-120)t.pencolor("grey")t.fd(100)t.seth(120)t.pencolor("violet")t.fd(100)(4)編寫程序統(tǒng)計《水滸轉(zhuǎn)》中前10位出場最多地人物。參考例8-17完成,程序略。習(xí)題9答案1.選擇題A D C D B B B C B D2.簡答題(1)常用地文本文件編碼方式有哪幾種?漢字在不同地編碼中各占幾個字節(jié)?ASCII碼即美國標(biāo)準(zhǔn)信息交換碼,僅對10個數(shù)字,26個大寫英文字母,26個小寫英文字母及一些其它常用符號進行了編碼。ASCII采用8位(1字節(jié))編碼.UTF-8編碼是國際通用地編碼方式,用8位(1字節(jié))表示英語(兼容ASCII碼),以24位(3字節(jié))表示中文及其它語言,UTF-8對全世界所有國家地字符進行了編碼。GB2312編碼是中國制定地中文編碼,用1字節(jié)表示英文字符,用2字節(jié)表示漢字字符。GBK是對GB2312地擴充。Unicode是國際組織制定地可以容納世界上所有文字與符號地字符編碼方案,它是編碼轉(zhuǎn)換地基礎(chǔ)。采用不同地編碼方式,寫入文件地內(nèi)容可能是不同地。就漢字編碼而言,GBK編碼地1個漢字占2個字符,UTF-8編碼地1個漢字占3個字符,Unicode編碼中地1個漢字占1個字符。(2)列出任意4種文件訪問模式,說明其意義。r 只讀模式打開,默認值。該模式打開地文件需要存在,如果不存在,將報異常r+ 讀寫模式打開。該模式打開地文件需要存在,如果不存在,將報異常w 寫模式打開。文件如果存在,清空內(nèi)容后重新創(chuàng)建文件w+ 讀寫模式打開。文件如果存在,清空內(nèi)容后重新創(chuàng)建文件a 追加地方式打開,寫入地內(nèi)容追加到文件尾。該模式打開地文件如果已經(jīng)存在,不會清空,否則新建一個文件(3)文本文件與二進制文件在讀寫時有什么區(qū)別?舉例說明。當(dāng)文件被打開后,根據(jù)文件地訪問模式可以對文件進行讀寫操作。以文本文件方式打開地文件,默認地,程序按照當(dāng)前操作系統(tǒng)地編碼方式來讀寫文件,也可以指定編碼方式來讀寫文件;如果文件是以二進制文件方式打開地,按字節(jié)流方式讀寫。read()與write()方法可以讀寫二進制文件,但二進制文件只能讀寫bytes字符串。例如,>>>fileb=open(r"d:\pythonfile36\\ch7\\mydata.dat",'wb')#以'wb'方式打開二進制文件>>>fileb.write(b"HelloPython")#寫bytes字符串>>>n=123>>>fileb.write(bytes(str(n),encoding='utf-8'))#將整數(shù)轉(zhuǎn)換為bytes字符串寫入文件>>>fileb.write(b"\n3.14")>>>fileb.close()#以'rb'方式打開二進制文件>>>file=open(r"d:\pythonfile36\\ch7\\mydata.dat",'rb')>>>print(file.read())b'HelloPython123\n3.14'>>>file.close()(4)readlines()方法與readline()方法讀取文本文件時,主要區(qū)別是什么?readline([size]) 主要用于讀取文件一行內(nèi)容,可以使用參數(shù)size,讀取指定長度地字符或字節(jié)。readlines([hint])用于讀取文件地所有行,返回行所組成地列表。參數(shù)hint指定讀入行數(shù)。(5)文件寫操作主要使用哪兩個方法?write()方法可向文件中寫入字符串,同時文件指針后移;writelines()方法可向文件中寫入字符串序列。(6)os模塊地getcwd()函數(shù)有什么用途?os.getcwd(),當(dāng)前Python腳本文件工作地路徑。(7)如何創(chuàng)建csv文件?CSV文件是純文本文件,可以使用記事本按照CSV文件地規(guī)則來建立。使用Excel工具錄入數(shù)據(jù),另存為CSV文件是比較常用地一種方法。(8)高維數(shù)據(jù)有什么特點?高維數(shù)據(jù)由鍵值對類型地數(shù)據(jù)構(gòu)成,采用對象方式組織,屬于維度更高地數(shù)據(jù)組織方式。3.閱讀程序(1)代碼1:line.replace(deleteword,"");代碼2:fo.write(line1)(2)代碼1:names; 代碼2:len(names.split())(3)代碼1:d[t[c]]=d.get(t[c],0)+1; 代碼2:ls.sort(key=lambdax:x[1],reverse=True)4.編程題(1)將一個文件中地所有英文字母轉(zhuǎn)換成大寫,復(fù)制到另一文件中。fi=open("ex0701.py",'r')fo=open("f2.txt",'w')forlineinfi:line=line.upper()fo.write(line)fi.close()fo.close()(2)將一個文件中地指定單詞刪除后,復(fù)制到另一個文件中。fi=open("ex0702.py",'r')fo=open("f2.txt",'w')deleteword="line"forlineinfi:line1=line.replace(deleteword,"")#print(line1)fo.write(line1)fi.close()fo.close()(3)接收用戶從鍵盤輸入地一個文件名,然后判斷該文件是否存在于當(dāng)前目錄。若存在,則輸出以下信息:文件是否可讀與可寫,文件地大小,文件是普通文件還是目錄。importos,os.pathfilename=input("請輸入文件地全名:")ifos.path.exists(filename):print("該文件存在于當(dāng)前目錄下")print("下面是文件信息")print("文件大小是:",os.path.getsize(filename))ifos.path.isfile(filename):print(filename,"是一個文件")else:print(filename,"是一個目錄")else:print("該文件不存在!")(4)將一文本文件加密后輸出,規(guī)則如下:大寫英文字符A變換為C,B變換為D,……,Y變換為A,Z變換為B,小寫英文字符規(guī)則同上,其它字符不變。s="abc123^&**KJFDFDLKy"s2=""forcins:ifc.islower():c=(ord(c)-ord('a')+3)%26+ord('a')#print(chr(c),end="")elifc.isupper():c=(ord(c)-ord('A')+3)%26+ord('A')#print(chr(c),end="")else:c=ord(c)s2+=chr(c)print(s2)習(xí)題10答案1.選擇題D B B C C D B A B D2.簡答題(1)什么叫異常?簡述Python地異常處理機制。異常(Exception)就是程序在運行過程中發(fā)生地,由于硬件故障,軟件設(shè)計錯誤,運行環(huán)境不滿足等原因?qū)е碌爻绦蝈e誤事件,比如除0溢出,引用序列中不存在地索引,文件找不到等,這些事件地發(fā)生將阻止程序地正常運行。異常處理機制如下。程序執(zhí)行過程中如果出現(xiàn)異常,會自動生成一個異常對象,該異常對象被提交給Python解釋器,這個過程稱為拋出異常。拋出異常也可以由用戶程序自行定義。當(dāng)Python解釋器接收到異常對象時,會尋找處理這一異常地代碼并處理,這一過程叫捕獲異常。如果Python解釋器找不到可以處理異常地方法,則運行時系統(tǒng)終止,應(yīng)用程序退出。Python通過try-except語句處理異常。(2)除了上列出地7種常見異常外,查文檔,列舉3種其它地內(nèi)置異常類。KeyboardInterrupt,TimeoutError,EOFError,MemoryError,ImportError等(3)如何創(chuàng)建用戶自定義異常?創(chuàng)建用戶自定義異常地基本步驟如下。聲明一個新地異常類,使之以Exception類或其它某個已經(jīng)存在地系統(tǒng)異常類或用戶異常類為父類。為新地異常類定義屬性與方法,或重載父類地屬性與方法,使這些屬性與方法能夠體現(xiàn)該類所對應(yīng)地錯誤地信息(4)異常處理中地else語句與循環(huán)中地else語句類似,當(dāng)try語句沒有捕獲到異常信息時,將不執(zhí)行except語句塊,而是執(zhí)行else語句塊。使用raise語句能顯式地拋出異常,其格式如下:raise異常類
#拋出異常,并隱式地創(chuàng)建類對象raise異常類對象
#拋出異常,創(chuàng)建異常類地對象raise
#重新拋出剛剛發(fā)生地異常(6)斷言語句地格式是:assertboolCondition,description,當(dāng)boolCondition地值為真時,將觸發(fā)異常。這種說法正確嗎?不正確3.閱讀程序(1)19 #創(chuàng)建z3對象時正常執(zhí)行。年齡錯誤#創(chuàng)建Lisi對象時報異常(2)Location1/Location2/Location44.編程題(1)編程實現(xiàn)索引超出范圍異常IndexError類型。try:chars=['a','b','c','d','e']chars[4]=1print(chars)chars[5]='xx'exceptIndexError:print("索引超過范圍")(2)設(shè)計一個一元二次方程類,并為這個類添加異常處理。importmathclassEquationException(Exception): def__init__(self,eid,message):#異常描述self.eid=eidself.message=messageclassExceptionDemo:#業(yè)務(wù)邏輯defputing(self,a,b,c):print("calledputing()");deta=b*b-4*a*cifdeta<0:raiseEquationException(101,"deta值小于零")else:x1=(-b+math.sqrt(deta))/(2*a)x2=(-b-math.sqrt(deta))/(2*a)print("一元二次方程地根是{},{}".format(x1,x2))print("normalexit")myobject=ExceptionDemo()#功能測試try:myobject.puting(4,4,-2)myobject.puting(2,3,2)exceptEquationExceptionase:print("Exceptioncaught,id:{},message:{}".format(e.eid,e.message))(3)定義一個Circle類,其中有求面積地方法,當(dāng)半徑小于0時,拋出一個用戶自定義異常。(略)(4)從鍵盤輸入一個整數(shù),求100除以它地商,并顯示。要求對從鍵盤輸入地數(shù)值進行異常處理。n=eval(input("請輸入數(shù)值:"))try:s=100/nprint(s)exceptExceptionasee:print(ee)習(xí)題11答案1.選擇題A C D D B D D C2.簡答題(1)窗口對象地mainloop()方法有什么作用?mainloop()方法用于啟動事件循環(huán)。GUI窗口啟動,等待響應(yīng)用戶操作。(2)使用pack()方法地布局有什么特點?pack()方法以塊地方式布局組件,該方法將組件顯示在默認位置,是最簡單,直接地用法。(3)使用grid()方法地布局有什么特點?使用grid()方法地布局被稱為網(wǎng)格布局,它按照二維表格地形式,將容器劃分為若干行與若干列,組件地位置由行列所在位置確定。(4)Frame組件可以用于布局,主要作用是什么?框架(Frame)是一個容器組件,通常用于對組件進行分組,從而實現(xiàn)復(fù)雜地布局。(5)請列舉出Label組件6種以上地屬性。屬性說明text設(shè)置標(biāo)簽顯示地文本bg與fg指定組件地背景色與前景色width與height指定組件地寬度與高度padx與pady組件內(nèi)文本左右與上下地預(yù)留空白寬度,默認值為1(像素)anchor設(shè)置文本在組件內(nèi)部地位置,取值為N,S,W,E,NW,SW,NE,SEjustify設(shè)置文本對齊方式,取值為LEFT(左對齊),RGHT(右對齊)或CENTER(居中對齊)font設(shè)置字體(6)Radiobutton組件與Checkbutton組件地區(qū)別是什么?Radiobutton組件用于創(chuàng)建單選按鈕組。按鈕組由多個單選按鈕組成,選中按鈕組中地一項時,其它選項則取消取中。Checkbutton組件用于創(chuàng)建復(fù)選框,Checkbutton組件與Radiobutton組件地功能類似,但Radiobutton組件實現(xiàn)地是單選功能,而Checkbutton在系列選項中可以選擇0個或多個,實現(xiàn)復(fù)選功能。(7)Python地GUI編程中,組件與容器地概念有什么區(qū)別?組件是指標(biāo)簽,按鈕,列表框等對象,需要將其放在容器中顯示。容器是指可放置其它組件或容器地對象,例如,窗口或Frame(框架),容器也可以叫做容器組件。3.閱讀程序代碼1:win,textvariable=number,width=24代碼2:mand=puting4.編程題(1)編制求兩個正整形數(shù)最小公倍數(shù)程序。要求:兩個輸入框txt,txt2,用來輸入整形數(shù)據(jù);一個按鈕;一個不可編輯地輸入組件txt3。當(dāng)單擊按鈕時,在txt3中顯示兩個整形數(shù)地最小公倍數(shù)地值。fromtkinterimport*defputing():n1=int(number1.get())n2=int(number2.get())ifn1<n2:n1,n2=n2,n1t=n1*n2temp=n1%n2whiletemp!=0:n1=n2n2=temptemp=n1%n2result="最小公倍數(shù)是:"+str(t/n2)label3.config(text=result)win=Tk()win.title("最小公倍數(shù)")win.geometry("300x350")label1=Label(win,text='請輸入數(shù)值1:')label1.config(width=16,height=3)label1.config(font=('宋體',12))label1.grid(row=0,column=0)number1=StringVar()txt1=Entry(win,textvariable=number1,width=16)txt1.grid(row=0,column=1)label0=Label(win,text='請輸入數(shù)值2:')label0.config(width=16,height=3)label0.config(font=('宋體',12))label0.grid(row=1,column=0)number2=StringVar()txt2=Entry(win,textvariable=number2,width=16)txt2.grid(row=1,column=1)label2=Label(win,text='請單擊確認:')label2.config(width=14,height=3)label2.config(font=('宋體',12))label2.grid(row=2,column=0)button1=Button(win,text="計算") button1.config(justify=CENTER) #設(shè)置按鈕文本居中button1.config(width=14,height=2) #設(shè)置按鈕地寬與高button1.config(bd=3,relief=RAISED) #設(shè)置邊框?qū)挾扰c樣式button1.config(anchor=CENTER) #設(shè)置內(nèi)容在按鈕內(nèi)部居中button1.config(font=('隸書',12)) button1.config(mand=puting)button1.grid(row=2,column=1)label3=Label(win,text='顯示結(jié)果')label3.config(width=22,height=3)label3.config(font=('宋體',12))label3.place(x=50,y=230)win.mainloop()(2)設(shè)計GUI界面,模擬QQ登錄界面,用戶輸入用戶名與密碼,如果正確提示登錄成功;否則提示登錄失敗。請參考例11-17完成。(3)例11-17使用Button組件地mand參數(shù)實現(xiàn)事件處理,將事件處理地方法使用bind()方法實現(xiàn)。importtkinterimporttkinter.messagebox#創(chuàng)建應(yīng)用程序窗口win=tkinter.Tk()varName=tkinter.StringVar()varName.set('')varPwd=tkinter.StringVar()varPwd.set('')#創(chuàng)建標(biāo)簽labelName=tkinter.Label(text='UserName:',justify=tkinter.RIGHT,width=80)labelName.place(x=10,y=5,width=80,height=20)#創(chuàng)建文本框,同時設(shè)置關(guān)聯(lián)地變量entryName=tkinter.Entry(win,width=80,textvariable=varName)entryName.place(x=100,y=5,width=80,height=20)labelPwd=tkinter.Label(win,text='UserPwd:',justify=tkinter.RIGHT,width=80)labelPwd.place(x=10,y=30,width=80,height=20)#創(chuàng)建密碼文本框entryPwd=tkinter.Entry(win,show='*',width=80,textvariable=varPwd)entryPwd.place(x=100,y=30,width=80,height=20)users={"zhang3":"a12","admin":"123456","li4":"abc"}deflogin(event):#登錄按鈕事件處理函數(shù)#獲取用戶名與密碼name=entryName.get()pwd=entryPwd.get()flag=Falseforiteminusers:ifitem==nameandusers[item]==pwd:flag=Trueifflag==True:tkinter.messagebox.showinfo(title='Pythontkinter',message='OK')else:tkinter.messagebox.showerror('Pythontkinter',message='Error')defcancel(event):#取消按鈕地事件處理函數(shù)varName.set('')varPwd.set('')#創(chuàng)建按鈕組件,同時設(shè)置按鈕事件處理函數(shù)buttonOk=tkinter.Button(win,text='Login')buttonOk.bind("<Button-1>",login)buttonOk.place(x=30,y=70,width=50,height=20)buttonCancel=tkinter.Button(win,text='Reset')buttonCancel.bind("<Button-1>",cancel)buttonCancel.place(x=90,y=70,width=50,height=20)win.mainloop()#啟動消息循環(huán)習(xí)題12答案1.選擇題B C A B B B B D2.簡答題(1)數(shù)據(jù)庫可以分為關(guān)系型數(shù)據(jù)庫與非關(guān)系型數(shù)據(jù)庫,什么是關(guān)系?關(guān)系型數(shù)據(jù)庫中地一個關(guān)系就是一張二維表。通常將一個沒有重復(fù)行,重復(fù)列地二維表看成一個關(guān)系,每個關(guān)系都有一個關(guān)系名,也就是表名。(2)在Python中,在不安裝SQLite數(shù)據(jù)庫地情況下,可以直接訪問SQLite數(shù)據(jù)庫嗎?可以(3)在SQLite3地命令窗口中,常用地操作SQLite數(shù)據(jù)庫地命令有哪些?應(yīng)用在SQLite3地命令窗口中,操作SQLite數(shù)據(jù)庫地命令如下。.opendbname,若數(shù)據(jù)庫不存在,就創(chuàng)建數(shù)據(jù)庫;若數(shù)據(jù)庫存在,則打開數(shù)據(jù)庫.databases, 顯示當(dāng)前打開地數(shù)據(jù)庫文件.tables,查看當(dāng)前數(shù)據(jù)庫下地所有表.schema[tbname],查看表結(jié)構(gòu)信息(4)Python中訪問SQLite數(shù)據(jù)庫主要使用哪些對象,功能是什么?sqlite3.version:常量,返回sqlite3模塊地版本號。sqlite3.sqlite_version:常量,返回sqlite數(shù)據(jù)庫地版本號。sqlite3.Connection:數(shù)據(jù)庫連接對象。sqlite3.Cursor:游標(biāo)對象。sqlite3.Row:行對象。sqlite3.connect(dbname):函數(shù),鏈接到數(shù)據(jù)庫,返回Connection對象。(5)列舉出SQLite數(shù)據(jù)庫支持地5種數(shù)據(jù)類型?SQLite數(shù)據(jù)庫地動態(tài)數(shù)據(jù)類型有什么特點?類型說明smallint16位整數(shù)integer32位整數(shù)decimal(p,s)小數(shù)。p是數(shù)字地位數(shù),s是小數(shù)位數(shù)float32位浮點數(shù)double64位浮點數(shù)char(n)固定長度字符串,n不能大于254varchar(n)不固定長度字符串,n不能大于4000graphic(n)與char(n)一樣,單位是兩個字節(jié)。n不能大于127vargraphic(n)長度可變且最大長度不能大于4000地雙字節(jié)字符串date日期,包含年,月,日time時間,包含時,分,秒datetime日期與時間SQLite3使用動態(tài)地數(shù)據(jù)類型,數(shù)據(jù)庫管理系統(tǒng)會根據(jù)列值自動判斷列地數(shù)據(jù)類型。這與多數(shù)SQL數(shù)據(jù)庫管理系統(tǒng)使用靜態(tài)數(shù)據(jù)類型是不同地。SQLite3地動態(tài)數(shù)據(jù)類型能夠向后兼容其它數(shù)據(jù)庫普遍使用地靜態(tài)類型。(6)游標(biāo)對象地fetchone(),fetchall(),fetchmang()系列方法有什么區(qū)別?fetch系列方法用于獲取游標(biāo)地查詢結(jié)果集。具體如下?!馽ur.fetchone():返回結(jié)果集地下一行(Row對象),無數(shù)據(jù)時,返回None。●cur.fetchall():返回結(jié)果集地剩余行(Row對象列表),無數(shù)據(jù)時,返回空List?!馽ur.fetchmany():返回結(jié)果集地多行(Row對象列表),無數(shù)據(jù)時,返回空List。3.閱讀程序代碼1:sqlite3.connect(dbstr)代碼2:conn.execute(sqlstr)4.編程題(1)基于書中創(chuàng)建地test.db數(shù)據(jù)庫與employee表,完成下列SQL命令,表中初始數(shù)據(jù)如下。[1132,李四,男,部門經(jīng)理,7548.6,11;1443,王五,男,職員,6656,14;1036,高七,女,經(jīng)理,7600,10]①inserinto命令向表中任意插入2條記錄。insertintoemployee(emp_id,emp_name,sex,title,wage,dep_id)values(101,'John','男','經(jīng)理',7000,11)②用deletefrom命令刪除emp_id為1443地雇員記錄。deletefromemployeewhereemp_id=1443③用update命令為職稱為部門經(jīng)理地雇員工資增加10%。updateemployeesetwage=wage*1.1wheretitle="部門經(jīng)理"④查詢工資大于7000地部門經(jīng)理信息。select*fromemployeewherewage>7000andtitle="部門經(jīng)理"⑤查詢不同性別地雇員人數(shù)。selectsex,count(*)as雇員人數(shù)fromemployeegroupbysex⑥查詢employee表中工資在7000元以上地雇員信息,并將查詢地結(jié)果按工資降序排序。select*fromemployeewherewage>7000orderbywage⑦查詢employee表中男女雇員人數(shù),平均工資(顯示:性別,人數(shù),平均工資)。selectsexas性別,count(*)as人數(shù),average(*)as平均工資fromemployeegroupbysex(2)設(shè)計GUI界面,模擬用戶登錄功能,用戶輸入用戶名與密碼,如果正確提示登錄成功;否則提示登錄失敗,用戶地密碼信息保存在SQLite數(shù)據(jù)庫中。注意:有sqlite數(shù)據(jù)庫d:/sqlite/test.db,其中有表users,其結(jié)構(gòu)為(username,pwd),并在該表中保存了用戶登錄信息。importtkinterimporttkinter.messageboximportsqlite3#創(chuàng)建應(yīng)用程序窗口win=tkinter.Tk()varName=tkinter.StringVar()varName.set('')varPwd=tkinter.StringVar()varPwd.set('')#創(chuàng)建標(biāo)簽labelName=tkinter.Label(text='UserName:',justify=tkinter.RIGHT,width=80)labelName.place(x=10,y=5,width=80,height=20)#創(chuàng)建文本框,同時設(shè)置關(guān)聯(lián)地變量entryName=tkinter.Entry(win,width=80,textvariable=varName)entryName.place(x=100,y=5,width=80,height=20)labelPwd=tkinter.Label(win,text='UserPwd:',justify=tkinter.RIGHT,width=80)labelPwd.place(x=10,y=30,width=80,height=20)#創(chuàng)建密碼文本框entryPwd=tkinter.Entry(win,show='*',width=80,textvariable=varPwd)entryPwd.place(x=100,y=30,width=80,
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 脫靴器市場分析及投資價值研究報告
- 廢物的運輸和貯藏行業(yè)相關(guān)項目經(jīng)營管理報告
- 農(nóng)業(yè)作物蟲害生物防治行業(yè)市場調(diào)研分析報告
- 不銹鋼冰塊產(chǎn)業(yè)鏈招商引資的調(diào)研報告
- 手動磨利器具產(chǎn)品供應(yīng)鏈分析
- 醫(yī)療器械物流行業(yè)營銷策略方案
- 電子蜂鳴器市場分析及投資價值研究報告
- 竹簾市場發(fā)展前景分析及供需格局研究預(yù)測報告
- 底褲服裝產(chǎn)業(yè)鏈招商引資的調(diào)研報告
- 老繭銼刀市場發(fā)展前景分析及供需格局研究預(yù)測報告
- 現(xiàn)代簡約風(fēng)格發(fā)展趨勢
- 路緣石滑模施工工法
- 設(shè)備稼動率如何計算
- jtestF級詞匯
- 強直性脊柱炎的護理PPT
- 濕、熱敷法操作規(guī)程及評分標(biāo)準(zhǔn)
- 正片大片-新片速遞
- GB_T 4857.23-2021 包裝 運輸包裝件基本試驗 第23部分:垂直隨機振動試驗方法(高清-現(xiàn)行)
- 雪鐵龍世嘉用戶使用手冊
- 學(xué)生操行扣分記錄統(tǒng)計表
- 服裝專業(yè)英語綜合詞匯
評論
0/150
提交評論