《Python程序設(shè)計(jì)基礎(chǔ)與實(shí)戰(zhàn)》習(xí)題答案_第1頁
《Python程序設(shè)計(jì)基礎(chǔ)與實(shí)戰(zhàn)》習(xí)題答案_第2頁
《Python程序設(shè)計(jì)基礎(chǔ)與實(shí)戰(zhàn)》習(xí)題答案_第3頁
《Python程序設(shè)計(jì)基礎(chǔ)與實(shí)戰(zhàn)》習(xí)題答案_第4頁
《Python程序設(shè)計(jì)基礎(chǔ)與實(shí)戰(zhàn)》習(xí)題答案_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

文檔來源網(wǎng)絡(luò)整理侵權(quán)刪除PAGE1.填空題(1)對象(2)UTF-8(3).py(4)交互式、文件式2.單選題(1)A(2)D(3)D3.簡答題(1)Python的特點(diǎn)包括:易學(xué)易用、免費(fèi)開源、解釋性、可移植性、面向?qū)ο蟆⒖蓴U(kuò)展性和豐富的庫。(2)首先建立項(xiàng)目,然后在項(xiàng)目下新建Python文件,輸入正確的代碼,點(diǎn)擊運(yùn)行即可。4.編程題(1)print("你好,PyCharm!")

1.填空題(1)#(2)數(shù)字(3)importrandom、formrandomimport*(4)pip2.選擇題(1)C(2)B(3)C3.簡答題(1)標(biāo)識符由字母、數(shù)字和下劃線組成,且不允許以數(shù)字開頭。在使用標(biāo)識符時應(yīng)注意:命名時應(yīng)遵循見名知意的原則;系統(tǒng)已用的關(guān)鍵字不得用作標(biāo)識符;標(biāo)識符區(qū)分大小寫;漢字在Python中是被允許作為標(biāo)識符的,但是用漢字作為標(biāo)識符是不建議的。(2)Python中的模塊分為3類:內(nèi)置模塊、第三方模塊和自定義模塊。內(nèi)置模塊是Python的官方模塊,可以直接導(dǎo)入程序;第三方模塊是非官方制作發(fā)布的模塊,需要用戶安裝后才能使用;自定義模塊是用戶自行編寫的模塊,對功能性代碼塊進(jìn)行復(fù)用。3.編程題(1)x=3y=5print(eval("x**y"))#注意:eval()函數(shù)中必須是字符串表達(dá)式(2)importturtleturtle.setup(500,300)#設(shè)置畫布寬為500,高為300turtle.pensize(3)#設(shè)置畫筆寬為3turtle.pendown()#準(zhǔn)備開始繪制turtle.begin_fill()#準(zhǔn)備開始填充圖形turtle.fillcolor("purple")#填充圖形為紫色turtle.goto(40,0)#邊繪制邊移動畫筆至坐標(biāo)(40,0)turtle.left(120)#逆時針旋轉(zhuǎn)120度turtle.forward(80)#沿著畫筆方向前進(jìn)80turtle.left(120)#逆時針旋轉(zhuǎn)120度turtle.forward(80)#沿著畫筆方向前進(jìn)80turtle.left(120)#逆時針旋轉(zhuǎn)120度turtle.forward(40)#沿著畫筆方向前進(jìn)40,回到原點(diǎn)turtle.end_fill()#結(jié)束填充顏色turtle.exitonclick()#不關(guān)閉畫布,手動關(guān)閉(3)importturtleturtle.begin_fill()#開始填充圖形turtle.color("pink","pink")#將畫筆顏色和填充顏色均設(shè)置為粉色turtle.left(135)#將畫筆逆時針旋轉(zhuǎn)135度turtle.pendown()#準(zhǔn)備開始繪制turtle.forward(127.30)#畫筆向前移動127.30個像素turtle.circle(-63.65,180)#在畫筆右側(cè)繪制半徑為63.65的半圓,半徑設(shè)置為負(fù)數(shù)turtle.left(90)#將畫筆逆時針旋轉(zhuǎn)90度turtle.circle(-63.65,180)#繪制半徑為63.65的半圓turtle.forward(127.30)#畫筆向前移動127.30個像素,回到原點(diǎn)turtle.end_fill()#結(jié)束填充turtle.exitonclick()#結(jié)束繪制不關(guān)閉畫布

1.填空題(1)True(2)+(3)strip()(4)\(5)str()或者repr()2.單選題(1)D(2)A(3)B(4)A(5)B3.簡答題(1)解決方法有以下兩種:第一種是改變字符串定義方式,用單引號定義字符串;第二種是用轉(zhuǎn)義字符,將字符串中的雙引號改為“\"”。優(yōu)先采用第一種方式。(2)int(x[,base=10]):將浮點(diǎn)型、布爾型以及符合數(shù)值類型規(guī)范的字符串轉(zhuǎn)換為整型,其中base代表進(jìn)制;float(x):將整型和符合數(shù)值類型規(guī)范的字符串轉(zhuǎn)換為浮點(diǎn)型;complex(real,imag):將實(shí)數(shù)通過實(shí)部和虛部組合為復(fù)數(shù)類型,或?qū)⒎蠑?shù)值類型的字符串轉(zhuǎn)換為復(fù)數(shù)類型;bool(x):將任意類型轉(zhuǎn)換為布爾類型;str(x)、repr(x):將任意類型轉(zhuǎn)換為字符串類型4.編程題(1)importmathaction=math.pow((1+0.01),365)#學(xué)習(xí)積累365天inaction=math.pow((1-0.01),365)#放任怠惰365天print(f"學(xué)習(xí)積累后:{action:.2f},消極怠惰后:{inaction:.2f}")importmathaction=math.pow((1+0.01),3)#三天打魚inaction=math.pow((1-0.01),2)#兩天曬網(wǎng)result=math.pow((action*inaction),(365/5))print(f"一年后知識儲備變?yōu)椋簕result:.2f}")(2)word="Python"print(word[::-1])(3)name=input("輸入一個英文名字:")print(f"大寫:{name.upper()},小寫:{name.lower()},首字母大寫:{name.title()}")

1.填空題(1)0(2)elif(3)else(4)finally2.選擇題(1)C(2)B(3)D(4)A3.簡答題(1)else可以和以下語句配合使用:①if語句。if...else語句用于根據(jù)條件的值決定執(zhí)行哪塊代碼,當(dāng)條件為True時,執(zhí)行if后的語句塊;當(dāng)條件為False時,執(zhí)行else后的語句塊。②while語句。在while循環(huán)正常結(jié)束時,執(zhí)行else后的語句塊。③for語句。在for循環(huán)正常結(jié)束時,執(zhí)行else后的語句塊。④try...excepy語句。try...except...else語句用于處理未捕捉到異常的情形,else后的語句塊可以看作對try語句塊正常執(zhí)行后的一種追加處理。如果try出現(xiàn)異常,則執(zhí)行except語句塊,否則執(zhí)行else語句塊。(2)continue語句僅結(jié)束本次循環(huán),進(jìn)入下次循環(huán),不是結(jié)束整個循環(huán),而break語句則用于結(jié)束整個循環(huán)過程。4.編程題(1)a=float(input("請輸入第一條邊的邊長:"))b=float(input("請輸入第二條邊的邊長:"))c=float(input("請輸入第三條邊的邊長:"))is_triangle="可以"ifa+b>canda+c>bandb+c>aelse"不能"print(f"{is_triangle}組成三角形")(2)foriinrange(1,10):forjinrange(i,10):print(f"{i}×{j}={i*j}",end="\t")print()print("\t"*2*i,end="")(3)fromturtleimport*color("yellow","yellow")begin_fill()foriinrange(5):forward(100)right(144)end_fill()exitonclick()(4)fromrandomimport*random_number=randint(0,10)count=0whileTrue:number=int(input("請輸入您猜測的數(shù):"))count+=1ifnumber>random_number:print("猜測錯誤,太大了")elifnumber<random_number:print("猜測錯誤,太小了")else:print(f"恭喜您猜中!猜測了{(lán)count}次")break(5)fromrandomimport*random_number=randint(0,10)count=0whileTrue:try:number=int(input("請輸入您猜測的數(shù):"))count+=1ifnumber>random_number:print("猜測錯誤,太大了")elifnumber<random_number:print("猜測錯誤,太小了")else:print(f"恭喜您猜中!猜測了{(lán)count}次")breakexceptValueError:print("輸入內(nèi)容必須是整數(shù)!")

1.填空題(1)0(2)len()(3)list()(4)sort()(5)切片[:]copy()2.單選題(1)D(2)C(3)A(4)D3.簡答題(1)序列是指一塊可存放多個值的連續(xù)內(nèi)存空間,這些值按照一定的順序排列,可以通過每個值所在位置的編號訪問它們。序列的常用操作如下:①序列具有索引,可以切片。②相同類型的序列可以相加。③序列乘一個整數(shù)值可以重復(fù)多次該序列。④可以判斷某個元素是不是序列的成員。⑤可以用len()函數(shù)計(jì)算序列的長度,用max()函數(shù)計(jì)算序列的最大值,用min()函數(shù)計(jì)算序列的最小值。⑥可以通過index()方法查找序列中某元素第一次出現(xiàn)的索引,通過count()方法計(jì)算某元素出現(xiàn)的次數(shù)。(2)列表是可變序列,可以使用append()方法增加元素、通過remove()方法刪除元素以及使用索引或切片修改元素等,而元組是不可變序列,不能增加、修改和刪除元素。元組可以在字典中作為鍵使用,而列表則不行。4.編程題(1)num_list=[23,11,12,23,9,2,1,4]new_list=[]foriteminnum_list:ifitemnotinnew_list:new_list.append(item)iflen(num_list)==len(new_list):print("列表num_list無重復(fù)元素")else:print("列表num_list有重復(fù)元素")(2)my_foods=["果凍","巧克力","火鍋"]friends_foods=my_foods.copy()friends_foods.append("火龍果")friends_foods.remove("巧克力")friends_foods[0]="牛奶"print(friends_foods)(3)run_list=["0分鐘","20分鐘","40分鐘","60分鐘"]swim_list=["0米","200米","400米","600米"]calories_list=[i*200+j*100foriinrange(len(run_list))forjinrange(len(swim_list))]print("卡路里列表:",calories_list)print(f"運(yùn)動計(jì)劃中最多消耗{max(calories_list)}卡路里,最少消耗{min(calories_list)}卡路里")

1.填空題(1)鍵值對(2)items()(3)|、|=(4)add()(5)&2.單選題(1)A(2)C(3)A(4)D(5)B3.簡答題(1)訪問字典元素的值可以通過元素的鍵和get()函數(shù)兩種方式。通過字典鍵訪問對應(yīng)的值時,如果鍵不存在,則會發(fā)生KeyError異常。用get()函數(shù)訪問時,其第一個參數(shù)是要訪問的鍵,鍵存在則返回對應(yīng)的值,鍵不存在則返回get()函數(shù)的第二個參數(shù)。(2)遍歷字典可以遍歷所有的鍵值對、遍歷所有的鍵和遍歷所有的值。遍歷所有的鍵值對,需要用items()方法獲取字典的鍵值對元組,然后再通過for循環(huán)遍歷;遍歷所有的鍵,需要用keys()方法獲取字典中所有的鍵,再通過for循環(huán)遍歷;遍歷所有的值,需要用values()方法遍歷字典所有的值,再通過for循環(huán)遍歷。4.編程題(1)student_dict={}whileTrue:stu_id=input("請輸入學(xué)號(輸入空則退出循環(huán)):")ifstu_id=="":breakstu_name=input("請輸入姓名:")student_dict[stu_id]=stu_nameforiteminsorted(student_dict.keys()):print(f"學(xué)號:{item},姓名:{student_dict[item]}")(2)favorite_dict={}whileTrue:classify=input("請輸入您喜歡的事物(輸入空則退出循環(huán)):")ifclassify=="":breakitems=input("您喜歡的"+classify+"包括哪些(請以英文逗號隔開)?")favorite_dict[classify]=items.split(",")print(favorite_dict)forclassify,itemsinfavorite_dict.items():print(f"{classify}包括:",end="")foriteminitems:ifitems.index(item)==len(items)-1:print(item)else:print(item,end=",")(3)list01=[1,2,3,4,4,5,6,7]set01=set(list01)iflen(list01)==len(set01):print("列表中無重復(fù)元素")else:print("列表中有重復(fù)元素")(4)fromjiebaimport*fromjieba.analyseimport*text="""他笑了笑,并像34年前一樣,希望她能在夜色中看到自己的笑:“我給你帶來了一件禮物?!彼f著,打開背上山來的一個旅行包,拿出—個很奇怪的東西,足球大小,初看上去像是一團(tuán)胡亂團(tuán)起的漁網(wǎng),對著天空時,透過它的孔隙可以看到斷斷續(xù)續(xù)的星光.他打開手電,她看到那東西是由無數(shù)米粒大小的小球組成的,每個小球都伸出數(shù)目不等的幾根細(xì)得幾乎看不見的細(xì)桿與其他小球相連,構(gòu)成了一個極其復(fù)雜的網(wǎng)架系統(tǒng)。他關(guān)上手電,在黑暗中按了一下網(wǎng)架底座上的一個開關(guān),網(wǎng)架中突然充滿了快速移動的光點(diǎn),令人眼花繚亂,她仿佛在看著一個裝進(jìn)了幾萬只螢火蟲的空心玻璃球。再定睛細(xì)看,她發(fā)現(xiàn)光點(diǎn)最初都是由某一個小球發(fā)出,然后向周圍的小球傳遞,每時每刻都有一定比例的小球在發(fā)出原始光點(diǎn),或傳遞別的小球發(fā)出的光點(diǎn),她形象地看到了自己的那個比喻:雨中的池塘?!斑@是恒星閃爍傳遞模型嗎?!啊,真美,難道……你已經(jīng)預(yù)見到這一切?!”“我確實(shí)猜測恒星閃爍傳遞是宇宙間的一種普遍現(xiàn)象,當(dāng)然是僅憑直覺。但這個東兩不是恒星閃爍傳遞模型。我們院里有一個腦科學(xué)研究項(xiàng)目,用三維全息分子顯微定位技術(shù),研究大腦神經(jīng)元之間的信號傳遞,這就是一小部分右腦皮層的神經(jīng)元信號傳遞模型,當(dāng)然只是很小很少部分?!彼缘囟⒅@個星光竄動的球體:“這就是意識嗎?”“是的,正如巨量的0和1的組合產(chǎn)生了計(jì)算機(jī)的運(yùn)算能力一樣。意識也只是由巨量的簡單連接產(chǎn)生的,這些神經(jīng)元間的簡單連接聚集到—個巨大的數(shù)量,就產(chǎn)生了意識,換句話說,意識,就是超巨量的節(jié)點(diǎn)間的信號傳遞?!彼麄兡刈⒁曋@個星光燦爛的大腦模型,在他們周圍的宇宙深淵中,飄浮著銀河系的千億顆恒星,和銀河系外的千億個恒星系,在這無數(shù)的恒星之間,無數(shù)的A類閃爍正在傳遞。"""word_dict={}words=lcut(text)forwordinwords:iflen(word)==1:continueelse:word_dict[word]=word_dict.get(word,0)+1sort_list=sorted(word_dict.items(),key=lambdax:x[1],reverse=True)forword,countinsort_list:print("{:<10}{:<10}".format(word,count))keywords=extract_tags(text,topK=5)print("關(guān)鍵詞包括:",keywords)

1.填空題(1)def(2)return(3)global(4)nonlocal(5)None2.單選題(1)A(2)B(3)A(4)D(5)C3.簡答題(1)參數(shù)的包裹傳遞用于傳遞不確定長度的參數(shù),會在函數(shù)的形參前加上*或者**,將傳入的位置參數(shù)包裹成元組,將傳入的關(guān)鍵字參數(shù)包裹成字典,在函數(shù)中進(jìn)行使用。而參數(shù)的解包裹傳遞是指,實(shí)參是元組、列表或者字典類型,在調(diào)用函數(shù)時,在實(shí)參前加上*或者**,拆分后分別與形參進(jìn)行一一對應(yīng)。(2)局部變量是指在函數(shù)內(nèi)部使用的變量,只在函數(shù)內(nèi)部起作用。當(dāng)函數(shù)執(zhí)行結(jié)束后,局部變量將不復(fù)存在。全局變量是指在函數(shù)之外進(jìn)行定義的變量,能在整個程序中使用。如果希望在函數(shù)中對函數(shù)外的全局變量進(jìn)行操作,則需要global關(guān)鍵字在函數(shù)內(nèi)對變量進(jìn)行重新聲明。需要注意的是,如果可變的數(shù)據(jù)是全局變量,則在函數(shù)內(nèi)可以直接對其進(jìn)行操作,不需要使用global進(jìn)行聲明。4.編程題(1)defscene_province(scenic_spot,province,abbr_province):print(f"我最喜歡的景點(diǎn)是{scenic_spot}")print(f"它位于{province}")print(f"{province}的簡稱是{abbr_province}")scene_dict={"scenic_spot":"避暑山莊","province":"河北省","abbr_province":"冀"}scene_province(**scene_dict)(2)defproduct(*number):sum=1foriteminnumber:sum*=itemreturnsumresult=product(3,1,2,4,5)print(result)(3)deffib(n):ifn==0orn==1:returnnreturnfib(n-1)+fib(n-2)try:number=int(input("請輸入一個正整數(shù)"))result=fib(number)print(result)exceptValueError:print("您的輸入有誤,需要輸入一個正整數(shù)")

1.填空題(1)class(2)self(3)@classmethod(4)__init__(5)@staticmethod2.單選題(1)C(2)D(3)A(4)A3.簡答題(1)直接在類中定義的屬性是類屬性,類屬性可以通過類或類的實(shí)例訪問到,但是類屬性只能通過類對象來修改,無法通過實(shí)例對象修改。通過實(shí)例對象添加的屬性屬于實(shí)例屬性,實(shí)例屬性只能通過實(shí)例對象來訪問和修改,類對象無法訪問修改。(2)實(shí)例方法、類方法和靜態(tài)方法的區(qū)別主要在定義和調(diào)用上。實(shí)例方法定義:第一個參數(shù)必須是實(shí)例對象,該參數(shù)名一般約定為“self”,通過它來傳遞實(shí)例的屬性和方法;調(diào)用:只能由實(shí)例對象調(diào)用。類方法定義:使用裝飾器@classmethod,第一個參數(shù)必須是當(dāng)前類對象,該參數(shù)名一般約定為“cls”,通過它來傳遞類的屬性和方法(不能傳實(shí)例的屬性和方法);調(diào)用:實(shí)例對象和類對象都可以調(diào)用。靜態(tài)方法定義:使用裝飾器@staticmethod,參數(shù)隨意,沒有“self”和“cls”參數(shù),在方法體中不能訪問類內(nèi)的任何屬性和方法。調(diào)用:實(shí)例對象和類對象都可以調(diào)用。4.編程題(1)importmathclassCircle:def__init__(self,redius,color):self.redius=redius#半徑self.color=color#顏色defcal_perimeter(self):"""用于計(jì)算圓的周長"""perimeter=2*math.pi*self.rediusreturnf"圓的周長為{perimeter:.2f}"defcal_square(self):"""用于計(jì)算圓的面積"""square=math.pi*math.pow(self.redius,2)returnf"圓的面積為{square:.2f}"if__name__=="__main__":c1=Circle(4,"red")#創(chuàng)建Circle類的實(shí)例對象print(c1.cal_perimeter())#調(diào)用cal_perimeter()方法print(c1.cal_square())#調(diào)用cal_square()方法(2)classHouse:number=0#用于統(tǒng)計(jì)房子的個數(shù)def__init__(self,name,length,width):=nameself.length=lengthself.width=widthHouse.number+=1#每創(chuàng)建1個實(shí)例對象房子的個數(shù)自動增加1defcal_square(self):"""用于計(jì)算房子的面積并返回"""square=self.length*self.widthreturnf"{}的面積是{square}"if__name__=="__main__":h1=House("洞庭",20,10)print(h1.cal_square())h2=House("探花",10,10)print(h2.cal_square())print("房子的個數(shù)是",House.number)(3)fromdatetimeimportdatetimeclassMedicine:def__init__(self,name,price,pd,exp):=name#藥名self.__price=price#藥品價(jià)格self.__pd=datetime.strptime(pd,"%Y-%m-%d")#藥品生產(chǎn)日期,datetime對象self.__exp=datetime.strptime(exp,"%Y-%m-%d")#藥品失效日期,datetime對象defguarantee_period(self):gp=self.__exp-self.__pdreturngp.daysdefis_expire(self):today=datetime.today()until_now=(today-self.__pd).daysgp=self.guarantee_period()ifuntil_now>gp:print("商品已經(jīng)過期")else:print("商品沒有過期")if__name__=="__main__":m1=Medicine("白加黑",20,"2021-1-1","2022-1-1")print("保質(zhì)期共有:",m1.guarantee_period())m1.is_expire()1.填空題(1)繼承(2)@property(3)多態(tài)(4)多重繼承(5)Exception2.單選題(1)D(2)B(3)C(4)B(5)B3.簡答題(1)封裝是面向?qū)ο蟪绦蛟O(shè)計(jì)的核心思想,將對象的屬性和行為封裝起來,避免了外界直接訪問對象而造成的過度依賴,也阻礙了外界修改對象的內(nèi)部數(shù)據(jù)而可能引發(fā)的難以預(yù)見的結(jié)果。繼承主要描述的是類與類之間的關(guān)系,是面向?qū)ο蟪绦蛟O(shè)計(jì)中提高重用性的重要措施。繼承可以在無需編寫原有類的情況下,對原有類的功能進(jìn)行擴(kuò)展,既包括原有類的所有屬性和行為,又可以定義自身的屬性和行為,稱為繼承了原有類。多態(tài)是指屬性或者行為在基類及其派生類中具有不同的含義或者形式,多態(tài)特性使得開發(fā)更加科學(xué)以及符合人類的思維習(xí)慣。(2)自定義異常類需要繼承Exception類,一般以Error或者Exception為后綴進(jìn)行命名。自定義異常類可以用raise拋出,也可以和try...except語句一起使用,和內(nèi)置異常類用法類似,try...except語句可以捕獲自定義異常,使得程序既能不被異常中斷又能報(bào)出異常信息。4.編程題(1)classCar:def__init__(self,name):=namedefrun(self):passclassTaxiCar(Car):def__init__(self,name,person_num):super().__init__(name)self.person_num=person_numdefrun(self):print(f"{}的載客量為{self.person_num}")classFreightCar(Car):def__init__(self,name,goods_weight):super().__init__(name)self.goods_weight=goods_weightdefrun(self):print(f"{}的載物量為{self.goods_weight}")t1=TaxiCar("紅旗",4)t1.run()f1=FreightCar("大貨車",2000)f1.run()(2)classStudent:number=0def__init__(self,yuwen,math,physics):self.yuwen=yuwenself.math=mathself.physics=physicsStudent.number+=1def__add__(self,other):Student.number-=1#重載+運(yùn)算符創(chuàng)造的新對象不能計(jì)入學(xué)生的總數(shù)yuwen=self.yuwen+other.yuwenmath=self.math+other.mathphysics=self.physics+other.physicsreturnStudent(yuwen,math,physics)def__str__(self):returnf"語文:{self.yuwen},數(shù)學(xué):{self.math},英語:{self.physics},總?cè)藬?shù):{Student.number}"s1=Student(90,100,80)s2=Student(90,90,90)s3=Student(95,100,100)sum=s1+s2+s3print(sum)print(f"語文平均分:{sum.yuwen/sum.number:.2f}")print(f"數(shù)學(xué)平均分:{sum.math/sum.number:.2f}")print(f"物理平均分:{sum.physics/sum.number:.2f}")(3)classElephant:def__init__(self,name):=namedefopen(self,fridge):#調(diào)用方法時將fridge對象傳入fridge.open_door()defclose(self,fridge):#調(diào)用方法時將fridge對象傳入fridge.close_door()defenter(self):print(f"{}進(jìn)入了冰箱")classFridge:def__init__(self,name):=namedefopen_door(self,ele_name):print(f"{ele_name}打開了冰箱{}的門")defclose_door(self,ele_name):print(f"{ele_name}關(guān)閉了冰箱{}的門")e1=Elephant("大象Lucy")f1=Fridge("Fridge")e1.open(f1)e1.enter()e1.close(f1)

1.填空題(1)__iter__()、__next__()(2)StopIteration(3)yield(4)@(5)內(nèi)嵌2.單選題(1)B(2)C(3)A(4)C(5)A3.簡答題(1)for循環(huán)的運(yùn)行原理:1)for循環(huán)調(diào)用in后對象的__iter__()方法,將可迭代對象轉(zhuǎn)換為迭代器對象。2)調(diào)用迭代器對象的__next__()方法,將得到的返回值賦給in前面的變量,再執(zhí)行循環(huán)體中的代碼。3)循環(huán)往復(fù),直到取完迭代器中的值,自動捕捉StopIteration異常結(jié)束循環(huán)。(2)如果內(nèi)部函數(shù)引用了外部函數(shù)的變量(包括其參數(shù)),并且外部函數(shù)返回內(nèi)部函數(shù)名,這種函數(shù)架構(gòu)稱為閉包。閉包必須滿足以下三個條件:1)內(nèi)部函數(shù)的定義嵌套在外部函數(shù)中;2)內(nèi)部函數(shù)引用外部函數(shù)的變量;3)外部函數(shù)返回內(nèi)部函數(shù)名。(3)裝飾器的本質(zhì)是一個嵌套函數(shù),外部函數(shù)的參數(shù)是需要被裝飾的函數(shù)名,內(nèi)部函數(shù)用于增加被裝飾函數(shù)的新功能。@符號可以將裝飾器函數(shù)與被裝飾函數(shù)聯(lián)系起來,@符號的使用將會直接增加被裝飾函數(shù)的功能。4.編程題(1)defgenerator(str):forchin",.?!":str=str.replace(ch,"")word_list=str.split("")foriteminword_list:iflen(item)>4:yielditemsentence="Thereisnoroyalroadtoscience,andonlythosewhodonotdread\thefatiguingclimbofitssteeppathshaveachanceofgainingitsluminoussummits."g01=generator(sentence)foriteming01:print(item)(2)list01=["study","Python","strong","smart","beautiful"]result_list=list(map(lambdax:x.title(),list01))print(result_list)(3)hello_name="小千"defouter(name):deffunc02(func):deffunc01():returnfunc()+namereturnfunc01returnfunc02@outer(hello_name)defhello():return"你好呀!"print(hello())1.填空題(1)with(2)tell()(3)seek()(4)writerows()(5)數(shù)組2.單選題(1)D(2)B(3)C(4)B(5)C3.簡答題(1)寫入CSV文件可以通過序列形式寫入,也可以通過字典形式寫入。以序列形式寫入CSV文件,需要使用writer()方法創(chuàng)建writer對象,然后,單行寫入使用writerow()方法,多行寫入使用writerows()方法。以字典形式寫入CSV文件,需要使用DictWriter類創(chuàng)建writer方法,并結(jié)合writeheader()方法寫入表頭,writerow()和writerows()方法寫入表中數(shù)據(jù)。讀取CSV文件可以通過reader()方法創(chuàng)建可迭代對象reader,遍歷reader獲得CSV文件中的內(nèi)容組成的列表。也可以通過DictReader類獲取可迭代對象reader,遍歷reader獲得CSV文件中的內(nèi)容組成的字典。(2)json庫的常用操作包括實(shí)現(xiàn)Python數(shù)據(jù)類型與JSON格式的相互轉(zhuǎn)換,分為解碼和編碼兩個過程。編碼過程是指將Python數(shù)據(jù)類型序列化為JSON格式,需要使用dumps()函數(shù)和dump()函數(shù)。解碼過程是指將JSON格式反序列化為Python數(shù)據(jù)類型,需要使用loads()函數(shù)和load()函數(shù)。其中dump()函數(shù)和load()函數(shù)用于對JSON文件的操作。4.編程題(1)importcsvword_list=[]withopen("english.txt","r")asf:forlineinf:forchin",.?!":line=line.replace(ch,"")word_list+=line.strip().split("")word_dict={}foriteminword_list:word_dict[item]=word_dict.get(item,0)+1result_list=[]forword,numberinword_dict.items():line={}line["word"]=wordline["number"]=numberresult_list.append(line)withopen("english.csv","w",newline="")ascsvfile:fieldnames=result_list[0].keys()writer=csv.DictWriter(csvfile,fieldnames)writer.writeheader()writer.writerows(result_list)(2)fromPILimportImage,ImageDrawdefset_watermark(image,text,outfile="result.jpeg",angle=30):watermark=Image.new("RGB",image.size)#創(chuàng)建一個存放文字水印的新圖像,大小與image相同drawer=ImageDraw.Draw(watermark,"RGB")#創(chuàng)建繪制圖像的對象#繪制矩形水印drawer.rectangle(((0,0),(500,500)),outline="white",width=10)#繪制直線水印drawer.line(((500,500),(1000,1000)),"white",10)mask=watermark.convert("L")#設(shè)置從水印圖像轉(zhuǎn)換成色彩模式為L的透明遮罩result=Iposite(watermark,image,mask)#將水印圖像與原圖進(jìn)行混合result.save(outfile,"JPEG")#將混合后的圖像保存為outfile.jpeg文件if__name__=="__main__":image=Image.open("綠色麥田.jpeg")set_watermark(image,"水印")(3)importcsv,jsonfavorite_language=[{"name":"小千","language":"漢語"},{"name":"小鋒","language":"漢語"},{"name":"小獅","language":"漢語"},{"name":"小明","language":"英語"},]withopen("favorite_language.csv","w",encoding="utf-8-sig",newline="")ascsvfile:fieldnames=favorite_language[0].keys()writer=csv.DictWriter(csvfile,fieldnames)writer.writeheader()writer.writerows(favorite_language)withopen("favorite_language.json","w",encoding="utf-8-sig")asjsonfile:json.dump(favorite_language,jsonfile,ensure_ascii=False,indent=2)1.填空題(1)get()(2)text(3)find()、findall()(4)Workbook(5)append()2.單選題(1)C(2)D(3)B(4)A3.簡答題(1)網(wǎng)絡(luò)爬蟲的基本工作流程如下。a)設(shè)定抓取目標(biāo)(初始URL)并獲取頁面。b)不斷地爬取頁面,直到滿足停止爬取的條件。c)對于獲取的頁面,進(jìn)行網(wǎng)頁下載,獲得網(wǎng)頁中的數(shù)據(jù)。獲得網(wǎng)頁中的數(shù)據(jù)需要用到Python中的requests模塊。d)獲取網(wǎng)頁中的數(shù)據(jù)后,需要對此數(shù)據(jù)進(jìn)行解析。進(jìn)行網(wǎng)頁解析需要用到Python中的beautifulsoup4模塊。e)對于網(wǎng)頁解析出來的數(shù)據(jù),可以對有用的信息進(jìn)行存儲。有用的信息,可以存儲在文件中,也可以存儲在數(shù)據(jù)庫中。(2)寫入xlsx文件的步驟如下。a)創(chuàng)建一個xlsx工作簿,也就是Workbook類的對象wb。b)創(chuàng)建工作簿對象wb中的工作表ws。工作表通過Workbook.active進(jìn)行創(chuàng)建,工作表在創(chuàng)建時會自動命名,可以使用工作表的title屬性更改它的名稱。需要注意的是,如果需要創(chuàng)建多個工作表,第1個工作表用wb.active創(chuàng)建,后續(xù)的工作表通過create_sheet()方法創(chuàng)建。c)向xlsx的工作表ws中寫入數(shù)據(jù)。需要用append()方法逐行添加數(shù)據(jù),數(shù)據(jù)會被寫在工作表的底部。d)保存xlsx文件。通過save()方法將工作簿對象wb保存為文件。4.編程題(1)impo

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論