Python大數(shù)據(jù)基礎(chǔ)與實(shí)戰(zhàn)(范暉)課后題答案_第1頁
Python大數(shù)據(jù)基礎(chǔ)與實(shí)戰(zhàn)(范暉)課后題答案_第2頁
Python大數(shù)據(jù)基礎(chǔ)與實(shí)戰(zhàn)(范暉)課后題答案_第3頁
Python大數(shù)據(jù)基礎(chǔ)與實(shí)戰(zhàn)(范暉)課后題答案_第4頁
Python大數(shù)據(jù)基礎(chǔ)與實(shí)戰(zhàn)(范暉)課后題答案_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

課后題答案第1章解釋性、面向?qū)ο蟆討B(tài)數(shù)據(jù)類型、吉多·范羅蘇姆Python包、模塊、語句B 5.C6.使用pip工具來安裝擴(kuò)展庫,指令為:pipinstall庫文件名。用pip命令管理Python擴(kuò)展庫需要在命令提示符環(huán)境中進(jìn)行,并且需要切換至pip所在目錄。7.首先將.py源文件和python.exe文件關(guān)聯(lián),將.pyw源文件和pythonw.exe關(guān)聯(lián)。然后雙擊源文件即可執(zhí)行。8.常用的有三種方式,分別為import模塊名[as別名]from模塊名import對象名[as別名]frommathimport*Python被稱為人工智能的專用語言,Python下眾多的開源框架對人工智能應(yīng)用領(lǐng)域提供了強(qiáng)大的支持,如計(jì)算機(jī)視覺庫OpenCV、機(jī)器學(xué)習(xí)框架TensorFlow等。借助于Django、web2py等框架,可以快速開發(fā)網(wǎng)站應(yīng)用程序。數(shù)據(jù)分析可以使用numpy、pandas、matplotlib、scipy等庫。第2章Python采用的是基于值的內(nèi)存管理方式,如果為不同變量賦值相同值,則在內(nèi)存中只有一份該值,多個(gè)變量指向同一塊內(nèi)存地址id()在Python中/表示普通除法(也叫真除法),結(jié)果是實(shí)數(shù),而//表示整除,得到的結(jié)果是整數(shù),并且自動向下取整。x=input('請輸入3位以上的數(shù)字:')iflen(x)>=3: x=int(x) print('結(jié)果是:',x//100)else: print('輸入錯(cuò)誤!')x=input("inputanumber:")a,b,c=map(int,x)print("resultis:{0}\t{1}\t{2}".format(a,b,c))sum()True19False(True,5)True551:2:314.x=input("inputthreenumbers:")a,b,c=map(int,x.split())print("sortedresultis:",sorted((a,b,c)))第3章1.importrandomx=[random.randint(0,200)foriinrange(100)]#第一種實(shí)現(xiàn):使用集合s=set(x)forvins: print(v,':',x.count(v))#第二種實(shí)現(xiàn):使用字典d=dict()forvinx: d[v]=d.get(v,0)+1fork,vind.items(): print(k,v,sep=':')2.x=input("inputalist:")x=eval(x)p=input("inputtwopositon:")begin,end=map(int,p.split())print(x[begin:end+1])[6foriinrange(10)]4.importrandomx=[random.randint(0,100)foriinrange(20)]print(x)x[:10]=sorted(x[:10])x[10:]=sorted(x[10:],reverse=True)print(x)5.[]6.[18,19]7.([1,3],[2])8.當(dāng)列表增加或刪除元素時(shí),列表對象自動進(jìn)行內(nèi)存擴(kuò)展或收縮,從而保證元素之間沒有縫隙,但這涉及到列表元素的移動,效率較低,應(yīng)盡量從列表尾部進(jìn)行元素的增加與刪除操作以提高處理速度。9.[1,2,3,1,2,3,1,2,3]10.['1','2','3']第4章A 2.D 3.C 4.D 5.C6.name=input("請輸入你的名字:")place=input("請輸入你經(jīng)常去的地方:")like=input("請輸入你平時(shí)的愛好:")print('可愛的',name,',','最喜歡在',place,'地方進(jìn)行',like)或者:test="可愛的{0},最喜歡在{1}地方進(jìn)行{2}"name=input("請輸入你的名字:")place=input("請輸入你經(jīng)常去的地方:")like=input("請輸入你平時(shí)的愛好:")v=test.format(name,place,like)print(v)7.s=input("請輸入一個(gè)待統(tǒng)計(jì)的字符串:")print(s.count(""))第5章Continue、breakwhileCBPython提供了while和for兩種循環(huán)控制結(jié)構(gòu),用來處理需要進(jìn)行的重復(fù)操作,直到滿足某些特定條件。while循環(huán)一般用于循環(huán)次數(shù)難以提前確定的情況,也可以用于循環(huán)次數(shù)確定的情況。for循環(huán)一般用于循環(huán)次數(shù)可以提前確定的情況,尤其適用于枚舉或者遍歷序列、迭代對象中元素的場合。for循環(huán)寫的代碼通常更加清晰簡單,因此編程時(shí)建議優(yōu)先使用for循環(huán)。相同或不同的循環(huán)結(jié)構(gòu)之間可以相互嵌套,也可以和選擇結(jié)構(gòu)嵌套使用,用來實(shí)現(xiàn)更為復(fù)雜的邏輯。6.x=input('Pleaseinputaninteger:')x=int(x)ifx%2==0: print("{:d}is偶數(shù)!".format(x))else: print("{:d}is奇數(shù)!".format(x))7.x=input('Pleaseinputanintegerlessthan1000:')x=eval(x)t=xi=2result=[]whileTrue: ift==1: break ift%i==0: result.append(i) t=t//ielse: i+=1print(x,'=','*'.join(map(str,result)))第6章1.importmathdefIsPrime(v): n=int(math.sqrt(v)+1) foriinrange(2,n): ifv%i==0: return'No' else: return'Yes'print(IsPrime(17))print(IsPrime(30))print(IsPrime(813))2.defdemo(v): capital,little,digit,other=(0,)*4 #或者capital=little=digit=other=0 foriinv: if'A'<=i<='Z': capital+=1 elif'a'<=i<='z': little+=1 elif'0'<=i<='9': digit+=1 else: other+=1return(capital,little,digit,other)x='PEP498,formattedstringliterals.'print(demo(x))3.會。defdemo(): a=3 print(a)a=5demo()4.defmySum(data): sum=0 fordindata: sum+=d returnsum5.defmySorted(lst,reverse=False): lst=lst[:] length=len(lst) foriinrange(0,length-1): forjinrange(i+1,length): #比較相鄰兩個(gè)元素大小,并根據(jù)需要進(jìn)行交換 #默認(rèn)升序排序 exp='lst[i]>lst[j]' #如果reverse=True則降序排序 ifreverse: exp='lst[i]<lst[j]' ifeval(exp): lst[i],lst[j]=lst[j],lst[i] returnlst-2

defdemo(*v): print(max(v))print(sum(v))deff(n):a=b=c=1foriinrange(n-3):c,b,a=a+b+c,c,breturnc第7章B2.C3.D4.C5.AclassStudent: #學(xué)生類count=0 #計(jì)數(shù)def__init__(self,name,age):=nameself.age=ageStudent.count+=1 #要使得變量全局有效,就定義為類的屬性deflearn(self):print("islearning")stu1=Student("jack",33)stu2=Student("amy",24)stu3=Student("lucy",22)stu4=Student("lulu",45)print("實(shí)例化了%s個(gè)學(xué)生"%Student.count)7.classB:def__init__(self):passdefhandle(self):print("B.handle")classA(B):def__init__(self):super().__init__()defhandle(self):super().handle() #super依賴于繼承a=A()a.handle()第8章C2.A3.D4.B5.A6.try:score=int(input("請輸入學(xué)生的成績:"))ifscore>=90andscore<=100:print("A:優(yōu)秀")elifscore>=80andscore<90:print("B:良好")elifscore>=60andscore<80:print("C:合格")else:assertscore>60,"D:不及格"exceptExceptionasresult:print("低于60分:\n",result)7.classmy_error(Exception):def__init__(self,stri):self.leng=len(stri)defprocess(self):ifself.leng<5:return'Theinputisoflength%s,expectingatleast5'%self.lengelse:return'printsuccess'try:s=input("請輸入字符串:")raisemy_error(s)exceptmy_errorase:print(cess())第9章C 2.D 3.D 4.A 5.B6.oldFileName=input("請輸入要拷貝的文件名字:")oldFile=open(oldFileName,'r')ifoldFile:#提取文件的后綴fileFlagNum=oldFileName.rfind('.')iffileFlagNum>0:fileFlag=oldFileName[fileFlagNum:]#組織新的文件名newFileName=oldFileName[:fileFlagNum]+'[復(fù)件]'+fileFlag#創(chuàng)建新文件newFile=open(newFileName,'w')#把舊文件中的數(shù)據(jù)復(fù)制到新文件中forlineContentinoldFile.readlines():newFile.write(lineContent)#關(guān)閉文件oldFile.close()newFile.close()7.importosimportsyssys.setrecursionlimit(1000)#setthemaximumdepthas1500file_path=input('請輸入待查找的目錄:')file_name=input('請輸入待查找的文件:')deffile_find(file_path,file_name):ifos.path.isdir(file_path):#os.chdir(file_path) #進(jìn)入當(dāng)前路徑ile_list=os.listdir(file_path)foreachinfile_list:temp_dir=file_path+os.sep+eachifos.path.isdir(temp_dir): #開始遞歸進(jìn)入下一級子目錄 temp=file_find(temp_dir,file_name) iftemp==True: returnTrueelifos.path.isfile(temp_dir)andeach==file_name:returnTrue#os.chdir('..') #沒找到文件,退回上一個(gè)目錄returnFalseelse:print('{}不是一個(gè)目錄'.format(file_path))file_path='D:\PythonTest\book1'file_name='1.txt'print(file_find(file_path,file_name))第10章B 2.C 3.A 4.D 5.C(1)%matplotlibinlineimportmatplotlib.pyplotaspltimportseabornassnsiris=sns.load_dataset("iris")sns.set(style="ticks")fig,axes=plt.subplots(1,2,figsize=(20,5))sns.swarmplot(x='petal_length',y="petal_width",ax=axes[0],data=iris,hue="species")sns.swarmplot(x='sepal_length',y="sepal_width",ax=axes[1],data=iris,hue="species")plt.show()(2)sns.lmplot("petal_length","petal_width",hue="species",markers=["x","o","s"],data=iris)plt.show()從回歸圖上可以看出這兩個(gè)特征之間是線性相關(guān)的。第11章B、CDCCimportnumpyasnparr=np.random.rand(10,5)importnumpyasnpmatr1=np.arange(1,5).reshape(2,2)matr2=np.arange(5,9).reshape(2,2)matr1*matr2v=np.array([1,-1,1]).reshape(3,1).TP=(v*v.T)/(v.T*v)Q=np.eye(3,3)-Pdir(np);np.arange?np.array([[1,-1,0]])生成一個(gè)(1,3)的矩陣,np.array([1,-1,0])生成一個(gè)向量。第12章A 2.D 3.D 4.A 5.B 6.B 7.(1)importseabornassnsmpg=sns.load_dataset("mpg")mpg.ndimmpg.size(2)mpg.describe()(3)mpg.groupby('cylinders')['mpg','horsepower'].agg("mean")mpg.groupby('origin')['mpg','horsepower'].agg("mean")第13章1.fromlxmlimportetreeimportrequestsresponse=requests.get("/")response.encoding="utf-8"selector=etree.HTML(response.text)news_text=selector.xpath('//*[@id="u1"]/a[1]/text()')[0]news_url=selector.xpath('//*[@id="u1"]/a[1]/@href')[0]2.創(chuàng)建scrapy項(xiàng)目scrapystartprojectsdWeatherSpider創(chuàng)建爬蟲程序

scrapygenspidereveryCitySD使用瀏覽器打開網(wǎng)址/shaanxi在頁面上單擊鼠標(biāo)右鍵,選擇“查看網(wǎng)頁源代碼”,找到與“城市預(yù)報(bào)列表”對應(yīng)的位置。選擇并打開陜西省內(nèi)任意城市的天氣預(yù)報(bào)頁面,以西安為例。選擇“查看頁面源代碼”,找到與天氣預(yù)報(bào)相對應(yīng)的位置。修改items.py文件,定義要爬蟲的內(nèi)容importscrapyclassSdweatherspiderItem(scrapy.Item): city=scrapy.Field() weather=scrapy.Field()修改爬蟲文件everyCitySD.py#-*-coding:utf-8-*-importscrapyfromreimportfindallimportrequestsfromsdWeatherSpider.itemsimportSdweatherspiderItemclassEverycitysdSpider(scrapy.Spider): allowed_domains=[''] name='everyCitySD' allowed_domains=[''] start_urls=['/'] url=r'/shaanxi' response=requests.get(url) response.encoding="utf-8" contents=response.text pattern='<atitle=".*?"href="(.+?)"target="_blank">.+?</a>' forurlinfindall(pattern,contents): #獲取地市級預(yù)報(bào)的網(wǎng)頁地址 start_urls.append(url) defparse(self,response): item=SdweatherspiderItem() city=response.xpath('//div[@class="crumbsfl"]//a[2]//text()').extract()[0] item['city']=city selector=response.xpath('//ul[@class="tclearfix"]')[0] weather='' forliinselector.xpath('./li'): date=li.xpath('./h1//text()').extract()[0] cloud=li.xpath('./p[@title]//text()').extract()[0] high=li.xpath('./p[@class="tem"]//span//text()').extract()[0] low=li.xpath('./p[@class="tem"]//i//text()').extract()[0] wind=li.xpath('./p[@class="win"]//em//span[1]/@title').extract()[0] wind=wind+li.xpath('./p[@class="win"]//i//text()').extract()[0] weather=weather+date+':'+cloud+','+high+'/'+low+','+wind+'\n' item['weather']=weather return[item]修改pipelines.py文件,把爬取的數(shù)據(jù)寫入文件weather.csvimportcsvclassSdweatherspiderPipeline(object): defprocess_item(self,item,spider): withopen('weather.csv','a',encoding='

溫馨提示

  • 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

提交評論