




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
習(xí)題1答案1.選擇題C C C C D B C B D C 2.簡(jiǎn)答題(1)Python語(yǔ)言地開(kāi)發(fā)者是誰(shuí)?Python地作者GuidovanRossum是荷蘭人.(2)在Windows10操作系統(tǒng)下,Python默認(rèn)地安裝路徑是什么?在Windows10操作系統(tǒng)下,Python默認(rèn)地安裝路徑是C:\Users\Administrator\AppData\Local\Programs\Python\Python38-32.(3)簡(jiǎn)述Python程序地運(yùn)行過(guò)程。Python源文件地?cái)U(kuò)展名是.py。在執(zhí)行時(shí),Python解釋器先將.py文件中地源代碼翻譯成中間代碼,這個(gè)中間代碼是一個(gè)擴(kuò)展名為.pyc地文件,再由Python虛擬機(jī)(PVM)逐條將字節(jié)碼翻譯成機(jī)器指令執(zhí)行。(4)列舉出IDLE編程環(huán)境5個(gè)以上快捷鍵地功能??旖萱I功能說(shuō)明Ctrl+[縮進(jìn)代碼Ctrl+]取消縮進(jìn)代碼Alt+3注釋代碼行Alt+4取消注釋代碼行Alt+/單詞自動(dòng)完成,只要文中出現(xiàn)過(guò),就可以幫妳自動(dòng)補(bǔ)齊。多按幾次可以循環(huán)選擇Alt+P瀏覽歷史命令(上一條)Alt+N瀏覽歷史命令(下一條)F1打開(kāi)Python幫助文檔F5運(yùn)行程序Ctrl+F6重啟Shell,之前定義地對(duì)象與導(dǎo)入地模塊全部失效(5)簡(jiǎn)述程序地編譯方式與解釋方式地區(qū)別。編譯是將源程序代碼轉(zhuǎn)換成目的代碼地過(guò)程。源代碼是計(jì)算機(jī)高級(jí)語(yǔ)言代碼,而目的代碼則是機(jī)器語(yǔ)言代碼。解釋是將源代碼逐條轉(zhuǎn)換成目的代碼同時(shí)逐條運(yùn)行目的代碼地過(guò)程。執(zhí)行解釋地計(jì)算機(jī)程序稱為解釋器(Interpreter)。解釋與編譯地區(qū)別在于編譯是一次性地翻譯,程序被編譯后,運(yùn)行地時(shí)候不再需要源代碼。解釋則在每次程序運(yùn)行時(shí)都需要解釋器與源代碼。這兩者地區(qū)類似于外語(yǔ)資料地翻譯與實(shí)時(shí)地同聲傳譯。(6)敘述程序設(shè)計(jì)地IPO模式地特點(diǎn)。程序設(shè)計(jì)模式地IPO模式,即程序包括輸入(Input),處理(Process),輸出(Output)3部分。輸入是程序設(shè)計(jì)地起點(diǎn),包括文件輸入,網(wǎng)絡(luò)輸入,交互輸入,參數(shù)輸入等。輸出是程序展示運(yùn)算成果地方式,包括文件輸出,網(wǎng)絡(luò)輸出,控制臺(tái)輸出,圖表輸出等。而處理部分則是編程地核心,包括數(shù)據(jù)處理與賦值,更重要地是算法。3.編程題(1)參考例1-3,輸入三角形地底邊長(zhǎng)與高,計(jì)算并輸出三角形地面積。#h0101.py#計(jì)算三角形面積s。importmatha=eval(input("底邊長(zhǎng):"))h=eval(input("底邊對(duì)應(yīng)地高:"))s=a*h/2print("三角形地面積是{:.2f}".format(s))(2)參考例1-6,在列表中給出若干字符串,計(jì)算并輸入最長(zhǎng)地字符串。#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.簡(jiǎn)答題(1)什么是標(biāo)識(shí)符?簡(jiǎn)述Python標(biāo)識(shí)符地命名規(guī)則。計(jì)算機(jī)中地?cái)?shù)據(jù),如一個(gè)變量,方法,對(duì)象等都需要有名稱,以方便程序調(diào)用。由用戶定義地,由程序使用地符號(hào)就是標(biāo)識(shí)符?!馪ython地標(biāo)識(shí)符可以由字母,數(shù)字與下劃線"_"組成,且不能以數(shù)字開(kāi)頭?!駱?biāo)識(shí)符區(qū)分大小寫(xiě),沒(méi)有長(zhǎng)度限制?!駱?biāo)識(shí)符不能使用計(jì)算機(jī)語(yǔ)言中預(yù)留有特殊作用地關(guān)鍵字。●標(biāo)識(shí)符地命名盡量符合見(jiàn)名知意地原則,從而提高代碼地可讀性。(2)什么是關(guān)鍵字?True與False是否是Python地關(guān)鍵字?Python語(yǔ)言保留某些單詞用作特殊用途,這些單詞被稱為關(guān)鍵字,也叫保留字。True與False是Python地關(guān)鍵字。(3)比較運(yùn)算符地運(yùn)算結(jié)果是什么類型?布爾類型(4)整數(shù)地二進(jìn)制,八進(jìn)制,十六進(jìn)制都用什么格式描述?將十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制,八進(jìn)制,十六進(jìn)制地函數(shù)是什么?,二進(jìn)制(以"OB"或"Ob"開(kāi)頭),八進(jìn)制(以數(shù)字"0o"或"0O"開(kāi)頭)與十六進(jìn)制(以"Ox"或"OX"開(kāi)頭)。bin(),hex(),oct()(5)Python地?cái)?shù)值類型數(shù)據(jù)有幾種?舉例說(shuō)明。數(shù)值類型(Number)是Python地基本數(shù)據(jù)類型,包含整型,浮點(diǎn)型,復(fù)數(shù)類型與布爾類型等4種。3.編程題(1)輸入三科成績(jī),計(jì)算平均分與總分。x=eval(input("請(qǐng)輸入A科成績(jī):"))y=eval(input("請(qǐng)輸入B科成績(jī):"))z=eval(input("請(qǐng)輸入C科成績(jī):"))print("3科成績(jī)地平均分是{},總分是{}".format((x+y+z)/3,x+y+z))(2)編寫(xiě)程序,給出三角形地三邊,輸出三角形地面積。#輸入三角形三條邊,有海倫公式計(jì)算三角形面積s。importmatha=eval(input("請(qǐng)輸入a邊長(zhǎng):"))b=eval(input("請(qǐng)輸入b邊長(zhǎng):"))c=eval(input("請(qǐng)輸入c邊長(zhǎng):"))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.簡(jiǎn)答題(1)字符串有哪3種表示形式?Python中地字符串是字符集合,它被引號(hào)所包含,引號(hào)可以是單引號(hào),雙引號(hào)或者三引號(hào)(三個(gè)連續(xù)地單引號(hào)或者雙引號(hào))。單引號(hào)與雙引號(hào)包含地是單行字符串,二者地作用相同。三引號(hào)可以包含多行字符串。(2)字符串地format()方法中,該方法地參數(shù)有哪幾種?str.format()方法中地str被稱為模板字符串,其中包括多個(gè)由"{}"表示地占位符,占位符接收f(shuō)ormat()方法中地參數(shù)。str模板字符串與format()方法中地參數(shù)地對(duì)應(yīng)關(guān)系有以下3種情況。第一種,位置參數(shù)匹配。在模板字符串中,如果占位符{}為空(沒(méi)有表示順序地序號(hào)),按照參數(shù)出現(xiàn)地先后次序匹配。如果占位符{}指定參數(shù)地序號(hào),按照序號(hào)對(duì)應(yīng)參數(shù)替換。第二種,使用鍵值對(duì)地關(guān)鍵字參數(shù)匹配。format()方法中地參數(shù)用鍵值對(duì)形式表示時(shí),在模板字符串中用"鍵"來(lái)表示。第三種,使用序列地索引作為參數(shù)匹配。如果format()方法地參數(shù)是列表或元組,可以用其索引(序號(hào))來(lái)匹配。(3)字符串合并與拆分地函數(shù)是什么,通過(guò)示例來(lái)驗(yàn)證。split(sep,num),以sep為分隔符分隔字符串,如果num有指定值,則僅截取num個(gè)子字符串join(seq),以指定字符串作為分隔符,將seq中所有地元素(地字符串表示)合并為一個(gè)新地字符串(4)len('您好,Helen')與len("\n\t\r")地值都是多少?8與3(5)"China"in"Ilovechina"地值是True還是False?False(6)"Ilovechina".find("China")地值是多少?-13.編程題(1)編寫(xiě)程序,給出一個(gè)英文句子,統(tǒng)計(jì)單詞個(gè)數(shù)。sentence='''residentXiJinpingurgedall-outeffortstoachievethegoalofeliminatingpovertyinChinawithintwoyearsinhisthree-dayinspectiontourofChongqing,whichendedonWednesday.'''sentence=sentence.replace(",","")sentence=sentence.replace(".","")words=sentence.split()print(len(words))(2)編寫(xiě)程序,給出一個(gè)字符串,將其中地字符"E"用空格替換后輸出。sentence='''residEntXiJinpingurgEdall-outEfforts'''print(sentence.replace("E",""))(3)從鍵盤(pán)交互式輸入一個(gè)人地18位地身份證號(hào),以類似于"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.簡(jiǎn)答題(1)程序流程圖包括哪些元素?控制流,處理流,判斷框,起始結(jié)束框等。(2)敘述pass語(yǔ)句地作用。pass語(yǔ)句地意義是空語(yǔ)句,主要是為了保持程序結(jié)構(gòu)地完整性設(shè)計(jì)地。pass語(yǔ)句一般用做占位語(yǔ)句,該語(yǔ)句不影響其后面語(yǔ)句地執(zhí)行。(3)跳轉(zhuǎn)語(yǔ)句break與continue地區(qū)別是什么?break語(yǔ)句地作用是循環(huán)體內(nèi)部跳出,即結(jié)束循環(huán)。有時(shí)也稱為斷路語(yǔ)句,就是循環(huán)被中斷,不再執(zhí)行循環(huán)體。continue語(yǔ)句需要用于循環(huán)結(jié)構(gòu)中,它地作用是終止當(dāng)前這一輪地循環(huán),跳過(guò)本輪剩余地語(yǔ)句,直接進(jìn)入下一輪循環(huán)。continue語(yǔ)句有時(shí)也被稱為短路語(yǔ)句,指地是只對(duì)本次循環(huán)短路,并不終止整個(gè)循環(huán)。(4)敘述for循環(huán)與while循環(huán)地執(zhí)行過(guò)程。for循環(huán)從序列中逐一提取元素,放在循環(huán)變量中,對(duì)于序列中地每個(gè)元素執(zhí)行一次語(yǔ)句塊。序列可以是字符串,列表,文件或range()函數(shù)等。3.編程題(1)給定某一字符串s,對(duì)其中地每一字符c大小寫(xiě)轉(zhuǎn)換:如果c是大寫(xiě)字母,則將它轉(zhuǎn)換成小寫(xiě)字母;如果c是小寫(xiě)字母,則將它轉(zhuǎn)換成大寫(xiě)字母;如果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)輸入一個(gè)整數(shù),將各位數(shù)字反轉(zhuǎn)后輸出。num=eval(input("請(qǐng)輸入一個(gè)整數(shù):"))s=str(num)print(s[::-1])(3)計(jì)算12-22+32-42+…+972-982+992。s=0flag=1foriinrange(1,100):s=s+i*i*flagflag*=-1print(s)(4)一個(gè)數(shù)如果恰好等于它地因子這與,這個(gè)數(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)輸入兩個(gè)正整數(shù)m與n,求其最大公約數(shù)與最小公倍數(shù)。
m=eval(input("請(qǐng)輸入正整數(shù)m:"))n=eval(input("請(qǐng)輸入正整數(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.簡(jiǎn)答題(1)列表,元組,字典都用什么標(biāo)記或函數(shù)創(chuàng)建?列表使用標(biāo)記"[]"可以創(chuàng)建,元組通常使用標(biāo)記"()"創(chuàng)建。字典可以用標(biāo)記"{}"創(chuàng)建,字典中每個(gè)元素都包含鍵與值兩部分,鍵與值用冒號(hào)分開(kāi),元素之間用逗號(hào)分隔。列表與元組相互轉(zhuǎn)換地函數(shù)是tuple(lst)與list(tup),都可以創(chuàng)建元組與列表;dict()是用于創(chuàng)建字典地函數(shù)。(2)列表與元組兩種序列結(jié)構(gòu)有什么區(qū)別?列表它元組都是Python中常用地序列類型。創(chuàng)建列表時(shí),只要把逗號(hào)分隔地元素使用方括號(hào)括起來(lái)即可。列表是可變地,可向列表中任意增加元素或刪除元素,可以對(duì)列表進(jìn)行遍歷,排序,反轉(zhuǎn)等操作。元組是包含0個(gè)或多個(gè)元素地不可變序列類型。創(chuàng)建元組時(shí),只要將元組地元素用小括號(hào)包圍,并使用逗號(hào)隔開(kāi)即可。元組中地任何元素不能替換或刪除。元組與列表地區(qū)別在于元組地元素不能修改。(3)字典有什么特點(diǎn)?列出任意5種字典地操作函數(shù)。字典是Python中內(nèi)置地映射類型。字典可以看成元素對(duì)構(gòu)成地列表,其中一個(gè)元素是鍵,另一個(gè)元素是值。在搜索字典時(shí),首先查找鍵,當(dāng)查找到鍵后就可以直接獲取該鍵對(duì)應(yīng)地值。字典中地值并沒(méi)有特殊地順序,但是都存儲(chǔ)在一個(gè)特定地鍵(key)里,鍵可以是數(shù)字,字符串以及元組等。此外,字典中地元素(鍵值對(duì))是無(wú)序地。函數(shù)或操作功能描述dicts.keys()返回所有地鍵信息dicts.values()返回所有地值信息dicts.items()返回所有地鍵值對(duì)dicts.get(key,defualt)鍵存在則返回相應(yīng)值,否則返回默認(rèn)值dicts.pop(key,default)鍵存在則返回相應(yīng)值,同時(shí)刪除鍵值對(duì),否則返回默認(rèn)值dicts.popitem()隨機(jī)從字典中取出一個(gè)鍵值對(duì),以元組(key,value)形式返回dicts.clear()刪除所有地鍵值對(duì)dicts.update(dicts2)更新字典,參數(shù)dict2為更新地字典(4)遍歷列表與元組有哪幾種方法?列表與元組地遍歷地方式相同,以列表為列說(shuō)明如下。遍歷列表可以逐個(gè)處理列表中地元素,通常使用for循環(huán)與while循環(huán)來(lái)實(shí)現(xiàn)。for循環(huán)可以直接訪問(wèn)列表中地元素,用while循環(huán)遍歷列表,需要先獲取列表地長(zhǎng)度,將獲得地長(zhǎng)度作為循環(huán)地條件。(5)給定列表變量ls,ls.pop(i)方法地功能是什么?返回列表ls中地第i項(xiàng)元素并刪除該元素(6)列表與元組相互轉(zhuǎn)換地函數(shù)是什么?列表與元組相互轉(zhuǎn)換地函數(shù)是tuple(lst)與list(tup),其中地參數(shù)分別是被轉(zhuǎn)換對(duì)象。(7)給定字典變量dicts,dicts.items()方法地功能是什么?返回字典中所有地鍵值對(duì)3.編程題(1)編寫(xiě)程序,隨機(jī)生成由英文字符與數(shù)據(jù)組成地4位驗(yàn)證碼。importrandomletters1="ABCDEFGHIJKLMN"letters2="opqrstuvwxyz"letters3="0123456789"letters=letters1+letters2+letters3code=""foriinrange(4):code+=random.choice(letters)print("產(chǎn)生地驗(yàn)證碼是:{}".format(code))(2)用字典描述學(xué)生信息,包括no(學(xué)號(hào)),name(姓名),score(成績(jī))等。使用列表存儲(chǔ)學(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("請(qǐng)輸入要查找學(xué)生地姓名:")result=Falseforiteminlst:ifvar.strip()initem.values():print(item)result=Trueifresult==False:print("信息不存在")(3)使用input函數(shù),輸入若干單詞,按字典順序輸出單詞(如果某個(gè)單詞出現(xiàn)多次,只輸出一次)。words=input("請(qǐng)輸入若干單詞,用英文逗號(hào)分割:")word_list=words.split(",")aset=set()foriinword_list:#去除重復(fù)元素aset.add(i)word3=list(aset)#將集合轉(zhuǎn)換為列表后,排序word3.sort()print(word3)(4)利用元組創(chuàng)建一個(gè)存儲(chǔ)Python關(guān)鍵字地對(duì)象,并檢測(cè)給定地單詞是否是Python關(guān)鍵字。tup1=("in","break","continue","True","False","if","while","pass")var=input("Enteraword:")ifvarintup1:print("這個(gè)單詞是Python關(guān)鍵字")else:print("這個(gè)單詞不是Python關(guān)鍵字")(5)編寫(xiě)程序,刪除列表中地重復(fù)元素。提示:將列表作為集合對(duì)象地參數(shù),再使用list()函數(shù)將集合轉(zhuǎn)換為列表即可。第2章STYLEREF"標(biāo)題1+1"錯(cuò)誤!文檔中沒(méi)有指定樣式地文字。 PAGE20 PAGE21 PAGE1習(xí)題6答案1.選擇題B D D B C B C D D AA A2.簡(jiǎn)答題(1)什么是嵌套函數(shù)?舉例說(shuō)明。嵌套函數(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ù)有哪幾種,各有什么特點(diǎn)?可變參數(shù)指地是在函數(shù)定義時(shí),該參數(shù)可以接受任意個(gè)數(shù)地參數(shù)。可變參數(shù)有兩種形式,參數(shù)名稱前加星號(hào)(*)或者加兩個(gè)星號(hào)(**)。定義可變參數(shù)地函數(shù)語(yǔ)法格式如下。deffunname(formal_args,*args,**kwargs):statementsreturnexpression在上面地函數(shù)格式定義中,formal_args為定義地傳統(tǒng)參數(shù),代表一組參數(shù),*args與**kwargs為可變參數(shù)。函數(shù)傳入地參數(shù)個(gè)數(shù)會(huì)優(yōu)先匹配formal_args參數(shù)地個(gè)數(shù),*args以元組地形式保存多余地參數(shù),**kwargs以字典地形式保存帶有指定名稱形式地參數(shù)。(3)函數(shù)傳遞時(shí),基本數(shù)據(jù)類型做參數(shù)與組合數(shù)據(jù)類型做參數(shù),有什么區(qū)別?舉例說(shuō)明。基本數(shù)據(jù)類型地變量作為實(shí)際參數(shù)時(shí),是將常量或變量地值傳遞給形參,是一種值傳遞地過(guò)程,實(shí)參與形參是兩個(gè)獨(dú)立不有關(guān)地變量,因此,實(shí)參值一般是不會(huì)改變地。列表,元組,字典等組合數(shù)據(jù)類型地變量用做函數(shù)參數(shù)時(shí),這些變量在函數(shù)體外,是全局變量。形參與實(shí)參之間傳遞地只是組合數(shù)據(jù)類型變量(參數(shù))地地址(引用),如果在函數(shù)內(nèi)部修改了參數(shù)地值,參數(shù)地地址是不發(fā)生改變地,這種修改將影響到外部地全局變量。(4)在內(nèi)置函數(shù)中,列出5種常用地?cái)?shù)學(xué)運(yùn)算函數(shù)與字符運(yùn)算函數(shù)(略)(5)global語(yǔ)句地功能是什么?為了能在函數(shù)內(nèi)部讀/寫(xiě)全局變量,Python提供了global語(yǔ)句,用于在函數(shù)內(nèi)部聲明全局變量。(6)什么是默認(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ù)沒(méi)有傳入值,則直接使用默認(rèn)值;如果默認(rèn)參數(shù)傳入了值,則使用傳入地新值替代。3.編程題(1)編寫(xiě)函數(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)編寫(xiě)函數(shù)change(str1),其功能是對(duì)參數(shù)str1進(jìn)行大小寫(xiě)轉(zhuǎn)換,其中地大寫(xiě)字母轉(zhuǎn)換成小寫(xiě)字母;小寫(xiě)字母轉(zhuǎn)換成大寫(xiě)字母;非英文字符不轉(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)編寫(xiě)并測(cè)試函數(shù)gcd(m,n)與l(m,n),功能是求兩個(gè)整數(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("請(qǐng)輸入正整數(shù)m:"))n=eval(input("請(qǐng)輸入正整數(shù)n:"))print("最大公約數(shù)是",gcd(m,n))print("最小公倍數(shù)是",l(m,n))(4)編寫(xiě)并測(cè)試函數(shù)reverse(x),輸入一個(gè)整數(shù),將各位數(shù)字反轉(zhuǎn)后輸出。defreverse(x):y=str(x)y=y[::-1]returnint(y)print(reverse(12345))(5)用遞歸方法反轉(zhuǎn)一個(gè)字符串,例如"abcde",反轉(zhuǎn)為"edcba"。deffunc(s):iflen(s)<1:returnsreturnfunc(s[1:])+s[0]s="abcde"result=func(s)print(result)(6)編寫(xiě)程序求12-22+32-42+…+972-982+992。(略)習(xí)題7答案1.選擇題A A D C D A C B B A2.簡(jiǎn)答題(1)什么是對(duì)象?什么是類?類與對(duì)象地關(guān)系是什么?對(duì)象(Object)對(duì)應(yīng)客觀世界地事物,將描述事物地一組數(shù)據(jù)與與這組數(shù)據(jù)有關(guān)操作封裝在一起,形成一個(gè)實(shí)體,這個(gè)實(shí)體就是對(duì)象。具有相同或相似性質(zhì)地對(duì)象地抽象就是類(Class)。因此,對(duì)象地抽象是類,類地具體化就是對(duì)象。(2)面向?qū)ο笳Z(yǔ)言有哪三個(gè)特性?封裝性,繼承性與多態(tài)性(3)什么是面向?qū)ο缶幊痰乩^承性?有什么優(yōu)點(diǎn)?繼承(Inheritance)描述了類之間地關(guān)系,在這種關(guān)系中,一個(gè)類共享了一個(gè)或多個(gè)其它類定義地?cái)?shù)據(jù)與操作。繼承地類(子類)可以對(duì)被繼承地類(父類)地操作進(jìn)行擴(kuò)展或重定義。通過(guò)繼承,可以在無(wú)須重新編寫(xiě)原有類地情況下,對(duì)原有類地功能進(jìn)行擴(kuò)展。繼承不僅增強(qiáng)了代碼復(fù)用性,提高了開(kāi)發(fā)效率,而且為程序地修改補(bǔ)充提供了便利。(4)類屬性與實(shí)例屬性地區(qū)別是什么?屬性也叫成員變量,分為兩種類型:一種是實(shí)例屬性,另一種是類屬性。實(shí)例屬性是在構(gòu)造方法__init__()中定義地,定義時(shí)以self作為第1個(gè)參數(shù);類屬性是在類中方法之外定義地屬性。在類地地外部,實(shí)例屬性屬于實(shí)例(對(duì)象),只能通過(guò)對(duì)象名訪問(wèn);類屬性屬于類,可以通過(guò)類名訪問(wèn),也可以通過(guò)對(duì)象名訪問(wèn),被類地所有對(duì)象共享。(5)構(gòu)造方法與析構(gòu)方法名字都是什么?類中定義地名字為_(kāi)_init__()地方法(以兩個(gè)下畫(huà)線"_"開(kāi)頭與結(jié)尾)被稱為構(gòu)造方法。__del__()方法是析構(gòu)方法。(6)構(gòu)造方法作用是什么?與實(shí)例方法有什么不同?類中定義地名字為_(kāi)_init__()地方法(以兩個(gè)下畫(huà)線"_"開(kāi)頭與結(jié)尾)被稱為構(gòu)造方法。一個(gè)類定義了__init__()方法以后,創(chuàng)建對(duì)象時(shí),就會(huì)自動(dòng)為新生成地對(duì)象調(diào)用該方法。構(gòu)造方法一般用于完成對(duì)象數(shù)據(jù)成員設(shè)置初值或進(jìn)行其它必要地初始化工作。實(shí)例方法也叫成員方法,需要通過(guò)對(duì)象調(diào)用,實(shí)現(xiàn)特定地功能。(7)列舉出5種重載地運(yùn)算符及對(duì)應(yīng)地方法。方法名 重載說(shuō)明 運(yùn)算符調(diào)用方式__add__ 對(duì)象加法運(yùn)算 x+y,x+=y__sub__ 對(duì)象減法運(yùn)算 x-y,x-=y__div__ 對(duì)象除法運(yùn)算 x/y,x/=y__mul__ 對(duì)象乘法運(yùn)算 x*y,x*-=y__mod__ 對(duì)象取余運(yùn)算 x%y,x%=y__repr__或__str__ 打印或轉(zhuǎn)換對(duì)象 print(x),repr(x),str()__getitem__ 對(duì)象對(duì)象索引運(yùn)算 x[key],x[i:j]__setitem__ 對(duì)象索引賦值 x[key],x[i:j]=3.閱讀程序self.value=200MyClass.value=100super().value=100self.value=200UClass.value=200用對(duì)象訪問(wèn),cc.value=200用類訪問(wèn),UClass.value=2004.編程題(1)設(shè)計(jì)一個(gè)Group類,在該類中包括:一個(gè)數(shù)據(jù)成員score(每個(gè)學(xué)生地分?jǐn)?shù)),兩個(gè)類成員total(班級(jí)地總分)與count(班級(jí)地人數(shù))。成員方法setScore(socre)用于設(shè)置分?jǐn)?shù),成員方法sum()用于累計(jì)總分,類方法average()用于求平均值。交互式輸入某組學(xué)生地成績(jī),顯示該組地總分與平均分。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è)計(jì)一個(gè)名為Equation地類,這個(gè)類包括:●代表三個(gè)系數(shù)地成員變量a,b,c?!褚粋€(gè)參數(shù)為a,b,c地構(gòu)造方法。●一個(gè)名為getDiscriminant()地方法返回判別式地值。●一個(gè)名為getRoot1()與getRoot2()地方法返回等式地兩個(gè)根:如果判別式為負(fù),這些方法返回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è)計(jì)一個(gè)描述自由落體運(yùn)動(dòng)地類,要求能獲得任意時(shí)刻地速度及位移,并進(jìn)行測(cè)試。已知重力加速度為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.簡(jiǎn)答題(1)Python導(dǎo)入模塊時(shí)一般采用什么搜索順序?Python模塊地路徑搜索順序如下:當(dāng)前目錄,環(huán)境變量pythonpath包含地目錄,python標(biāo)準(zhǔn)庫(kù)目錄與第三方包目錄。(2)Python地內(nèi)置屬性__name__有什么作用?__name__是Python地內(nèi)置屬性,用于表示當(dāng)前模塊地名字,也能反映一個(gè)包地結(jié)構(gòu)。如果.py文件作為模塊被調(diào)用,__name__地屬性值為模塊文件地主名,如果模塊獨(dú)立運(yùn)行,__name__屬性值為_(kāi)_main__。語(yǔ)句if__name__=='main'地作用就是控制這兩種不同情況執(zhí)行代碼地過(guò)程,當(dāng)__name__值為"main"時(shí),文件作為腳本直接執(zhí)行,而使用import或from語(yǔ)句導(dǎo)入到其它程序中時(shí),模塊中地代碼是不會(huì)被執(zhí)行地。(3)Python地第三方庫(kù)如何安裝?如何查看當(dāng)前計(jì)算機(jī)中已經(jīng)安裝地第三方庫(kù)?用戶可以使用pip工具安裝第三方庫(kù)。pip工具由Python官方提供并維護(hù),是常用且高效地在線第三方庫(kù)安裝工具。pip3是Python地內(nèi)置命令,用于Python3版本安裝第三方庫(kù),需要在命令行下執(zhí)行。pip3list命令用于列出當(dāng)前系統(tǒng)中已安裝地第三方庫(kù)。(4)敘述用Python地第三方庫(kù)pyinstaller打包文件地過(guò)程與注意事項(xiàng)。pyinstaller是用于源文件打包地第三方庫(kù),它能夠在Windows,Linux,MacOSX等操作系統(tǒng)下將Python源文件打包。打包后地Python文件可以在沒(méi)有安裝Python地環(huán)境中運(yùn)行,也可以作為一個(gè)獨(dú)立文件方便傳遞與管理。使用pyinstaller命令打包文件,需要注意以下幾個(gè)問(wèn)題?!裎募窂街胁荒艹霈F(xiàn)空格與英文句號(hào)(.),如果存在,需要修改Python源文件地名字?!裨次募枰荱TF-8編碼。采用IDLE編寫(xiě)地源文件均保存為UTF-8格式,可以直接使用?!袢绻钐崾痉暗芈窂教崾痉莇:\python,生成地打包生成文件地位置與與’>’提示符前地路徑是一致地。(5)模塊與包有什么區(qū)別?它們之間地關(guān)系是什么?模塊是一個(gè)包含變量,語(yǔ)句,函數(shù)或類地程序文件,文件地名字就是模塊名加上.py擴(kuò)展名.包是模塊文件所在地目錄,模塊是實(shí)現(xiàn)某一特定功能地函數(shù)與類地文件。模塊通常在包中,包用于模塊地組織。(6)舉例說(shuō)明random庫(kù)中5種函數(shù)地功能。random.random(),返回一個(gè)介于左閉右開(kāi)[0.0,1.0)區(qū)間地浮點(diǎn)數(shù)>>>random.random()0.8880685743559004random.randint(a,b),返回range[a,b]之間地一個(gè)隨機(jī)整數(shù),等價(jià)于range(a,b+1)>>>random.randint(10,20)19random.randrange(stop),返回range(0,stop)之間地一個(gè)整數(shù)>>>random.randrange(10)8random.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(10,20)17.27824882833889(7)turtle.setup()方法功能是什么?turtle.setup()方法,用于設(shè)置繪圖窗口地大小與位置。(8)使用jieba庫(kù)地什么方法可以實(shí)現(xiàn)精確分詞,并返回一個(gè)列表?jieba.lcut(s),精確模式分詞菩薩返回一個(gè)列表類型。3.閱讀程序(1)代碼1:9;代碼2:45(2)代碼1:turtle.fd;代碼2:turtle.seth3.編程題(1)使用random庫(kù),產(chǎn)生10個(gè)100到200之間地隨機(jī)數(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庫(kù),對(duì)一個(gè)日期(含時(shí)間),輸出不少于8種日期格式。(略)(3)使用turtle庫(kù)繪制一個(gè)疊加三角形。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)編寫(xiě)程序統(tǒng)計(jì)《水滸轉(zhuǎn)》中前10位出場(chǎng)最多地人物。參考例8-17完成,程序略。習(xí)題9答案1.選擇題A D C D B B B C B D2.簡(jiǎn)答題(1)常用地文本文件編碼方式有哪幾種?漢字在不同地編碼中各占幾個(gè)字節(jié)?ASCII碼即美國(guó)標(biāo)準(zhǔn)信息交換碼,僅對(duì)10個(gè)數(shù)字,26個(gè)大寫(xiě)英文字母,26個(gè)小寫(xiě)英文字母及一些其它常用符號(hào)進(jìn)行了編碼。ASCII采用8位(1字節(jié))編碼.UTF-8編碼是國(guó)際通用地編碼方式,用8位(1字節(jié))表示英語(yǔ)(兼容ASCII碼),以24位(3字節(jié))表示中文及其它語(yǔ)言,UTF-8對(duì)全世界所有國(guó)家地字符進(jìn)行了編碼。GB2312編碼是中國(guó)制定地中文編碼,用1字節(jié)表示英文字符,用2字節(jié)表示漢字字符。GBK是對(duì)GB2312地?cái)U(kuò)充。Unicode是國(guó)際組織制定地可以容納世界上所有文字與符號(hào)地字符編碼方案,它是編碼轉(zhuǎn)換地基礎(chǔ)。采用不同地編碼方式,寫(xiě)入文件地內(nèi)容可能是不同地。就漢字編碼而言,GBK編碼地1個(gè)漢字占2個(gè)字符,UTF-8編碼地1個(gè)漢字占3個(gè)字符,Unicode編碼中地1個(gè)漢字占1個(gè)字符。(2)列出任意4種文件訪問(wèn)模式,說(shuō)明其意義。r 只讀模式打開(kāi),默認(rèn)值。該模式打開(kāi)地文件需要存在,如果不存在,將報(bào)異常r+ 讀寫(xiě)模式打開(kāi)。該模式打開(kāi)地文件需要存在,如果不存在,將報(bào)異常w 寫(xiě)模式打開(kāi)。文件如果存在,清空內(nèi)容后重新創(chuàng)建文件w+ 讀寫(xiě)模式打開(kāi)。文件如果存在,清空內(nèi)容后重新創(chuàng)建文件a 追加地方式打開(kāi),寫(xiě)入地內(nèi)容追加到文件尾。該模式打開(kāi)地文件如果已經(jīng)存在,不會(huì)清空,否則新建一個(gè)文件(3)文本文件與二進(jìn)制文件在讀寫(xiě)時(shí)有什么區(qū)別?舉例說(shuō)明。當(dāng)文件被打開(kāi)后,根據(jù)文件地訪問(wèn)模式可以對(duì)文件進(jìn)行讀寫(xiě)操作。以文本文件方式打開(kāi)地文件,默認(rèn)地,程序按照當(dāng)前操作系統(tǒng)地編碼方式來(lái)讀寫(xiě)文件,也可以指定編碼方式來(lái)讀寫(xiě)文件;如果文件是以二進(jìn)制文件方式打開(kāi)地,按字節(jié)流方式讀寫(xiě)。read()與write()方法可以讀寫(xiě)二進(jìn)制文件,但二進(jìn)制文件只能讀寫(xiě)bytes字符串。例如,>>>fileb=open(r"d:\pythonfile36\\ch7\\mydata.dat",'wb')#以'wb'方式打開(kāi)二進(jìn)制文件>>>fileb.write(b"HelloPython")#寫(xiě)bytes字符串>>>n=123>>>fileb.write(bytes(str(n),encoding='utf-8'))#將整數(shù)轉(zhuǎn)換為bytes字符串寫(xiě)入文件>>>fileb.write(b"\n3.14")>>>fileb.close()#以'rb'方式打開(kāi)二進(jìn)制文件>>>file=open(r"d:\pythonfile36\\ch7\\mydata.dat",'rb')>>>print(file.read())b'HelloPython123\n3.14'>>>file.close()(4)readlines()方法與readline()方法讀取文本文件時(shí),主要區(qū)別是什么?readline([size]) 主要用于讀取文件一行內(nèi)容,可以使用參數(shù)size,讀取指定長(zhǎng)度地字符或字節(jié)。readlines([hint])用于讀取文件地所有行,返回行所組成地列表。參數(shù)hint指定讀入行數(shù)。(5)文件寫(xiě)操作主要使用哪兩個(gè)方法?write()方法可向文件中寫(xiě)入字符串,同時(shí)文件指針后移;writelines()方法可向文件中寫(xiě)入字符串序列。(6)os模塊地getcwd()函數(shù)有什么用途?os.getcwd(),當(dāng)前Python腳本文件工作地路徑。(7)如何創(chuàng)建csv文件?CSV文件是純文本文件,可以使用記事本按照CSV文件地規(guī)則來(lái)建立。使用Excel工具錄入數(shù)據(jù),另存為CSV文件是比較常用地一種方法。(8)高維數(shù)據(jù)有什么特點(diǎn)?高維數(shù)據(jù)由鍵值對(duì)類型地?cái)?shù)據(jù)構(gòu)成,采用對(duì)象方式組織,屬于維度更高地?cái)?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)將一個(gè)文件中地所有英文字母轉(zhuǎn)換成大寫(xiě),復(fù)制到另一文件中。fi=open("ex0701.py",'r')fo=open("f2.txt",'w')forlineinfi:line=line.upper()fo.write(line)fi.close()fo.close()(2)將一個(gè)文件中地指定單詞刪除后,復(fù)制到另一個(gè)文件中。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)接收用戶從鍵盤(pán)輸入地一個(gè)文件名,然后判斷該文件是否存在于當(dāng)前目錄。若存在,則輸出以下信息:文件是否可讀與可寫(xiě),文件地大小,文件是普通文件還是目錄。importos,os.pathfilename=input("請(qǐng)輸入文件地全名:")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("該文件不存在!")(4)將一文本文件加密后輸出,規(guī)則如下:大寫(xiě)英文字符A變換為C,B變換為D,……,Y變換為A,Z變換為B,小寫(xiě)英文字符規(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.簡(jiǎn)答題(1)什么叫異常?簡(jiǎn)述Python地異常處理機(jī)制。異常(Exception)就是程序在運(yùn)行過(guò)程中發(fā)生地,由于硬件故障,軟件設(shè)計(jì)錯(cuò)誤,運(yùn)行環(huán)境不滿足等原因?qū)е碌爻绦蝈e(cuò)誤事件,比如除0溢出,引用序列中不存在地索引,文件找不到等,這些事件地發(fā)生將阻止程序地正常運(yùn)行。異常處理機(jī)制如下。程序執(zhí)行過(guò)程中如果出現(xiàn)異常,會(huì)自動(dòng)生成一個(gè)異常對(duì)象,該異常對(duì)象被提交給Python解釋器,這個(gè)過(guò)程稱為拋出異常。拋出異常也可以由用戶程序自行定義。當(dāng)Python解釋器接收到異常對(duì)象時(shí),會(huì)尋找處理這一異常地代碼并處理,這一過(guò)程叫捕獲異常。如果Python解釋器找不到可以處理異常地方法,則運(yùn)行時(shí)系統(tǒng)終止,應(yīng)用程序退出。Python通過(guò)try-except語(yǔ)句處理異常。(2)除了上列出地7種常見(jiàn)異常外,查文檔,列舉3種其它地內(nèi)置異常類。KeyboardInterrupt,TimeoutError,EOFError,MemoryError,ImportError等(3)如何創(chuàng)建用戶自定義異常?創(chuàng)建用戶自定義異常地基本步驟如下。聲明一個(gè)新地異常類,使之以Exception類或其它某個(gè)已經(jīng)存在地系統(tǒng)異常類或用戶異常類為父類。為新地異常類定義屬性與方法,或重載父類地屬性與方法,使這些屬性與方法能夠體現(xiàn)該類所對(duì)應(yīng)地錯(cuò)誤地信息(4)異常處理中地else語(yǔ)句與循環(huán)中地else語(yǔ)句類似,當(dāng)try語(yǔ)句沒(méi)有捕獲到異常信息時(shí),將不執(zhí)行except語(yǔ)句塊,而是執(zhí)行else語(yǔ)句塊。使用raise語(yǔ)句能顯式地拋出異常,其格式如下:raise異常類
#拋出異常,并隱式地創(chuàng)建類對(duì)象raise異常類對(duì)象
#拋出異常,創(chuàng)建異常類地對(duì)象raise
#重新拋出剛剛發(fā)生地異常(6)斷言語(yǔ)句地格式是:assertboolCondition,description,當(dāng)boolCondition地值為真時(shí),將觸發(fā)異常。這種說(shuō)法正確嗎?不正確3.閱讀程序(1)19 #創(chuàng)建z3對(duì)象時(shí)正常執(zhí)行。年齡錯(cuò)誤#創(chuàng)建Lisi對(duì)象時(shí)報(bào)異常(2)Location1/Location2/Location44.編程題(1)編程實(shí)現(xiàn)索引超出范圍異常IndexError類型。try:chars=['a','b','c','d','e']chars[4]=1print(chars)chars[5]='xx'exceptIndexError:print("索引超過(guò)范圍")(2)設(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-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()#功能測(cè)試try:myobject.puting(4,4,-2)myobject.puting(2,3,2)exceptEquationExceptionase:print("Exceptioncaught,id:{},message:{}".format(e.eid,e.message))(3)定義一個(gè)Circle類,其中有求面積地方法,當(dāng)半徑小于0時(shí),拋出一個(gè)用戶自定義異常。(略)(4)從鍵盤(pán)輸入一個(gè)整數(shù),求100除以它地商,并顯示。要求對(duì)從鍵盤(pán)輸入地?cái)?shù)值進(jìn)行異常處理。n=eval(input("請(qǐng)輸入數(shù)值:"))try:s=100/nprint(s)exceptExceptionasee:print(ee)習(xí)題11答案1.選擇題A C D D B D D C2.簡(jiǎn)答題(1)窗口對(duì)象地mainloop()方法有什么作用?mainloop()方法用于啟動(dòng)事件循環(huán)。GUI窗口啟動(dòng),等待響應(yīng)用戶操作。(2)使用pack()方法地布局有什么特點(diǎn)?pack()方法以塊地方式布局組件,該方法將組件顯示在默認(rèn)位置,是最簡(jiǎn)單,直接地用法。(3)使用grid()方法地布局有什么特點(diǎn)?使用grid()方法地布局被稱為網(wǎng)格布局,它按照二維表格地形式,將容器劃分為若干行與若干列,組件地位置由行列所在位置確定。(4)Frame組件可以用于布局,主要作用是什么?框架(Frame)是一個(gè)容器組件,通常用于對(duì)組件進(jìn)行分組,從而實(shí)現(xiàn)復(fù)雜地布局。(5)請(qǐng)列舉出Label組件6種以上地屬性。屬性說(shuō)明text設(shè)置標(biāo)簽顯示地文本bg與fg指定組件地背景色與前景色width與height指定組件地寬度與高度padx與pady組件內(nèi)文本左右與上下地預(yù)留空白寬度,默認(rèn)值為1(像素)anchor設(shè)置文本在組件內(nèi)部地位置,取值為N,S,W,E,NW,SW,NE,SEjustify設(shè)置文本對(duì)齊方式,取值為L(zhǎng)EFT(左對(duì)齊),RGHT(右對(duì)齊)或CENTER(居中對(duì)齊)font設(shè)置字體(6)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)中可以選擇0個(gè)或多個(gè),實(shí)現(xiàn)復(fù)選功能。(7)Python地GUI編程中,組件與容器地概念有什么區(qū)別?組件是指標(biāo)簽,按鈕,列表框等對(duì)象,需要將其放在容器中顯示。容器是指可放置其它組件或容器地對(duì)象,例如,窗口或Frame(框架),容器也可以叫做容器組件。3.閱讀程序代碼1:win,textvariable=number,width=24代碼2:mand=puting4.編程題(1)編制求兩個(gè)正整形數(shù)最小公倍數(shù)程序。要求:兩個(gè)輸入框txt,txt2,用來(lái)輸入整形數(shù)據(jù);一個(gè)按鈕;一個(gè)不可編輯地輸入組件txt3。當(dāng)單擊按鈕時(shí),在txt3中顯示兩個(gè)整形數(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='請(qǐng)輸入數(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='請(qǐng)輸入數(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='請(qǐng)單擊確認(rèn):')label2.config(width=14,height=3)label2.config(font=('宋體',12))label2.grid(row=2,column=0)button1=Button(win,text="計(jì)算") 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=('隸書(shū)',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è)計(jì)GUI界面,模擬QQ登錄界面,用戶輸入用戶名與密碼,如果正確提示登錄成功;否則提示登錄失敗。請(qǐng)參考例11-17完成。(3)例11-17使用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=80)labelName.place(x=10,y=5,width=80,height=20)#創(chuàng)建文本框,同時(shí)設(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è)置按鈕事件處理函數(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()#啟動(dòng)消息循環(huán)習(xí)題12答案1.選擇題B C A B B B B D2.簡(jiǎn)答題(1)數(shù)據(jù)庫(kù)可以分為關(guān)系型數(shù)據(jù)庫(kù)與非關(guān)系型數(shù)據(jù)庫(kù),什么是關(guān)系?關(guān)系型數(shù)據(jù)庫(kù)中地一個(gè)關(guān)系就是一張二維表。通常將一個(gè)沒(méi)有重復(fù)行,重復(fù)列地二維表看成一個(gè)關(guān)系,每個(gè)關(guān)系都有一個(gè)關(guān)系名,也就是表名。(2)在Python中,在不安裝SQLite數(shù)據(jù)庫(kù)地情況下,可以直接訪問(wèn)SQLite數(shù)據(jù)庫(kù)嗎?可以(3)在SQLite3地命令窗口中,常用地操作SQLite數(shù)據(jù)庫(kù)地命令有哪些?應(yīng)用在SQLite3地命令窗口中,操作SQLite數(shù)據(jù)庫(kù)地命令如下。.opendbname,若數(shù)據(jù)庫(kù)不存在,就創(chuàng)建數(shù)據(jù)庫(kù);若數(shù)據(jù)庫(kù)存在,則打開(kāi)數(shù)據(jù)庫(kù).databases, 顯示當(dāng)前打開(kāi)地?cái)?shù)據(jù)庫(kù)文件.tables,查看當(dāng)前數(shù)據(jù)庫(kù)下地所有表.schema[tbname],查看表結(jié)構(gòu)信息(4)Python中訪問(wèn)SQLite數(shù)據(jù)庫(kù)主要使用哪些對(duì)象,功能是什么?sqlite3.version:常量,返回sqlite3模塊地版本號(hào)。sqlite3.sqlite_version:常量,返回sqlite數(shù)據(jù)庫(kù)地版本號(hào)。sqlite3.Connection:數(shù)據(jù)庫(kù)連接對(duì)象。sqlite3.Cursor:游標(biāo)對(duì)象。sqlite3.Row:行對(duì)象。sqlite3.connect(dbname):函數(shù),鏈接到數(shù)據(jù)庫(kù),返回Connection對(duì)象。(5)列舉出SQLite數(shù)據(jù)庫(kù)支持地5種數(shù)據(jù)類型?SQLite數(shù)據(jù)庫(kù)地動(dòng)態(tài)數(shù)據(jù)類型有什么特點(diǎn)?類型說(shuō)明smallint16位整數(shù)integer32位整數(shù)decimal(p,s)小數(shù)。p是數(shù)字地位數(shù),s是小數(shù)位數(shù)float32位浮點(diǎn)數(shù)double64位浮點(diǎn)數(shù)char(n)固定長(zhǎng)度字符串,n不能大于254varchar(n)不固定長(zhǎng)度字符串,n不能大于4000graphic(n)與char(n)一樣,單位是兩個(gè)字節(jié)。n不能大于127vargraphic(n)長(zhǎng)度可變且最大長(zhǎng)度不能大于4000地雙字節(jié)字符串date日期,包含年,月,日time時(shí)間,包含時(shí),分,秒datetime日期與時(shí)間SQLite3使用動(dòng)態(tài)地?cái)?shù)據(jù)類型,數(shù)據(jù)庫(kù)管理系統(tǒng)會(huì)根據(jù)列值自動(dòng)判斷列地?cái)?shù)據(jù)類型。這與多數(shù)SQL數(shù)據(jù)庫(kù)管理系統(tǒng)使用靜態(tài)數(shù)據(jù)類型是不同地。SQLite3地動(dòng)態(tài)數(shù)據(jù)類型能夠向后兼容其它數(shù)據(jù)庫(kù)普遍使用地靜態(tài)類型。(6)游標(biāo)對(duì)象地fetchone(),fetchall(),fetchmang()系列方法有什么區(qū)別?fetch系列方法用于獲取游標(biāo)地查詢結(jié)果集。具體如下?!馽ur.fetchone():返回結(jié)果集地下一行(Row對(duì)象),無(wú)數(shù)據(jù)時(shí),返回None?!馽ur.fetchall():返回結(jié)果集地剩余行(Row對(duì)象列表),無(wú)數(shù)據(jù)時(shí),返回空List?!馽ur.fetchmany():返回結(jié)果集地多行(Row對(duì)象列表),無(wú)數(shù)據(jù)時(shí),返回空List。3.閱讀程序代碼1:sqlite3.connect(dbstr)代碼2:conn.execute(sqlstr)4.編程題(1)基于書(shū)中創(chuàng)建地test.db數(shù)據(jù)庫(kù)與employee表,完成下列SQL命令,表中初始數(shù)據(jù)如下。[1132,李四,男,部門(mén)經(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命令為職稱為部門(mén)經(jīng)理地雇員工資增加10%。updateemployeesetwage=wage*1.1wheretitle="部門(mén)經(jīng)理"④查詢工資大于7000地部門(mén)經(jīng)理信息。select*fromemployeewherewage>7000andtitle="部門(mén)經(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è)計(jì)GUI界面,模擬用戶登錄功能,用戶輸入用戶名與密碼,如果正確提示登錄成功;否則提示登錄失敗,用戶地密碼信息保存在SQLite數(shù)據(jù)庫(kù)中。注意:有sqlite數(shù)據(jù)庫(kù)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í)設(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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 拉薩面試題精 編:職業(yè)規(guī)劃與面試技巧
- 農(nóng)業(yè)科技行業(yè)面試題庫(kù)及答案精 編
- 福建省南安市國(guó)光中學(xué)2026屆高二化學(xué)第一學(xué)期期中預(yù)測(cè)試題含解析
- 締約方大會(huì)第十五次會(huì)議《生物多樣性公約》
- 熱水器工作原理與使用維護(hù)指南
- 三高防治工作匯報(bào)
- 專業(yè)文檔分享:教資拼音面試題庫(kù)攻略
- 外國(guó)人打擊處理工作匯報(bào)
- 脫髓鞘病與先天腦畸形影像
- 細(xì)胞的衰老、凋亡與癌變研究
- (銀川市直部門(mén)之間交流)2022事業(yè)單位工作人員調(diào)動(dòng)表
- 高中化學(xué)課程標(biāo)準(zhǔn)解讀課件
- 新舊預(yù)算法對(duì)照表
- 企業(yè)財(cái)務(wù)會(huì)計(jì)全套教學(xué)課件
- 勞動(dòng)關(guān)系證明書(shū)模板
- 仲夏夜之夢(mèng)英文話劇劇本
- 脫不花三十天溝通訓(xùn)練營(yíng)
- SH/T 0356-1996燃料油
- 科脈解決方案御商
- 變電室高壓停電工作票1
- 住院患者用藥教育學(xué)習(xí)記錄
評(píng)論
0/150
提交評(píng)論