最流行的編程入門語言python高手學(xué)習(xí)筆記_第1頁
最流行的編程入門語言python高手學(xué)習(xí)筆記_第2頁
最流行的編程入門語言python高手學(xué)習(xí)筆記_第3頁
最流行的編程入門語言python高手學(xué)習(xí)筆記_第4頁
最流行的編程入門語言python高手學(xué)習(xí)筆記_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

python高手學(xué)習(xí)筆記TOC\o"1-5"\h\zpython學(xué)習(xí)筆記(一)——入門1python學(xué)習(xí)筆記(二)——數(shù)據(jù)類型7python學(xué)習(xí)筆記(三)——字符串15python學(xué)習(xí)筆記(四)——數(shù)據(jù)字典19python學(xué)習(xí)筆記(五)——語句26python學(xué)習(xí)筆記(六)——函數(shù)34python學(xué)習(xí)筆記(七)——文件和目錄操作42初識Redis及Redis在Windows下的安裝和使用47python小專題time模塊51python一些小知識56python小專題JSON58python小專題optparse模塊61python小專題urllib2模塊65python調(diào)用powershell、遠程執(zhí)行bat68python對MySQL的CRUD77python檢測服務(wù)器是否ping通80python操作excel表格(xlrd/xlwt)82python學(xué)習(xí)筆記(一)——入門python很多人都非常熟悉,而我作為后知后覺者,雖然慢人一步,但是學(xué)習(xí)永遠不會晚。其實作為shell,不管是perl還是ruby、powershell等,語法很相似的,我以前沒接觸過python,現(xiàn)在從最基礎(chǔ)的學(xué)起,當(dāng)然對于非常簡單的并沒有詳細記錄,簡單的準(zhǔn)備記錄下應(yīng)該注意的地方。雖然python3.X的shell工具已經(jīng)出來了,但是相關(guān)教程好像沒找到,而且與python2.x語法好多不兼容。所以我的學(xué)習(xí)環(huán)境是pythonshell2.7,也是目前最穩(wěn)定和常用的版本吧。娛樂階段:學(xué)習(xí)python之前,先來看看python的設(shè)計哲學(xué),我覺得GuidovanRossum一定是個有趣的人,能將設(shè)計思想展現(xiàn)在python解釋器中,呵呵。輸入importthis命令:Python2.7.3(default,Apr102012,23:31:26)[MSCv.150032bit(Intel)]onwin32Type"copyright","credits"or"license()"formoreinformation.>>>importthisTheZenofPython,byTimPetersBeautifulisbetterthanugly.優(yōu)美勝于丑陋Explicitisbetterthanimplicit.明了勝于晦澀Simpleisbetterthancomplex.簡單勝過復(fù)雜Complexisbetterthancomplicated.復(fù)雜勝過凌亂Flatisbetterthannested.扁平勝于嵌套Sparseisbetterthandense.間隔勝于緊湊Readabilitycounts.可讀性很重要Specialcasesaren'tspecialenoughtobreaktherules.即使假借特例的實用性之名,也不違背這些規(guī)則Althoughpracticalitybeatspurity.雖然實用性次于純度Errorsshouldneverpasssilently.錯誤不應(yīng)該被無聲的忽略Unlessexplicitlysilenced.除非明確的沉默Inthefaceofambiguity,refusethetemptationtoguess.當(dāng)存在多種可能時,不要嘗試去猜測Thereshouldbeone--andpreferablyonlyone--obviouswaytodoit.應(yīng)該有一個,最好只有一個,明顯能做到這一點Althoughthatwaymaynotbeobviousatfirstunlessyou'reDutch雖然這種方式可能不容易,除非你是python之父Nowisbetterthannever.現(xiàn)在做總比不做好Althoughneverisoftenbetterthan*right*now.雖然過去從未比現(xiàn)在好Iftheimplementationishardtoexplain,it'sabadidea.如果這個實現(xiàn)不容易解釋,那么它肯定是壞主意Iftheimplementationiseasytoexplain,itmaybeagoodidea.如果這個實現(xiàn)容易解釋,那么它很可能是個好主意Namespacesareonehonkinggreatidea—let'sdomoreofthose命名空間是一種絕妙的理念,應(yīng)當(dāng)多加利用>>>哈哈,和一般的語言不同,在“helloworld”程序開始之前,它還有一番人生哲學(xué)啊。初步入門:第一個python程序:(和其他腳本一樣,可以按tab鍵快速選擇)>>>print"helloworld"==>print是一個函數(shù)helloworld>>>這個在python3.0的解釋器中運行是錯誤的,應(yīng)該寫成:print("helloworld"),不管這些,以下均是2.X版本下?;A(chǔ)知識:交互式python解釋器可以當(dāng)非常強大的計算器使用>>>1+12>>>1/2==>和其他語言一樣,不做任何處理的情況下,這個是取整0>>>1.0/2==>將任意一個數(shù)寫成浮點形式,則結(jié)果會與精度最大的保持一致0.5>>>1./2==>單獨寫個小數(shù)點也行0.5>>>1//2==>//這個符號是專門取整的0>>>假如不想每次都要這么費勁一下,我就想在python里執(zhí)行普通的除法,有辦法:>>>from__future__importdivision==>注意future左右是兩個下劃線>>>1/20.5>>>1//2==>在這種情況下你反而想取整數(shù)部分了,使用//>>>0>>>1.//2>>>0.0長整型和進制:>>>958346283662845==>2.2版本以前是不能處理長整型的,范圍是-2147483648~2147483647958346283662845L==>L表示長整型,而且是大寫>>>0xAF==>16進制175>>>010==>8進制(010首數(shù)字是0,表8進制)8>>>獲取用戶輸入:>>>x=input("x=")x=3>>>y=input("y=")y=4>>>x*y12函數(shù):>>>pow(2,3)==>求冪函數(shù)8>>>2**38>>>abs(-10)==>取絕對值10>>>round(5/2)==>這里是先算5/2,即2,所以round(2)=2.02.0>>>round(2.5)==>把浮點數(shù)四舍五入為最接近的整數(shù)值3.0>>>floor(32.9)==>取為不大于該數(shù)的最大整數(shù)32模塊:>>>floor(23.5)==>出錯了<spanstyle二"color:#ff0000;">Traceback(mostrecentcalllast):File"<pyshell#29>",line1,in〈module〉floor(23.5)NameError:name'floor'isnotdefined</span>>>>importmath==>引入模塊math>>>math.floor(23.5)23.0>>>int(math.floor(23.5))==>轉(zhuǎn)換為整數(shù)23>>>那我不想每次都輸入math.來調(diào)用相應(yīng)函數(shù),如下寫法:>>>frommathimportfloor>>>floor(3.2)3.0cmath和復(fù)數(shù):在高中的時候有復(fù)數(shù)的預(yù)算,比如對一個復(fù)數(shù)取平方根,python提供了對復(fù)數(shù)處理的機制,但是要引入cmath模塊。>>>sqrt(-9)Traceback(mostrecentcalllast):File"<pyshell#35>",line1,in<module>sqrt(-9)NameError:name'sqrt'isnotdefined>>>importmath==>引入math模塊也無效>>>math.sqrt(-9)Traceback(mostrecentcalllast):File"<pyshell#37>",line1,in<module>math.sqrt(-9)ValueError:mathdomainerror>>>importcmath==>引入cmath模塊>>>cmath.sqrt(-9)3j>>>(1+3j)*(9-2j)==>還可以進行計算(15+25j)>>>(__future__這個模塊比較特別,它可以導(dǎo)入那些在未來會成為標(biāo)準(zhǔn)python組成的新特性)保存并執(zhí)行程序:現(xiàn)在建一個python文件,擴展名是.py,把print"hellopython!"寫入,雙擊,我們看到的是一閃而過的一個黑框,我記得在執(zhí)行C#窗體程序的時候也會出現(xiàn)這種情況,只要在主程序結(jié)尾加上"Console.ReadKeyO"就行了,這里也是,要給控制臺一個提醒輸入的機會,不然運行完就退出了,在結(jié)尾加一個語句raw_input()。再雙擊即可彈出“hellopython!”執(zhí)行這個文件hello.pyname=raw_input("whatisyouname:")print"hello"+name+"!"raw_input()字符串:>>>"hellopython!"==>雙引號會把原字符串按原樣顯示'hellopython!'>>>"we'llgoshopping!""we'llgoshopping!">>>'we'llgoshopping!'SyntaxError:invalidsyntax>>>'we\'llgoshopping!'==>轉(zhuǎn)義單引號"we'llgoshopping!">>>"\"hello,python!\"shesaid"==>字符串本身有雙引號的情況'"hello,python!"shesaid'>>>"hello"+"python!"==>字符串拼接'hellopython!'str&repr:您可能發(fā)現(xiàn)了,不用print打印出的字符串顯示出來的時候會被單引號括起來。所有通過python打印的字符串是被引號括起來的,這是因為python打印值的時候會保持該值在代碼中的狀態(tài),而不是你希望用戶看到的狀態(tài)。>>>print"helloworld"helloworld>>>print'helloworld'helloworld>>>"helloworld"'helloworld'>>>'helloworld''helloworld'>>>print10000L10000>>>10000L10000L>>>這里討論的實際是值轉(zhuǎn)換成字符串的兩種機制,str函數(shù):會把值轉(zhuǎn)換為較理性的字符串,以便用戶可以理解repr函數(shù):會創(chuàng)建一個字符串,以合法的python表達式的形式表示值。>>>printrepr("hellopython!")'hellopython!'>>>printrepr(100000L)100000L>>>printstr("hellopython!")==>顯然,用戶更希望看到的是str函數(shù)處理后的結(jié)果hellopython!>>>printstr(10000L)10000>>>其實python有時候也沒有這么智能,在高級語言中,好像數(shù)字有時候可以自動轉(zhuǎn)換為字符串型>>>age=22>>>print"myageis"+ageTraceback(mostrecentcalllast):File"<pyshell#72>",line1,in<module>?11?IIIprint"myageis"+ageTypeError:cannotconcatenate'str'and'int'objects>>>print"myageis"+str(age)myageis22>>>input&raw_input這樣,我們先運行兩個腳本,代碼如下:name=input("pleaseinputyourname:")print"hello,"+name另一個腳本是將上述input改為raw_input運行會發(fā)現(xiàn),第一個出錯。其實不運行腳本也行,我么直接在解釋器里運行命令吧!>>>name=input("pleaseinputname:")pleaseinputname:JayTraceback(mostrecentcalllast):File"<pyshell#74>",line1,in<module>name=input("pleaseinputname:")File"<string>",line1,in<module>NameError:name'Jay'isnotdefined>>>name=raw_input("pleaseinputname:")pleaseinputname:Jay其實你只要在input那個下面輸入的字符串加上引號就行了,這就是原因。input會假設(shè)用戶輸入的是python的合法表達式,當(dāng)然以字符串作為輸入的名字肯定沒有問題,但是要求用戶每次輸入一個東西還需要加引號,這不太友好。想反,raw_input函數(shù)會把所有的輸入當(dāng)做原始數(shù)據(jù),然后自動將其放入字符串中,所以不會出錯,所以我們應(yīng)盡可能使用raw_input()長字符串如果需要寫一個很長的字符串,它需要跨多行,可以使用三個單引號,強制換行用反斜杠\>>>'''asdghagjawIIIag''''asdgh\nagjaw\nag'>>>1+5+\4+616>>>python中對多個反斜杠(路徑中常用)轉(zhuǎn)義除了加\,可以在整個字串的前面加r>>>print'c:\temp\test.txt'c:empest.txt==>\t是制表符,所以會將\t作為一個制表符顯示>>>print'c:\\temp\\test.txt'==>用傳統(tǒng)的\轉(zhuǎn)義c:\temp\test.txt>>>printr'c:\temp\test.txt'==>在前面加r轉(zhuǎn)義c:\temp\test.txt>>>常用的函數(shù):abs(number)、cmath.sqrt(number)、float(object)、help()、input(prompt)、int(object)、Iong(object)、math.ceil(number)(返回上入整數(shù))、math.floor(number)(返回下舍整數(shù))、pow(x,y)、raw_input(prompt)、repr(object)、str(object)、round(number[.ndigits])python學(xué)習(xí)筆記(二)數(shù)據(jù)類型python數(shù)據(jù)結(jié)構(gòu)學(xué)一門語言,最基礎(chǔ)和重要的就是數(shù)據(jù)結(jié)構(gòu)了,而在python中最基本的數(shù)據(jù)結(jié)構(gòu)是序列,也可以理解為數(shù)組,但貌似比數(shù)組強大。>>>jason=['jason',42]>>>james=['james',45]>>>database=[jason,james]>>>database[['jason',42],['james',45]]>>>索引:>>>greeting='hello'>>>greeting[0]'h'>>>greeting[-1]==>反著的時候從-1而不是0開始開始II'o'>>>digital=raw_input("year:")[3]year:2013>>>digital'3'索引示例:>>>months=['January','February','March','April',\'May','June','July','August','September','October'\'November','December']#根據(jù)指定的年月日以數(shù)字形式打印出日期>>>endings=['st','nd','rd']+17*['th']+['st','nd','rd']+7*['th']+['st']#以1-31的數(shù)字作為結(jié)尾的列表>>>year=raw_input("Year:")Year:2013>>>month=raw_input('Month(1-12):')Month(1-12):3>>>day=raw_input('Day(1-31):')Day(1-31):30>>>month_num=int(month)>>>day_num=int(day)>>>month_name=months[month_num-1]==>注意這里索引要減1>>>ordinal=day+endings[day_num-1]>>>printmonth_name+''+ordinal+','+yearMarch30th,2013>>>分片:使用索引能訪問單個元素,使用分片能訪問一定范圍的元素,分片通過冒號相隔的兩個索引來實現(xiàn)。>>>tag='<ahref="">Pythonwebsite</a>'>>>tag[9:30]''>>>tag[32:-4]'Pythonwebsite'>>>>>>numbers=[1,2,3,4,5,6,7,8,9,10]>>>numbers[3:6][4,5,6]>>>numbers[-3:-1][8,9]>>>numbers[-3:0]#分片中的最左邊的索引比它右邊索引的晚出現(xiàn)在序列中,結(jié)果就是一個空序列[]>>>numbers[-3:]#默認(rèn)到最后[8,9,10]>>>numbers[:3]#默認(rèn)從第一個開始[1,2,3]>>>numbers[:]#默認(rèn)全部[1,2,3,4,5,6,7,8,9,10]很顯然,分片操作的實現(xiàn)需要提供兩個索引作為邊界,第一個索引的元素包含在分片內(nèi),而第二個不包含在分片內(nèi)。分片步長:默認(rèn)步長沒有寫,是1,分片格式:上邊界:下邊界:步長>>>numbers[0:10:1]#默認(rèn)步長是1[1,2,3,4,5,6,7,8,9,10]>>>numbers[0:10:2]#步長設(shè)為2[1,3,5,7,9]>>>numbers[3:6:3]#步長設(shè)為3[4]>>>numbers[::4][1,5,9]>>>numbers[8:3:-1]#步長不能為0,因為不會向下執(zhí)行,可以為負(fù)數(shù),向前執(zhí)行[9,8,7,6,5]>>>numbers[10:0:-2]#當(dāng)步長為負(fù)數(shù)時,開始索引必須大于結(jié)束索引[10,8,6,4,2]>>>numbers[0:10:-2][]>>>numbers[::-2][10,8,6,4,2]>>>numbers[5::-2][6,4,2]>>>numbers[:5:-2][10,8]>>>序列相加:>>>[1,2,3]+[4,5,6][1,2,3,4,5,6]>>>[1,2,3]+'world'#列表和字符串都是序列,但是不能連在一起,兩種同類型的序列才能進行連接操作Traceback(mostrecentcalllast):File"<pyshell#141>",line1,in<module>[1,2,3]+'world'TypeError:canonlyconcatenatelist(not"str")tolist>>>序列乘法:>>>'python'*5'pythonpythonpythonpythonpython'>>>[25]*10[25,25,25,25,25,25,25,25,25,25]空列表可以簡單的通過[]表示,但若想要創(chuàng)建一個占用十個元素空間,卻不包括任何有用的有用的內(nèi)容列表。這時需要使用None,None是Python的內(nèi)建值,初始化一個長度為10的列表如下:>>>sequence=[None]*10>>>sequence[None,None,None,None,None,None,None,None,None,None]序列乘法示例:(存在腳本中運行)sentence=raw_input("Sentence:")screen_width=60text_width=len(sentence)box_width=text_width+6left_margin=(screen_width-box_width)//2printprint''*left_margin+'+'+'-'*(box_width-2)+'+'print''*left_margin+'|'+''*text_width+'|'print''*left_margin+'|'+sentence+'|'print''*left_margin+'|'+''*text_width+'|'print''*left_margin+'+'+'-'*(box_width-2)+'+'printraw_input()結(jié)果如下:C:\Pythcn27\pythontexeSentence:Iuanttotrauel^wanttotravel^!in運算符:檢查一個值是否在序列中>>>permission='rwx'#有木有覺得這個像判斷Linux中某個文件的執(zhí)行權(quán)限,確實可以這么判斷>>>'w'inpermissionTrue>>>'xx'inpermissionFalse>>>users=['jason','james','jzhou']>>>raw_input("enteryourname:")inusersenteryourname:jzhouTrue序列成員資格示例:database=[['jason','42'],['james','45'],['jzhou','22']]username=raw_input("Username:")age=raw_input("Age:")if[username,age]indatabase:print"OK,right"raw_input()內(nèi)建函數(shù)len、min、max>>>numbers[1,2,3,4,5,6,7,8,9,10]>>>len(numbers)10>>>max(numbers)10>>>min(numbers)1>>>列表:列表不同于元組和字符串,列表是可變的,而且列表有許多專門的方法。字符串不能像列表一樣被修改,但是列表中的list函數(shù)可以實現(xiàn)修改。列表的常用用法:>>>list('hello')['h','e','l','l','o']>>>x=[1,1,1]>>>x[1]=2#可以改變列表為元素賦值>>>x[2]=3>>>x[1,2,3]>>>names=['james','jason','jzhou','liwear']#可以刪除列表中的元素>>>delnames[3]>>>names['james','jason','jzhou']>>>name=list('jzhou')>>>name['j','z','h','o','u']>>>name[2:]=list('1314')#可以分片賦值>>>name['j','z','1','3','1','4']>>>numbers=[1,5]#分片賦值可以在不需要替換任何元素的情況下插入新元素>>>numbers[1:1]=[2,3,4]>>>numbers[1,2,3,4,5]>>>numbers[1:4]=[]#也可以變相的刪除元素>>>numbers[1,5]列表的方法主要有append,count,extend,index,insert,pop,remove,reverse,sort,簡單用法如下:>>>list=[1,2,3]>>>list.append(4)#append用于在列表末尾追加新對象>>>list[1,2,3,4]>>>['to','be','or','to'].count('to')#count用于統(tǒng)計某個元素在列表中出現(xiàn)的次數(shù)2>>>x=[[1,2],1,1,[2,1,[1,2]]]>>>x.count(1)2>>>x.count([1,2])1>>>a=[1,2,3]>>>b=[4,5,6]>>>a.extend(b)#extend在列表的末尾一次性追加另一個序列的多個值,擴展原有列表>>>a[1,2,3,4,5,6]#注意這個操作與連接操作不同,extend修改了被擴展的序列即a,而連接只是臨時顯示并沒有變>>>a=[1,2,3]>>>b=[4,5,6]>>>a[len(a):]=b#也可以通過分片賦值來擴展,但是可讀性不強>>>a[1,2,3,4,5,6]>>>sentence=['we','are','good','student']>>>sentence.index('are')#index用于從列表中找出某個值第一個匹配項的索引位置1>>>numbers=[1,2,3,4,5,6,7]>>>numbers.insert(3,'four')#insert用于將對象插入列表中,和數(shù)據(jù)結(jié)構(gòu)中的鏈表操作非常相似>>>numbers[1,2,3,'four',4,5,6,7]>>>numbers=[1,2,3,4,5,6,7]>>>numbers[3:3]=['four']#也可以使用分片賦值的方法實現(xiàn),但是可讀性不強>>>numbers[1,2,3,'four',4,5,6,7]>>>x=[1,2,3]>>>x.pop()#出棧操作,和數(shù)據(jù)結(jié)構(gòu)中的棧操作一樣,即移除列表中的最后一個,并且返回該元素的值3>>>x[1,2]>>>x.pop()2>>>x=[1,2,3]>>>x.append(x.pop())#這個操作和數(shù)據(jù)結(jié)構(gòu)中的push、pop是一樣的,追加剛剛出棧的值,很有趣,最后得到的還是是原來的值>>>x[1,2,3]>>>x=['to','be','or','not','to','be']>>>x.remove('be')#remove用于移除列表中某個值的第一個匹配項>>>x#值得注意的是remove方法是沒有返回值的原位置改變方法,注意和pop的區(qū)別['to','or','not','to','be']>>>x=[1,2,3]>>>x.reverse()#將列表中的元素反向存放,注意這種方法改變了列表但沒有返回值>>>x[3,2,1]>>>x=[4,5,6,7,1,2,3]>>>x.sort()#sort用于在原位置對列表進行排序,也改變了序列的值,但是沒有返回值>>>

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論