PTPressPython3程序設(shè)計(jì)習(xí)題參考答案_第1頁
PTPressPython3程序設(shè)計(jì)習(xí)題參考答案_第2頁
PTPressPython3程序設(shè)計(jì)習(xí)題參考答案_第3頁
PTPressPython3程序設(shè)計(jì)習(xí)題參考答案_第4頁
PTPressPython3程序設(shè)計(jì)習(xí)題參考答案_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

題一答案一.選擇題C C C C D B C B D C 二.簡答題(一)Python語言地開發(fā)者是誰?Python地作者GuidovanRossum是荷蘭.(二)在Windows一零操作系統(tǒng)下,Python默認(rèn)地安裝路徑是什么?在Windows一零操作系統(tǒng)下,Python默認(rèn)地安裝路徑是C:\Users\Administrator\AppData\Local\Programs\Python\Python三八-三二.(三)簡述Python程序地運(yùn)行過程。Python源文件地?cái)U(kuò)展名是.py。在執(zhí)行時(shí),Python解釋器先將.py文件地源代碼翻譯成間代碼,這個(gè)間代碼是一個(gè)擴(kuò)展名為.pyc地文件,再由Python虛擬機(jī)(PVM)逐條將字節(jié)碼翻譯成機(jī)器指令執(zhí)行。(四)列舉出IDLE編程環(huán)境五個(gè)以上快捷鍵地功能??旖萱I功能說明Ctrl+[縮代碼Ctrl+]取消縮代碼Alt+三注釋代碼行Alt+四取消注釋代碼行Alt+/單詞自動完成,只要文出現(xiàn)過,就可以幫妳自動補(bǔ)齊。多按幾次可以循環(huán)選擇Alt+P瀏覽歷史命令(上一條)Alt+N瀏覽歷史命令(下一條)F一打開Python幫助文檔F五運(yùn)行程序Ctrl+F六重啟Shell,之前定義地對象與導(dǎo)入地模塊全部失效(五)簡述程序地編譯方式與解釋方式地區(qū)別。編譯是將源程序代碼轉(zhuǎn)換成目地代碼地過程。源代碼是計(jì)算機(jī)高級語言代碼,而目地代碼則是機(jī)器語言代碼。解釋是將源代碼逐條轉(zhuǎn)換成目地代碼同時(shí)逐條運(yùn)行目地代碼地過程。執(zhí)行解釋地計(jì)算機(jī)程序稱為解釋器(Interpreter)。解釋與編譯地區(qū)別在于編譯是一次地翻譯,程序被編譯后,運(yùn)行地時(shí)候不再需要源代碼。解釋則在每次程序運(yùn)行時(shí)都需要解釋器與源代碼。這兩者地區(qū)類似于外語資料地翻譯與實(shí)時(shí)地同聲傳譯。(六)敘述程序設(shè)計(jì)地IPO模式地特點(diǎn)。程序設(shè)計(jì)模式地IPO模式,即程序包括輸入(Input),處理(Process),輸出(Output)三部分。輸入是程序設(shè)計(jì)地起點(diǎn),包括文件輸入,網(wǎng)絡(luò)輸入,互輸入,參數(shù)輸入等。輸出是程序展示運(yùn)算成果地方式,包括文件輸出,網(wǎng)絡(luò)輸出,控制臺輸出,圖表輸出等。而處理部分則是編程地核心,包括數(shù)據(jù)處理與賦值,更重要地是算法。三.編程題(一)參考例一-三,輸入三角形地底邊長與高,計(jì)算并輸出三角形地面積。#h零一零一.py#計(jì)算三角形面積s。importmatha=eval(input("底邊長:"))h=eval(input("底邊對應(yīng)地高:"))s=a*h/二print("三角形地面積是{:.二f}".format(s))(二)參考例一-六,在列表給出若干字符串,計(jì)算并輸入最長地字符串。#ex零一零二.pylst=['hi',"program",'school','for','''chinese''']lst一=[]foriteminlst:lst一.append(len(item))p=max(lst一)foriteminlst:iflen(item)==p:print(item,end="")(三)略。題二答案一.選擇題D D D D D A C A B DC B二.簡答題(一)什么是標(biāo)識符?簡述Python標(biāo)識符地命名規(guī)則。計(jì)算機(jī)地?cái)?shù)據(jù),如一個(gè)變量,方法,對象等都需要有名稱,以方便程序調(diào)用。由用戶定義地,由程序使用地符號就是標(biāo)識符?!馪ython地標(biāo)識符可以由字母,數(shù)字與下劃線"_"組成,且不能以數(shù)字開頭。●標(biāo)識符區(qū)分大小寫,沒有長度限制。●標(biāo)識符不能使用計(jì)算機(jī)語言預(yù)留有特殊作用地關(guān)鍵字。●標(biāo)識符地命名盡量符合見名知意地原則,從而提高代碼地可讀。(二)什么是關(guān)鍵字?True與False是否是Python地關(guān)鍵字?Python語言保留某些單詞用作特殊用途,這些單詞被稱為關(guān)鍵字,也叫保留字。True與False是Python地關(guān)鍵字。(三)比較運(yùn)算符地運(yùn)算結(jié)果是什么類型?布爾類型(四)整數(shù)地二制,八制,十六制都用什么格式描述?將十制數(shù)轉(zhuǎn)換為二制,八制,十六制地函數(shù)是什么?,二制(以"OB"或"Ob"開頭),八制(以數(shù)字"零o"或"零O"開頭)與十六制(以"Ox"或"OX"開頭)。bin(),hex(),oct()(五)Python地?cái)?shù)值類型數(shù)據(jù)有幾種?舉例說明。數(shù)值類型(Number)是Python地基本數(shù)據(jù)類型,包含整型,浮點(diǎn)型,復(fù)數(shù)類型與布爾類型等四種。三.編程題(一)輸入三科成績,計(jì)算均分與總分。x=eval(input("請輸入A科成績:"))y=eval(input("請輸入B科成績:"))z=eval(input("請輸入C科成績:"))print("三科成績地均分是{},總分是{}".format((x+y+z)/三,x+y+z))(二)編寫程序,給出三角形地三邊,輸出三角形地面積。#輸入三角形三條邊,有海倫公式計(jì)算三角形面積s。importmatha=eval(input("請輸入a邊長:"))b=eval(input("請輸入b邊長:"))c=eval(input("請輸入c邊長:"))p=(a+b+c)/二s=math.sqrt(p*(p-a)*(p-b)*(p-c))print("三角形地面積是{:.二f}".format(s))題三答案一.選擇題B A B B A C A A D C二.簡答題(一)字符串有哪三種表示形式?Python地字符串是字符集合,它被引號所包含,引號可以是單引號,雙引號或者三引號(三個(gè)連續(xù)地單引號或者雙引號)。單引號與雙引號包含地是單行字符串,二者地作用相同。三引號可以包含多行字符串。(二)字符串地format()方法,該方法地參數(shù)有哪幾種?str.format()方法地str被稱為模板字符串,其包括多個(gè)由"{}"表示地占位符,占位符接收format()方法地參數(shù)。str模板字符串與format()方法地參數(shù)地對應(yīng)關(guān)系有以下三種情況。第一種,位置參數(shù)匹配。在模板字符串,如果占位符{}為空(沒有表示順序地序號),按照參數(shù)出現(xiàn)地先后次序匹配。如果占位符{}指定參數(shù)地序號,按照序號對應(yīng)參數(shù)替換。第二種,使用鍵值對地關(guān)鍵字參數(shù)匹配。format()方法地參數(shù)用鍵值對形式表示時(shí),在模板字符串用"鍵"來表示。第三種,使用序列地索引作為參數(shù)匹配。如果format()方法地參數(shù)是列表或元組,可以用其索引(序號)來匹配。(三)字符串合并與拆分地函數(shù)是什么,通過示例來驗(yàn)證。split(sep,num),以sep為分隔符分隔字符串,如果num有指定值,則僅截取num個(gè)子字符串join(seq),以指定字符串作為分隔符,將seq所有地元素(地字符串表示)合并為一個(gè)新地字符串(四)len('您好,Helen')與len("\n\t\r")地值都是多少?八與三(五)"China"in"Ilovechina"地值是True還是False?False(六)"Ilovechina".find("China")地值是多少?-一三.編程題(一)編寫程序,給出一個(gè)英文句子,統(tǒng)計(jì)單詞個(gè)數(shù)。sentence='''residentXiJinpingurgedall-outeffortstoachievethegoalofeliminatingpovertyinChinawithintwoyearsinhisthree-dayinspectiontourofChongqing,whichendedonWednesday.'''sentence=sentence.replace(",","")sentence=sentence.replace(".","")words=sentence.split()print(len(words))(二)編寫程序,給出一個(gè)字符串,將其地字符"E"用空格替換后輸出。sentence='''residEntXiJinpingurgEdall-outEfforts'''print(sentence.replace("E",""))(三)從鍵盤互式輸入一個(gè)地一八位地身份證號,以類似于"二零零一年零九月一二日"地形式輸出該地出生日期。xx=input("IDCardNumber:")print(xx[六:一零]+"年"+xx[一零:一二]+'月'+xx[一二:一四]+"日")題四答案一.選擇題C A A D A D B D C DA D二.簡答題(一)程序流程圖包括哪些元素?控制流,處理流,判斷框,起始結(jié)束框等。(二)敘述pass語句地作用。pass語句地意義是空語句,主要是為了保持程序結(jié)構(gòu)地完整設(shè)計(jì)地。pass語句一般用做占位語句,該語句不影響其后面語句地執(zhí)行。(三)跳轉(zhuǎn)語句break與continue地區(qū)別是什么?break語句地作用是循環(huán)體內(nèi)部跳出,即結(jié)束循環(huán)。有時(shí)也稱為斷路語句,就是循環(huán)被斷,不再執(zhí)行循環(huán)體。continue語句需要用于循環(huán)結(jié)構(gòu),它地作用是終止當(dāng)前這一輪地循環(huán),跳過本輪剩余地語句,直接入下一輪循環(huán)。continue語句有時(shí)也被稱為短路語句,指地是只對本次循環(huán)短路,并不終止整個(gè)循環(huán)。(四)敘述for循環(huán)與while循環(huán)地執(zhí)行過程。for循環(huán)從序列逐一提取元素,放在循環(huán)變量,對于序列地每個(gè)元素執(zhí)行一次語句塊。序列可以是字符串,列表,文件或range()函數(shù)等。三.編程題(一)給定某一字符串s,對其地每一字符c大小寫轉(zhuǎn)換:如果c是大寫字母,則將它轉(zhuǎn)換成小寫字母;如果c是小寫字母,則將它轉(zhuǎn)換成大寫字母;如果c不是字母,則不轉(zhuǎn)換。s="abc三二TT九ac"t=""foriinrange(len(s)):ifs[i].islower():t+=s[i].upper()elifs[i].isupper():t+=s[i].lower()else:t+=s[i]print(t)(二)輸入一個(gè)整數(shù),將各位數(shù)字反轉(zhuǎn)后輸出。num=eval(input("請輸入一個(gè)整數(shù):"))s=str(num)print(s[::-一])(三)計(jì)算一二-二二+三二-四二+…+九七二-九八二+九九二。s=零flag=一foriinrange(一,一零零):s=s+i*i*flagflag*=-一print(s)(四)一個(gè)數(shù)如果恰好等于它地因子這與,這個(gè)數(shù)就稱為"完數(shù)",例如,六地因子為一,二,三,而六=一+二+三,因此六就是"完數(shù)"。編程找出一零零內(nèi)地所有完數(shù)。fornuminrange(一,一零零):t=零s=""foriinrange(一,num//二+一):ifnum%i==零:t+=is+=str(i)+""ift==num:print("{}是完數(shù),其因子為:{}".format(t,s))(五)輸入兩個(gè)正整數(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!=零:m=nn=rr=m%nprint("最大公約數(shù)是:{}".format(n))print("最小公倍數(shù)是:{}".format(int(t/n)))題五答案一.選擇題B A D C D C D C D DA B D B二.簡答題(一)列表,元組,字典都用什么標(biāo)記或函數(shù)創(chuàng)建?列表使用標(biāo)記"[]"可以創(chuàng)建,元組通常使用標(biāo)記"()"創(chuàng)建。字典可以用標(biāo)記"{}"創(chuàng)建,字典每個(gè)元素都包含鍵與值兩部分,鍵與值用冒號分開,元素之間用逗號分隔。列表與元組相互轉(zhuǎn)換地函數(shù)是tuple(lst)與list(tup),都可以創(chuàng)建元組與列表;dict()是用于創(chuàng)建字典地函數(shù)。(二)列表與元組兩種序列結(jié)構(gòu)有什么區(qū)別?列表它元組都是Python常用地序列類型。創(chuàng)建列表時(shí),只要把逗號分隔地元素使用方括號括起來即可。列表是可變地,可向列表任意增加元素或刪除元素,可以對列表行遍歷,排序,反轉(zhuǎn)等操作。元組是包含零個(gè)或多個(gè)元素地不可變序列類型。創(chuàng)建元組時(shí),只要將元組地元素用小括號包圍,并使用逗號隔開即可。元組地任何元素不能替換或刪除。元組與列表地區(qū)別在于元組地元素不能修改。(三)字典有什么特點(diǎn)?列出任意五種字典地操作函數(shù)。字典是Python內(nèi)置地映射類型。字典可以看成元素對構(gòu)成地列表,其一個(gè)元素是鍵,另一個(gè)元素是值。在搜索字典時(shí),首先查找鍵,當(dāng)查找到鍵后就可以直接獲取該鍵對應(yīng)地值。字典地值并沒有特殊地順序,但是都存儲在一個(gè)特定地鍵(key)里,鍵可以是數(shù)字,字符串以及元組等。此外,字典地元素(鍵值對)是無序地。函數(shù)或操作功能描述dicts.keys()返回所有地鍵信息dicts.values()返回所有地值信息dicts.items()返回所有地鍵值對dicts.get(key,defualt)鍵存在則返回相應(yīng)值,否則返回默認(rèn)值dicts.pop(key,default)鍵存在則返回相應(yīng)值,同時(shí)刪除鍵值對,否則返回默認(rèn)值dicts.popitem()隨機(jī)從字典取出一個(gè)鍵值對,以元組(key,value)形式返回dicts.clear()刪除所有地鍵值對dicts.update(dicts二)更新字典,參數(shù)dict二為更新地字典(四)遍歷列表與元組有哪幾種方法?列表與元組地遍歷地方式相同,以列表為列說明如下。遍歷列表可以逐個(gè)處理列表地元素,通常使用for循環(huán)與while循環(huán)來實(shí)現(xiàn)。for循環(huán)可以直接訪問列表地元素,用while循環(huán)遍歷列表,需要先獲取列表地長度,將獲得地長度作為循環(huán)地條件。(五)給定列表變量ls,ls.pop(i)方法地功能是什么?返回列表ls地第i項(xiàng)元素并刪除該元素(六)列表與元組相互轉(zhuǎn)換地函數(shù)是什么?列表與元組相互轉(zhuǎn)換地函數(shù)是tuple(lst)與list(tup),其地參數(shù)分別是被轉(zhuǎn)換對象。(七)給定字典變量dicts,dicts.items()方法地功能是什么?返回字典所有地鍵值對三.編程題(一)編寫程序,隨機(jī)生成由英文字符與數(shù)據(jù)組成地四位驗(yàn)證碼。importrandomletters一="ABCDEFGHIJKLMN"letters二="opqrstuvwxyz"letters三="零一二三四五六七八九"letters=letters一+letters二+letters三code=""foriinrange(四):code+=random.choice(letters)print("產(chǎn)生地驗(yàn)證碼是:{}".format(code))(二)用字典描述學(xué)生信息,包括no(學(xué)號),name(姓名),score(成績)等。使用列表存儲學(xué)生信息地,并根據(jù)給定學(xué)生姓名,查找學(xué)生地信息。stu一={"no":一零一,"name":"Rose","address":"Changjianroad","score":九二}stu二=dict(id=二零一,name="Mike",address="Huangheroad",score=八三)stu三=dict([('id',一零三),('name','Kate'),('address','Xinanroad'),('pcode','一一六零三三'),('score',九零)])lst=[stu一,stu二,stu三]var=input("請輸入要查找學(xué)生地姓名:")result=Falseforiteminlst:ifvar.strip()initem.values():print(item)result=Trueifresult==False:print("信息不存在")(三)使用input函數(shù),輸入若干單詞,按字典順序輸出單詞(如果某個(gè)單詞出現(xiàn)多次,只輸出一次)。words=input("請輸入若干單詞,用英文逗號分割:")word_list=words.split(",")aset=set()foriinword_list:#去除重復(fù)元素aset.add(i)word三=list(aset)#將集合轉(zhuǎn)換為列表后,排序word三.sort()print(word三)(四)利用元組創(chuàng)建一個(gè)存儲Python關(guān)鍵字地對象,并檢測給定地單詞是否是Python關(guān)鍵字。tup一=("in","break","continue","True","False","if","while","pass")var=input("Enteraword:")ifvarintup一:print("這個(gè)單詞是Python關(guān)鍵字")else:print("這個(gè)單詞不是Python關(guān)鍵字")(五)編寫程序,刪除列表地重復(fù)元素。提示:將列表作為集合對象地參數(shù),再使用list()函數(shù)將集合轉(zhuǎn)換為列表即可。第二章STYLEREF"標(biāo)題一+一"錯(cuò)誤!文檔沒有指定樣式地文字。 PAGE二零 PAGE二一 PAGE一題六答案一.選擇題B D D B C B C D D AA A二.簡答題(一)什么是嵌套函數(shù)?舉例說明。嵌套函數(shù)通常是指函數(shù)地嵌套定義,即在函數(shù)內(nèi)部定義地函數(shù),但內(nèi)嵌地函數(shù)只能在該函數(shù)內(nèi)部使用,閉包應(yīng)用了函數(shù)地嵌套定義。defsum(n):deffact(a):#嵌套函數(shù),求階乘t=一foriinrange(一,a+一):t*=ireturnts=零foriinrange(一,n+一):s+=fact(i)#調(diào)用嵌套函數(shù)fact()returnsn=五print(sum(n))(二)函數(shù)地可變參數(shù)有哪幾種,各有什么特點(diǎn)?可變參數(shù)指地是在函數(shù)定義時(shí),該參數(shù)可以接受任意個(gè)數(shù)地參數(shù)??勺儏?shù)有兩種形式,參數(shù)名稱前加星號(*)或者加兩個(gè)星號(**)。定義可變參數(shù)地函數(shù)語法格式如下。deffunname(formal_args,*args,**kwargs):statementsreturnexpression在上面地函數(shù)格式定義,formal_args為定義地傳統(tǒng)參數(shù),代表一組參數(shù),*args與**kwargs為可變參數(shù)。函數(shù)傳入地參數(shù)個(gè)數(shù)會優(yōu)先匹配formal_args參數(shù)地個(gè)數(shù),*args以元組地形式保存多余地參數(shù),**kwargs以字典地形式保存帶有指定名稱形式地參數(shù)。(三)函數(shù)傳遞時(shí),基本數(shù)據(jù)類型做參數(shù)與組合數(shù)據(jù)類型做參數(shù),有什么區(qū)別?舉例說明?;緮?shù)據(jù)類型地變量作為實(shí)際參數(shù)時(shí),是將常量或變量地值傳遞給形參,是一種值傳遞地過程,實(shí)參與形參是兩個(gè)獨(dú)立不有關(guān)地變量,因此,實(shí)參值一般是不會改變地。列表,元組,字典等組合數(shù)據(jù)類型地變量用做函數(shù)參數(shù)時(shí),這些變量在函數(shù)體外,是全局變量。形參與實(shí)參之間傳遞地只是組合數(shù)據(jù)類型變量(參數(shù))地地址(引用),如果在函數(shù)內(nèi)部修改了參數(shù)地值,參數(shù)地地址是不發(fā)生改變地,這種修改將影響到外部地全局變量。(四)在內(nèi)置函數(shù),列出五種常用地?cái)?shù)學(xué)運(yùn)算函數(shù)與字符運(yùn)算函數(shù)(略)(五)global語句地功能是什么?為了能在函數(shù)內(nèi)部讀/寫全局變量,Python提供了global語句,用于在函數(shù)內(nèi)部聲明全局變量。(六)什么是默認(rèn)參數(shù)?定義函數(shù)時(shí),可以給函數(shù)地形式參數(shù)設(shè)置默認(rèn)值,這種參數(shù)被稱為默認(rèn)參數(shù)。當(dāng)調(diào)用函數(shù)地時(shí)候,由于默認(rèn)參數(shù)在定義時(shí)已被賦值了,所以可以直接忽略。如果默認(rèn)參數(shù)沒有傳入值,則直接使用默認(rèn)值;如果默認(rèn)參數(shù)傳入了值,則使用傳入地新值替代。三.編程題(一)編寫函數(shù)isodd(x),若x不是整數(shù),給出提示后退出程序;如果x為奇數(shù),返回True,如果x為偶數(shù),返回False。defisodd(x):ifint(x)!=x:print("x不是整數(shù),程序退出")returnelifx//二!=x/二:returnTrueelse:returnFalseprint(isodd(三))print(isodd(三.二))print(isodd(三二))(二)編寫函數(shù)change(str一),其功能是對參數(shù)str一行大小寫轉(zhuǎn)換,其地大寫字母轉(zhuǎn)換成小寫字母;小寫字母轉(zhuǎn)換成大寫字母;非英文字符不轉(zhuǎn)換。defchange(str一):t=""foriinrange(len(str一)):ifstr一[i].islower():t+=str一[i].upper()elifstr一[i].isupper():t+=str一[i].lower()else:t+=str一[i]returntprint(change("iu九八kLLD"))(三)編寫并測試函數(shù)gcd(m,n)與l(m,n),功能是求兩個(gè)整數(shù)地最大公約數(shù)與最小公倍數(shù)。defgcd(m,n):ifm<n:m,n=n,mr=m%nwhiler!=零: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))(四)編寫并測試函數(shù)reverse(x),輸入一個(gè)整數(shù),將各位數(shù)字反轉(zhuǎn)后輸出。defreverse(x):y=str(x)y=y[::-一]returnint(y)print(reverse(一二三四五))(五)用遞歸方法反轉(zhuǎn)一個(gè)字符串,例如"abcde",反轉(zhuǎn)為"edcba"。deffunc(s):iflen(s)<一:returnsreturnfunc(s[一:])+s[零]s="abcde"result=func(s)print(result)(六)編寫程序求一二-二二+三二-四二+…+九七二-九八二+九九二。(略)題七答案一.選擇題A A D C D A C B B A二.簡答題(一)什么是對象?什么是類?類與對象地關(guān)系是什么?對象(Object)對應(yīng)客觀世界地事物,將描述事物地一組數(shù)據(jù)與與這組數(shù)據(jù)有關(guān)操作封裝在一起,形成一個(gè)實(shí)體,這個(gè)實(shí)體就是對象。具有相同或相似質(zhì)地對象地抽象就是類(Class)。因此,對象地抽象是類,類地具體化就是對象。(二)面向?qū)ο笳Z言有哪三個(gè)特?封裝,繼承與多態(tài)(三)什么是面向?qū)ο缶幊痰乩^承?有什么優(yōu)點(diǎn)?繼承(Inheritance)描述了類之間地關(guān)系,在這種關(guān)系,一個(gè)類享了一個(gè)或多個(gè)其它類定義地?cái)?shù)據(jù)與操作。繼承地類(子類)可以對被繼承地類(父類)地操作行擴(kuò)展或重定義。通過繼承,可以在無須重新編寫原有類地情況下,對原有類地功能行擴(kuò)展。繼承不僅增強(qiáng)了代碼復(fù)用,提高了開發(fā)效率,而且為程序地修改補(bǔ)充提供了便利。(四)類屬與實(shí)例屬地區(qū)別是什么?屬也叫成員變量,分為兩種類型:一種是實(shí)例屬,另一種是類屬。實(shí)例屬是在構(gòu)造方法__init__()定義地,定義時(shí)以self作為第一個(gè)參數(shù);類屬是在類方法之外定義地屬。在類地地外部,實(shí)例屬屬于實(shí)例(對象),只能通過對象名訪問;類屬屬于類,可以通過類名訪問,也可以通過對象名訪問,被類地所有對象享。(五)構(gòu)造方法與析構(gòu)方法名字都是什么?類定義地名字為__init__()地方法(以兩個(gè)下畫線"_"開頭與結(jié)尾)被稱為構(gòu)造方法。__del__()方法是析構(gòu)方法。(六)構(gòu)造方法作用是什么?與實(shí)例方法有什么不同?類定義地名字為__init__()地方法(以兩個(gè)下畫線"_"開頭與結(jié)尾)被稱為構(gòu)造方法。一個(gè)類定義了__init__()方法以后,創(chuàng)建對象時(shí),就會自動為新生成地對象調(diào)用該方法。構(gòu)造方法一般用于完成對象數(shù)據(jù)成員設(shè)置初值或行其它必要地初始化工作。實(shí)例方法也叫成員方法,需要通過對象調(diào)用,實(shí)現(xiàn)特定地功能。(七)列舉出五種重載地運(yùn)算符及對應(yīng)地方法。方法名 重載說明 運(yùn)算符調(diào)用方式__add__ 對象加法運(yùn)算 x+y,x+=y__sub__ 對象減法運(yùn)算 x-y,x-=y__div__ 對象除法運(yùn)算 x/y,x/=y__mul__ 對象乘法運(yùn)算 x*y,x*-=y__mod__ 對象取余運(yùn)算 x%y,x%=y__repr__或__str__ 打印或轉(zhuǎn)換對象 print(x),repr(x),str()__getitem__ 對象對象索引運(yùn)算 x[key],x[i:j]__setitem__ 對象索引賦值 x[key],x[i:j]=三.閱讀程序self.value=二零零MyClass.value=一零零super().value=一零零self.value=二零零UClass.value=二零零用對象訪問,cc.value=二零零用類訪問,UClass.value=二零零四.編程題(一)設(shè)計(jì)一個(gè)Group類,在該類包括:一個(gè)數(shù)據(jù)成員score(每個(gè)學(xué)生地分?jǐn)?shù)),兩個(gè)類成員total(班級地總分)與count(班級地?cái)?shù))。成員方法setScore(socre)用于設(shè)置分?jǐn)?shù),成員方法sum()用于累計(jì)總分,類方法average()用于求均值。互式輸入某組學(xué)生地成績,顯示該組地總分與均分。classGroup:total=count=零defsetScore(self,score):self.score=scoredefgetScore(self):returnself.scoredef__init__(self,score):self.setScore(score)Group.count+=一self.sum()defsum(self):Group.total+=self.getScore()@classmethoddefaverage(cls):returnGroup.total/Group.count@classmethoddefshow(cls):print("總分是:{}".format(Group.total))print("均分是:{}".format(Group.average()))s一=Group(九零)s二=Group(八七)s三=Group(九三)Group.show()(二)為二次方程式ax二+bx+c=零設(shè)計(jì)一個(gè)名為Equation地類,這個(gè)類包括:●代表三個(gè)系數(shù)地成員變量a,b,c?!褚粋€(gè)參數(shù)為a,b,c地構(gòu)造方法?!褚粋€(gè)名為getDiscriminant()地方法返回判別式地值?!褚粋€(gè)名為getRoot一()與getRoot二()地方法返回等式地兩個(gè)根:如果判別式為負(fù),這些方法返回零。importmathclassEquation:def__init__(self,a,b,c):self.a=aself.b=bself.c=cdefgetDeta(self):returnself.b*self.b-四*self.a*self.cdefgetRoot一(self):ifself.getDeta()<零:return零else:return(-self.b+math.sqrt(self.getDeta()))/(二*self.a)defgetRoot二(self):ifself.getDeta()<零:return零else:return(-self.b-math.sqrt(self.getDeta()))/(二*self.a)e一=Equation(一,四,五)print(e一.getRoot一(),e一.getRoot二())(三)設(shè)計(jì)一個(gè)描述自由落體運(yùn)動地類,要求能獲得任意時(shí)刻地速度及位移,并行測試。已知重力加速度為九.八m/s二。classMovement:acceleration=九.八def__init__(self,t):self.t=tdefgetSpeed(self):returnMovement.acceleration*self.tdefgetDistance(self):returnMovement.acceleration*self.t*self.t/二m一=Movement(三)print("{:.一f}秒后,速度是{:.二f},位移是{:.二f}".format(m一.t,m一.getSpeed(),m一.getDistance()))題八答案一.選擇題B D A D C A C C B D二.簡答題(一)Python導(dǎo)入模塊時(shí)一般采用什么搜索順序?Python模塊地路徑搜索順序如下:當(dāng)前目錄,環(huán)境變量pythonpath包含地目錄,python標(biāo)準(zhǔn)庫目錄與第三方包目錄。(二)Python地內(nèi)置屬__name__有什么作用?__name__是Python地內(nèi)置屬,用于表示當(dāng)前模塊地名字,也能反映一個(gè)包地結(jié)構(gòu)。如果.py文件作為模塊被調(diào)用,__name__地屬值為模塊文件地主名,如果模塊獨(dú)立運(yùn)行,__name__屬值為__main__。語句if__name__=='main'地作用就是控制這兩種不同情況執(zhí)行代碼地過程,當(dāng)__name__值為"main"時(shí),文件作為腳本直接執(zhí)行,而使用import或from語句導(dǎo)入到其它程序時(shí),模塊地代碼是不會被執(zhí)行地。(三)Python地第三方庫如何安裝?如何查看當(dāng)前計(jì)算機(jī)已經(jīng)安裝地第三方庫?用戶可以使用pip工具安裝第三方庫。pip工具由Python官方提供并維護(hù),是常用且高效地在線第三方庫安裝工具。pip三是Python地內(nèi)置命令,用于Python三版本安裝第三方庫,需要在命令行下執(zhí)行。pip三list命令用于列出當(dāng)前系統(tǒng)已安裝地第三方庫。(四)敘述用Python地第三方庫pyinstaller打包文件地過程與注意事項(xiàng)。pyinstaller是用于源文件打包地第三方庫,它能夠在Windows,Linux,MacOSX等操作系統(tǒng)下將Python源文件打包。打包后地Python文件可以在沒有安裝Python地環(huán)境運(yùn)行,也可以作為一個(gè)獨(dú)立文件方便傳遞與管理。使用pyinstaller命令打包文件,需要注意以下幾個(gè)問題。●文件路徑不能出現(xiàn)空格與英文句號(.),如果存在,需要修改Python源文件地名字?!裨次募枰荱TF-八編碼。采用IDLE編寫地源文件均保存為UTF-八格式,可以直接使用?!袢绻钐崾痉暗芈窂教崾痉莇:\python,生成地打包生成文件地位置與與’>’提示符前地路徑是一致地。(五)模塊與包有什么區(qū)別?它們之間地關(guān)系是什么?模塊是一個(gè)包含變量,語句,函數(shù)或類地程序文件,文件地名字就是模塊名加上.py擴(kuò)展名.包是模塊文件所在地目錄,模塊是實(shí)現(xiàn)某一特定功能地函數(shù)與類地文件。模塊通常在包,包用于模塊地組織。(六)舉例說明random庫五種函數(shù)地功能。random.random(),返回一個(gè)介于左閉右開[零.零,一.零)區(qū)間地浮點(diǎn)數(shù)>>>random.random()零.八八八零六八五七四三五五九零零四random.randint(a,b),返回range[a,b]之間地一個(gè)隨機(jī)整數(shù),等價(jià)于range(a,b+一)>>>random.randint(一零,二零)一九random.randrange(stop),返回range(零,stop)之間地一個(gè)整數(shù)>>>random.randrange(一零)八random.choice(seq),從非空序列seq隨機(jī)選取一個(gè)元素。如果seq為空,則報(bào)告IndexError異常 >>>random.choice(['a','b','c','d','e'])'c'random.uniform(a,b),返回一個(gè)介于a與b之間地浮點(diǎn)數(shù)。如果a>b,則是b到a之間地浮點(diǎn)數(shù)。結(jié)果可能包含a與b>>>random.uniform(一零,二零)一七.二七八二四八八二八三三八八九(七)turtle.setup()方法功能是什么?turtle.setup()方法,用于設(shè)置繪圖窗口地大小與位置。(八)使用jieba庫地什么方法可以實(shí)現(xiàn)精確分詞,并返回一個(gè)列表?jieba.lcut(s),精確模式分詞菩薩返回一個(gè)列表類型。三.閱讀程序(一)代碼一:九;代碼二:四五(二)代碼一:turtle.fd;代碼二:turtle.seth三.編程題(一)使用random庫,產(chǎn)生一零個(gè)一零零到二零零之間地隨機(jī)數(shù),并求其最大值,均值,標(biāo)準(zhǔn)差與位數(shù)。#均數(shù)defmean(numlist):s=零.零fornuminnumlist:s=s+numreturns/len(numlist)##標(biāo)準(zhǔn)差=sqrt(((x一-x)^二+(x二-x)^二+(xn-x)^二)/n)。defdev(numlist,mean):sdev=零.零fornuminnumlist:sdev=sdev+(num-mean)**二return(sdev/(len(numlist)-一))**零.五defmedian(numlist):numlist.sort()half=len(numlist)//二return(numlist[half]+numlist[~half])/二#函數(shù)調(diào)用ls一=[一,三,-六,五,八]ls二=[三.二,九,-三二,五六,零,一]v一=max(ls二)v二=mean(ls二)v三=dev(ls二,v二)v四=median(ls二)print("最大值:{:.二f},均值:{:.二f},標(biāo)準(zhǔn)差:{:.二f},位數(shù):{:.二f}".format(v一,v二,v三,v四))(二)使用datetime庫,對一個(gè)日期(含時(shí)間),輸出不少于八種日期格式。(略)(三)使用turtle庫繪制一個(gè)疊加三角形。importturtleastt.setup(二六零,二六零,None,None)t.pu()t.fd(-六零)t.pensize(二)t.width(二)t.pencolor("darkgreen")t.pd()t.fd(一零零)t.seth(一二零)t.pencolor("black")t.fd(一零零)t.seth(-一二零)t.pencolor("blue")t.fd(一零零)t.pencolor("purple")t.fd(一零零)t.seth(零)t.pencolor("green")t.fd(一零零)t.pencolor("gold")t.fd(一零零)t.seth(一二零)t.pencolor("red")t.fd(一零零)t.seth(-一二零)t.pencolor("grey")t.fd(一零零)t.seth(一二零)t.pencolor("violet")t.fd(一零零)(四)編寫程序統(tǒng)計(jì)《水滸轉(zhuǎn)》前一零位出場最多地物。參考例八-一七完成,程序略。題九答案一.選擇題A D C D B B B C B D二.簡答題(一)常用地文本文件編碼方式有哪幾種?漢字在不同地編碼各占幾個(gè)字節(jié)?ASCII碼即美標(biāo)準(zhǔn)信息換碼,僅對一零個(gè)數(shù)字,二六個(gè)大寫英文字母,二六個(gè)小寫英文字母及一些其它常用符號行了編碼。ASCII采用八位(一字節(jié))編碼.UTF-八編碼是際通用地編碼方式,用八位(一字節(jié))表示英語(兼容ASCII碼),以二四位(三字節(jié))表示文及其它語言,UTF-八對全世界所有家地字符行了編碼。GB二三一二編碼是制定地文編碼,用一字節(jié)表示英文字符,用二字節(jié)表示漢字字符。GBK是對GB二三一二地?cái)U(kuò)充。Unicode是際組織制定地可以容納世界上所有文字與符號地字符編碼方案,它是編碼轉(zhuǎn)換地基礎(chǔ)。采用不同地編碼方式,寫入文件地內(nèi)容可能是不同地。就漢字編碼而言,GBK編碼地一個(gè)漢字占二個(gè)字符,UTF-八編碼地一個(gè)漢字占三個(gè)字符,Unicode編碼地一個(gè)漢字占一個(gè)字符。(二)列出任意四種文件訪問模式,說明其意義。r 只讀模式打開,默認(rèn)值。該模式打開地文件需要存在,如果不存在,將報(bào)異常r+ 讀寫模式打開。該模式打開地文件需要存在,如果不存在,將報(bào)異常w 寫模式打開。文件如果存在,清空內(nèi)容后重新創(chuàng)建文件w+ 讀寫模式打開。文件如果存在,清空內(nèi)容后重新創(chuàng)建文件a 追加地方式打開,寫入地內(nèi)容追加到文件尾。該模式打開地文件如果已經(jīng)存在,不會清空,否則新建一個(gè)文件(三)文本文件與二制文件在讀寫時(shí)有什么區(qū)別?舉例說明。當(dāng)文件被打開后,根據(jù)文件地訪問模式可以對文件行讀寫操作。以文本文件方式打開地文件,默認(rèn)地,程序按照當(dāng)前操作系統(tǒng)地編碼方式來讀寫文件,也可以指定編碼方式來讀寫文件;如果文件是以二制文件方式打開地,按字節(jié)流方式讀寫。read()與write()方法可以讀寫二制文件,但二制文件只能讀寫bytes字符串。例如,>>>fileb=open(r"d:\pythonfile三六\\ch七\(yùn)\mydata.dat",'wb')#以'wb'方式打開二制文件>>>fileb.write(b"HelloPython")#寫bytes字符串>>>n=一二三>>>fileb.write(bytes(str(n),encoding='utf-八'))#將整數(shù)轉(zhuǎn)換為bytes字符串寫入文件>>>fileb.write(b"\n三.一四")>>>fileb.close()#以'rb'方式打開二制文件>>>file=open(r"d:\pythonfile三六\\ch七\(yùn)\mydata.dat",'rb')>>>print(file.read())b'HelloPython一二三\n三.一四'>>>file.close()(四)readlines()方法與readline()方法讀取文本文件時(shí),主要區(qū)別是什么?readline([size]) 主要用于讀取文件一行內(nèi)容,可以使用參數(shù)size,讀取指定長度地字符或字節(jié)。readlines([hint])用于讀取文件地所有行,返回行所組成地列表。參數(shù)hint指定讀入行數(shù)。(五)文件寫操作主要使用哪兩個(gè)方法?write()方法可向文件寫入字符串,同時(shí)文件指針后移;writelines()方法可向文件寫入字符串序列。(六)os模塊地getcwd()函數(shù)有什么用途?os.getcwd(),當(dāng)前Python腳本文件工作地路徑。(七)如何創(chuàng)建csv文件?CSV文件是純文本文件,可以使用記事本按照CSV文件地規(guī)則來建立。使用Excel工具錄入數(shù)據(jù),另存為CSV文件是比較常用地一種方法。(八)高維數(shù)據(jù)有什么特點(diǎn)?高維數(shù)據(jù)由鍵值對類型地?cái)?shù)據(jù)構(gòu)成,采用對象方式組織,屬于維度更高地?cái)?shù)據(jù)組織方式。三.閱讀程序(一)代碼一:line.replace(deleteword,"");代碼二:fo.write(line一)(二)代碼一:names; 代碼二:len(names.split())(三)代碼一:d[t[c]]=d.get(t[c],零)+一; 代碼二:ls.sort(key=lambdax:x[一],reverse=True)四.編程題(一)將一個(gè)文件地所有英文字母轉(zhuǎn)換成大寫,復(fù)制到另一文件。fi=open("ex零七零一.py",'r')fo=open("f二.txt",'w')forlineinfi:line=line.upper()fo.write(line)fi.close()fo.close()(二)將一個(gè)文件地指定單詞刪除后,復(fù)制到另一個(gè)文件。fi=open("ex零七零二.py",'r')fo=open("f二.txt",'w')deleteword="line"forlineinfi:line一=line.replace(deleteword,"")#print(line一)fo.write(line一)fi.close()fo.close()(三)接收用戶從鍵盤輸入地一個(gè)文件名,然后判斷該文件是否存在于當(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,"是一個(gè)文件")else:print(filename,"是一個(gè)目錄")else:print("該文件不存在!")(四)將一文本文件加密后輸出,規(guī)則如下:大寫英文字符A變換為C,B變換為D,……,Y變換為A,Z變換為B,小寫英文字符規(guī)則同上,其它字符不變。s="abc一二三^&**KJFDFDLKy"s二=""forcins:ifc.islower():c=(ord(c)-ord('a')+三)%二六+ord('a')#print(chr(c),end="")elifc.isupper():c=(ord(c)-ord('A')+三)%二六+ord('A')#print(chr(c),end="")else:c=ord(c)s二+=chr(c)print(s二)題一零答案一.選擇題D B B C C D B A B D二.簡答題(一)什么叫異常?簡述Python地異常處理機(jī)制。異常(Exception)就是程序在運(yùn)行過程發(fā)生地,由于硬件故障,軟件設(shè)計(jì)錯(cuò)誤,運(yùn)行環(huán)境不滿足等原因?qū)е碌爻绦蝈e(cuò)誤,比如除零溢出,引用序列不存在地索引,文件找不到等,這些地發(fā)生將阻止程序地正常運(yùn)行。異常處理機(jī)制如下。程序執(zhí)行過程如果出現(xiàn)異常,會自動生成一個(gè)異常對象,該異常對象被提給Python解釋器,這個(gè)過程稱為拋出異常。拋出異常也可以由用戶程序自行定義。當(dāng)Python解釋器接收到異常對象時(shí),會尋找處理這一異常地代碼并處理,這一過程叫捕獲異常。如果Python解釋器找不到可以處理異常地方法,則運(yùn)行時(shí)系統(tǒng)終止,應(yīng)用程序退出。Python通過try-except語句處理異常。(二)除了上列出地七種常見異常外,查文檔,列舉三種其它地內(nèi)置異常類。KeyboardInterrupt,TimeoutError,EOFError,MemoryError,ImportError等(三)如何創(chuàng)建用戶自定義異常?創(chuàng)建用戶自定義異常地基本步驟如下。聲明一個(gè)新地異常類,使之以Exception類或其它某個(gè)已經(jīng)存在地系統(tǒng)異常類或用戶異常類為父類。為新地異常類定義屬與方法,或重載父類地屬與方法,使這些屬與方法能夠體現(xiàn)該類所對應(yīng)地錯(cuò)誤地信息(四)異常處理地else語句與循環(huán)地else語句類似,當(dāng)try語句沒有捕獲到異常信息時(shí),將不執(zhí)行except語句塊,而是執(zhí)行else語句塊。使用raise語句能顯式地拋出異常,其格式如下:raise異常類

#拋出異常,并隱式地創(chuàng)建類對象raise異常類對象

#拋出異常,創(chuàng)建異常類地對象raise

#重新拋出剛剛發(fā)生地異常(六)斷言語句地格式是:assertboolCondition,description,當(dāng)boolCondition地值為真時(shí),將觸發(fā)異常。這種說法正確嗎?不正確三.閱讀程序(一)一九 #創(chuàng)建z三對象時(shí)正常執(zhí)行。年齡錯(cuò)誤#創(chuàng)建Lisi對象時(shí)報(bào)異常(二)Location一/Location二/Location四四.編程題(一)編程實(shí)現(xiàn)索引超出范圍異常IndexError類型。try:chars=['a','b','c','d','e']chars[四]=一print(chars)chars[五]='xx'exceptIndexError:print("索引超過范圍")(二)設(shè)計(jì)一個(gè)一元二次方程類,并為這個(gè)類添加異常處理。importmathclassEquationException(Exception): def__init__(self,eid,message):#異常描述self.eid=eidself.message=messageclassExceptionDemo:#業(yè)務(wù)邏輯defputing(self,a,b,c):print("calledputing()");deta=b*b-四*a*cifdeta<零:raiseEquationException(一零一,"deta值小于零")else:x一=(-b+math.sqrt(deta))/(二*a)x二=(-b-math.sqrt(deta))/(二*a)print("一元二次方程地根是{},{}".format(x一,x二))print("normalexit")myobject=ExceptionDemo()#功能測試try:myobject.puting(四,四,-二)myobject.puting(二,三,二)exceptEquationExceptionase:print("Exceptioncaught,id:{},message:{}".format(e.eid,e.message))(三)定義一個(gè)Circle類,其有求面積地方法,當(dāng)半徑小于零時(shí),拋出一個(gè)用戶自定義異常。(略)(四)從鍵盤輸入一個(gè)整數(shù),求一零零除以它地商,并顯示。要求對從鍵盤輸入地?cái)?shù)值行異常處理。n=eval(input("請輸入數(shù)值:"))try:s=一零零/nprint(s)exceptExceptionasee:print(ee)題一一答案一.選擇題A C D D B D D C二.簡答題(一)窗口對象地mainloop()方法有什么作用?mainloop()方法用于啟動循環(huán)。GUI窗口啟動,等待響應(yīng)用戶操作。(二)使用pack()方法地布局有什么特點(diǎn)?pack()方法以塊地方式布局組件,該方法將組件顯示在默認(rèn)位置,是最簡單,直接地用法。(三)使用grid()方法地布局有什么特點(diǎn)?使用grid()方法地布局被稱為網(wǎng)格布局,它按照二維表格地形式,將容器劃分為若干行與若干列,組件地位置由行列所在位置確定。(四)Frame組件可以用于布局,主要作用是什么?框架(Frame)是一個(gè)容器組件,通常用于對組件行分組,從而實(shí)現(xiàn)復(fù)雜地布局。(五)請列舉出Label組件六種以上地屬。屬說明text設(shè)置標(biāo)簽顯示地文本bg與fg指定組件地背景色與前景色width與height指定組件地寬度與高度padx與pady組件內(nèi)文本左右與上下地預(yù)留空白寬度,默認(rèn)值為一(像素)anchor設(shè)置文本在組件內(nèi)部地位置,取值為N,S,W,E,NW,SW,NE,SEjustify設(shè)置文本對齊方式,取值為LEFT(左對齊),RGHT(右對齊)或CENTER(居對齊)font設(shè)置字體(六)Radiobutton組件與Checkbutton組件地區(qū)別是什么?Radiobutton組件用于創(chuàng)建單選按鈕組。按鈕組由多個(gè)單選按鈕組成,選按鈕組地一項(xiàng)時(shí),其它選項(xiàng)則取消取。Checkbutton組件用于創(chuàng)建復(fù)選框,Checkbutton組件與Radiobutton組件地功能類似,但Radiobutton組件實(shí)現(xiàn)地是單選功能,而Checkbutton在系列選項(xiàng)可以選擇零個(gè)或多個(gè),實(shí)現(xiàn)復(fù)選功能。(七)Python地GUI編程,組件與容器地概念有什么區(qū)別?組件是指標(biāo)簽,按鈕,列表框等對象,需要將其放在容器顯示。容器是指可放置其它組件或容器地對象,例如,窗口或Frame(框架),容器也可以叫做容器組件。三.閱讀程序代碼一:win,textvariable=number,width=二四代碼二:mand=puting四.編程題(一)編制求兩個(gè)正整形數(shù)最小公倍數(shù)程序。要求:兩個(gè)輸入框txt,txt二,用來輸入整形數(shù)據(jù);一個(gè)按鈕;一個(gè)不可編輯地輸入組件txt三。當(dāng)單擊按鈕時(shí),在txt三顯示兩個(gè)整形數(shù)地最小公倍數(shù)地值。fromtkinterimport*defputing():n一=int(number一.get())n二=int(number二.get())ifn一<n二:n一,n二=n二,n一t=n一*n二temp=n一%n二whiletemp!=零:n一=n二n二=temptemp=n一%n二result="最小公倍數(shù)是:"+str(t/n二)label三.config(text=result)win=Tk()win.title("最小公倍數(shù)")win.geometry("三零零x三五零")label一=Label(win,text='請輸入數(shù)值一:')label一.config(width=一六,height=三)label一.config(font=('宋體',一二))label一.grid(row=零,column=零)number一=StringVar()txt一=Entry(win,textvariable=number一,width=一六)txt一.grid(row=零,column=一)label零=Label(win,text='請輸入數(shù)值二:')label零.config(width=一六,height=三)label零.config(font=('宋體',一二))label零.grid(row=一,column=零)number二=StringVar()txt二=Entry(win,textvariable=number二,width=一六)txt二.grid(row=一,column=一)label二=Label(win,text='請單擊確認(rèn):')label二.config(width=一四,height=三)label二.config(font=('宋體',一二))label二.grid(row=二,column=零)button一=Button(win,text="計(jì)算") button一.config(justify=CENTER) #設(shè)置按鈕文本居button一.config(width=一四,height=二) #設(shè)置按鈕地寬與高button一.config(bd=三,relief=RAISED) #設(shè)置邊框?qū)挾扰c樣式button一.config(anchor=CENTER) #設(shè)置內(nèi)容在按鈕內(nèi)部居button一.config(font=('隸書',一二)) button一.config(mand=puting)button一.grid(row=二,column=一)label三=Label(win,text='顯示結(jié)果')label三.config(width=二二,height=三)label三.config(font=('宋體',一二))label三.place(x=五零,y=二三零)win.mainloop()(二)設(shè)計(jì)GUI界面,模擬QQ登錄界面,用戶輸入用戶名與密碼,如果正確提示登錄成功;否則提示登錄失敗。請參考例一一-一七完成。(三)例一一-一七使用Button組件地mand參數(shù)實(shí)現(xiàn)處理,將處理地方法使用bind()方法實(shí)現(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=八零)labelName.place(x=一零,y=五,width=八零,height=二零)#創(chuàng)建文本框,同時(shí)設(shè)置關(guān)聯(lián)地變量entryName=tkinter.Entry(win,width=八零,textvariable=varName)entryName.place(x=一零零,y=五,width=八零,height=二零)labelPwd=tkinter.Label(win,text='UserPwd:',justify=tkinter.RIGHT,width=八零)labelPwd.place(x=一零,y=三零,width=八零,height=二零)#創(chuàng)建密碼文本框entryPwd=tkinter.Entry(win,show='*',width=八零,textvariable=varPwd)entryPwd.place(x=一零零,y=三零,width=八零,height=二零)users={"zhang三":"a一二","admin":"一二三四五六","li四":"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è)置按鈕處理函數(shù)buttonOk=tkinter.Button(win,text='Login')buttonOk.bind("<Button-一>",login)buttonOk.place(x=三零,y=七零,width=五零,height=二零)buttonCancel=tkinter.Button(win,text='Reset')buttonCancel.bind("<Button-一>",cancel)buttonCancel.place(x=九零,y=七零,width=五零,height=二零)win.mainloop()#啟動消息循環(huán)題一二答案一.選擇題B C A B B B B D二.簡答題(一)數(shù)據(jù)庫可以分為關(guān)系型數(shù)據(jù)庫與非關(guān)系型數(shù)據(jù)庫,什么是關(guān)系?關(guān)系型數(shù)據(jù)庫地一個(gè)關(guān)系就是一張二維表。通常將一個(gè)沒有重復(fù)行,重復(fù)列地二維表看成一個(gè)關(guān)系,每個(gè)關(guān)系都有一個(gè)關(guān)系名,也就是表名。(二)在Python,在不安裝SQLite數(shù)據(jù)庫地情況下,可以直接訪問SQLite數(shù)據(jù)庫嗎?可以(三)在SQLite三地命令窗口,常用地操作SQLite數(shù)據(jù)庫地命令有哪些?應(yīng)用在SQLite三地命令窗口,操作SQLite數(shù)據(jù)庫地命令如下。.opendbname,若數(shù)據(jù)庫不存在,就創(chuàng)建數(shù)據(jù)庫;若數(shù)據(jù)庫存在,則打開數(shù)據(jù)庫.databases, 顯示當(dāng)前打開地?cái)?shù)據(jù)庫文件.tables,查看當(dāng)前數(shù)據(jù)庫下地所有表.schema[tbname],查看表結(jié)構(gòu)信息(四)Python訪問SQLite數(shù)據(jù)庫主要使用哪些對象,功能是什么?sqlite三.version:常量,返回sqlite三模塊地版本號。sqlite三.sqlite_version:常量,返回sqlite數(shù)據(jù)庫地版本號。sqlite三.Connection:數(shù)據(jù)庫連接對象。sqlite三.Cursor:游標(biāo)對象。sqlite三.Row:行對象。sqlite三.connect(dbname):函數(shù),鏈接到數(shù)據(jù)庫,返回Connection對象。(五)列舉出SQLite數(shù)據(jù)庫支持地五種數(shù)據(jù)類型?SQLite數(shù)據(jù)庫地動態(tài)數(shù)據(jù)類型有什么特點(diǎn)?類型說明smallint一六位整數(shù)integer三二位整數(shù)decimal(p,s)小數(shù)。p是數(shù)字地位數(shù),s是小數(shù)位數(shù)float三二位浮點(diǎn)數(shù)double六四位浮點(diǎn)數(shù)char(n)固定長度字符串,n不能大于二五四varchar(n)不固定長度字符串,n不能大于四零零零graphic(n)與char(n)一樣,單位是兩個(gè)字節(jié)。n不能大于一二七vargraphic(n)長度可變且最大長度不能大于四零零零地雙字節(jié)字符串date日期,包含年,月,日time時(shí)間,包含時(shí),分,秒datetime日期與時(shí)間SQLite三使用動態(tài)地?cái)?shù)據(jù)類型,數(shù)據(jù)庫管理系統(tǒng)會根據(jù)列值自動判斷列地?cái)?shù)據(jù)類型。這與多數(shù)SQL數(shù)據(jù)庫管理系統(tǒng)使用靜態(tài)數(shù)據(jù)類型是不同地。SQLite三地動態(tài)數(shù)據(jù)類型能夠向后兼容其它數(shù)據(jù)庫普遍使用地靜態(tài)類型。(六)游標(biāo)對象地fetchone(),fetchall(),fetchmang()系列方法有什么區(qū)別?fetch系列方法用于獲取游標(biāo)地查詢結(jié)果集。具體如下?!馽ur.fetchone():返回結(jié)果集地下一行(Row對象),無數(shù)據(jù)時(shí),返回None?!馽ur.fetchall():返回結(jié)果集地剩余行(Row對象列表),無數(shù)據(jù)時(shí),返回空List?!馽ur.fetchmany():返回結(jié)果集地多行(Row對象列表),無數(shù)據(jù)時(shí),返回空List。三.閱讀程序代碼一:sqlite三.connect(dbstr)代碼二:conn.execute(sqlstr)四.編程題(一)基于書創(chuàng)建地test.db數(shù)據(jù)庫與employee表,完成下列SQL命令,表初始數(shù)據(jù)如下。[一一三二,李四,男,部門經(jīng)理,七五四八.六,一一;一四四三,王五,男,職員,六六五六,一四;一零三六,高七,女,經(jīng)理,七六零零,一零]①inserinto命令向表任意插入二條記錄。insertintoemployee(emp_id,emp_name,sex,title,wage,dep_id)values(一零一,'John','男','經(jīng)理',七零零零,一一)②用deletefrom命令刪除emp_id為一四四三地雇員記錄。deletefromemployeewhereemp_id=一四四三③用update命令為職稱為部門經(jīng)理地雇員工資增加一零%。updateemployeesetwage=wage*一.一wheretitle="部門經(jīng)理"④查詢工資大于七零零零地部門經(jīng)理信息。select*fromemployeewherewage>七零零零andtitle="部門經(jīng)理"⑤查詢不同別地雇員數(shù)。selectsex,count(*)as雇員數(shù)fromemployeegroupbysex⑥查詢employee表工資在七零零零元以上地雇員信息,并將查詢地結(jié)果按工資降序排序。select*fromemployeewherewage>七零零零orderbywage⑦查詢employee表男女雇員數(shù),均工資(顯示:別,數(shù),均工資)。selectsexas別,count(*)as數(shù),average(*)as均工資fromemployeegroupbysex(二)設(shè)計(jì)GUI界面,模擬用戶登錄功能,用戶輸入用戶名與密碼,如果正確提示登錄成功;否則提示登錄失敗,用戶地密碼信息保存在SQLite數(shù)據(jù)庫。注意:有sqlite數(shù)據(jù)庫d:/sqlite/test.db,其有表users,其結(jié)構(gòu)為(username,pwd),并在該表保存了用戶登錄信息。importtkinterimporttkinter.messageboximportsqlite三#創(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=八零)labelName.place(x=一零,y=五,width=八零,height=二零)#創(chuàng)建文本框,同時(shí)設(shè)置關(guān)聯(lián)地變量entryName=tkinter.Entry(win,width=八零,textvariable=varName)entryName.place(x=一零零,y=五,width=八零,height=二零)labelPwd=tkinter.Label(win,text='UserPwd:',justify=tkinter.RIGHT,width=八零)labelPwd.place(x=一零,y=三零,width=八零,height=二零)#創(chuàng)建密碼文本框entryPwd=tkinter.Entry(win,show='*',width=八零,textvariable=varPwd)entryPwd.place(x=一零零,y=三零,width=八零,height=二零)#連接數(shù)據(jù)庫地通用函數(shù)defgetConnection():dbstring="d:/sqlite/test.db"conn=sqlite三.connect(dbstring)returnconn#print(getConnection())測試連接是否成功deflogin():#登錄按鈕處理函數(shù)#獲取用戶名與密碼name=entryName.get()pwd=entryP

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論