Python詳細(xì)筆記完整_第1頁
Python詳細(xì)筆記完整_第2頁
Python詳細(xì)筆記完整_第3頁
Python詳細(xì)筆記完整_第4頁
Python詳細(xì)筆記完整_第5頁
已閱讀5頁,還剩177頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第1章Python入 第2章(1)編程基礎(chǔ)概 第2章(2)字符 第3章序 del刪 max和 元組 第4章控制語 第5章函數(shù)用法和底層分 第6章(1)面向?qū)ο蟪? init構(gòu)造方法和new方 del方法(析構(gòu)函數(shù))和垃圾回收機(jī) call方法和可調(diào)用對 第6章(2)面向?qū)ο筮M(jìn) 重寫str()方 第一章Python入 第二章編程基本概 第三章序 第四章控制語 第五章函 第六章面向?qū)ο缶?第七章模 第八章文件操作 第九章異常和錯(cuò) 第十章數(shù)值日期和復(fù)雜文本處 第11章GUI編 第12章【項(xiàng)目】坦克大戰(zhàn)游戲開 第13章圖形繪 第14章數(shù)據(jù)庫編 第15章多線程和并發(fā)編 第16章網(wǎng)絡(luò)編 第17章協(xié)程和異步 第18章腳本化系統(tǒng)管 第19章語音識(shí)別模塊_中英文實(shí)時(shí)翻譯項(xiàng) 第20章Windows下的Python開 第21章【實(shí)戰(zhàn)】算 第22章【實(shí)戰(zhàn)】手寫數(shù)據(jù)結(jié) 第23章正則表達(dá)式和復(fù)雜文本操 第24章函數(shù)式編程和高階函 第25章測 第26章【項(xiàng)目】手工實(shí)現(xiàn)神經(jīng)網(wǎng) 1章Python·簡介1989年發(fā)明,1991年正式公布。官網(wǎng):\hPython單詞是“大蟒蛇”的意思。但是龜叔不是喜歡蟒蛇才起這個(gè)名字,而是正在追?。河娨曄矂∑睹商帷づ缮娘w行馬戲團(tuán)》(MontyPythonandtheFlyingCircus)。\hPythonCCPythonimportimportt=forxinrange(360):java類似,大大提高了執(zhí)行速度,也實(shí)現(xiàn)了跨平臺(tái)。豐富的庫(豐富的標(biāo)準(zhǔn)庫,多種多樣的擴(kuò)展庫 起了像Python,性能像C)去開發(fā)。目前主要兩個(gè)版本:Python2Python31.Python3Python2.7,2.72Python3發(fā)Python開發(fā)入門Python\h勾選:“AddPythontoenvironmentvariable”。這樣就會(huì)將Python變量Path中,我們可以在windows的命令行模式下運(yùn)行Python解釋器。IDE(IntegratedDevelopmentEnvironment集成開發(fā)環(huán)境)Pythonpython.exe互模式會(huì)自動(dòng)打印輸出。Py文件中則必須使用print語句。IDLEIDLE介紹IDLEPython(語法智能提示、不同顏色顯示不同類型等IDLE是用純Python基于Tkinter編寫,最初的作者正是Python之父Guidovan Ctrl+ Ctrl+第一個(gè)PythonIDLEF5run-->runmodule執(zhí)行這個(gè)源程序。第一個(gè)Python程序中需要注意的小要點(diǎn):1(IDE4122import turtle 300 >>> >>> >>> importimport21)編程基礎(chǔ)概念本章開始我們通過創(chuàng)建Python文件,并執(zhí)行該文件。IDLEFile-->newPython文件,并可以編輯該文件內(nèi)容。我們也可以通過File-->save/saveas保存文件。一般保存成擴(kuò)展名為py的文件。代碼塊?!翱s進(jìn)”成為了Python語法強(qiáng)制的規(guī)定。器一般設(shè)置成:tab制表符就是4個(gè)空格。PythonPEP-8\hPythona >>>a=[10,20,30,40,\>>>[10,20,30,40,50,60,70,80,90,>>>a=>>>b='abcdefg\>>>>>>Python中,一切皆對象。每個(gè)對象由:標(biāo)識(shí)(identity)、類型(type)、value(值)可返回對象obj的標(biāo)識(shí)。操作??梢允褂胻ype(obj)獲得對象的所屬類型。>>>>>>a=>>>a>>>id(3)>>><classb我愛你>>>id(a)>>><class>>>print(a)>>>id(b)>>><classPython以雙下劃線開頭和結(jié)尾的名稱通常有特殊含義,盡量避免這種寫法。比如:init是類>>>help()help>keywords math,os,phone,MyPhone、MyClass變量名=表達(dá)式>>>>>>Traceback(mostrecentcallFile"<pyshell#17>",line1,in<module>NameError:name'my_name'isnot >>>>>>>>>del>>>Traceback(mostrecentcallFile"<pyshell#20>",line1,in<module>NameError:name'x'isnot 相當(dāng)于:x=123;y=123 >>>>>>>>>>>>print(a,b)21>>>MAX_SPEED=>>>print(MAX_SPEED)MAX_SPEED >>>print(MAX_SPEED)由字符組成的序列。“Python支持整數(shù)(如:50,520)和浮點(diǎn)數(shù)(如:3.14,10.0,1.23e2),我們可以對數(shù)字做如下+5-*/3%3冪8>>>>>>a=>>>a>>>a=>>>a>>>a=>>>a>>>3>>>2**3>>>Traceback(mostrecentcallFile"<pyshell#37>",line1,in<module>ZeroDivisionError:divisionby>>>divmod(10,5)(2,0)>>>divmod(10,3)(3,1)>>>>>>Traceback(mostrecentcallFile"<pyshell#31>",line1,in<module>ZeroDivisionError:divisionby>>>divmod(13,3)(4,1) 1 ·0x0X, f>>>>>>>>>0b101>>>SyntaxError:invalid>>>0o10>>>0xff>>>0xf>>>0x10 >>>>>>int("456")>>>Traceback(mostrecentcallFile"<pyshell#41>",line1,in<module>ValueError:invalidliteralforint()withbase10:>>>Traceback(mostrecentcallFile"<pyshell#42>",line1,inValueError:invalidliteralforint()withbase10:Python2中,int是32位,可以存儲(chǔ)從-2147483648到2147483647的整數(shù)(約±21億)。Long類型是64位,可以存儲(chǔ):-2^63--2^63-1之間的數(shù)值。Python3int可以存儲(chǔ)任意大小的整數(shù),long>>>>>>googol=>>>googolPython3中可以做超大數(shù)的計(jì)算,而不會(huì)造成“整數(shù)溢出”,這也是Python特別適ab10形式的科學(xué)計(jì)數(shù)法表示。比如:3.14,表示成:314E-2314e-2。的結(jié)果是a=a+1 a+=1a+=a=a+a-=a=a-a*=a=a*a/=a=a/a//=a=a**=a=a%=a=a%計(jì)算機(jī)中時(shí)間的表示是從“197011日00:00:00”開始,以毫秒(1/1000)進(jìn)行計(jì)算。我們也把1970年這個(gè)時(shí)刻成為“unix時(shí)間點(diǎn)”。毫秒>>>>>>import>>>b=>>>>>>totalMinutes=>>>totalMinutes>>>totalMinutes=>>>totalMinutes>>>totalHours=>>>totalHours>>>totalDays=>>>totalDays>>>totalYears=importturtleimportimportturtleimportx1,y1=100,100x2,y2=100,-x3,y3=-100,-x4,y4=-distance=math.sqrt((x1-x4)**2+(y1-y4)**2)Python3TrueFalse10,甚至可以和數(shù)>>>>>>a=>>>b=>>>a+b等于-比較對象的值是否相等(ab)返回False等于-比較對象的值是否相等(ab)返回False(ab)返回>大于-返回x(ab)返回False<小于-返回xy(ab)返回true大于等于-返回xy(ab)返回False小于等于-返回xy(ab)返回truexorxfalsexandxtruey xtruexfalseisisnotis與==區(qū)別:is==用于判斷引用變量引用對象的值是否相等,默認(rèn)eq象。需要注意的是,這僅僅是在命令行中執(zhí)行,而在Pycharm1、is比較兩個(gè)對象的id24、is運(yùn)算符比==效率高,在變量和None進(jìn)行比較時(shí),應(yīng)該使用is>>>>>>a=>>>b=>>>a==>>>aisb>>>id(a)>>>id(b)>>>c=>>>d=>>>cisd>>>id(c)>>>id(d)and <<,~>>>a=>>>3<a<10 >>>a=>>>b=>>>c=>>>bin(c) >>>bin(c&b)>>>bin(c^b)>>>a= >>>a= 1 ==> “3”+“2”==> [10,20,30]*3==>sum+= +=sum=sum+ a+ -=num=num-a*=a=a*a=a/a=a=a%a=a=a=a=a=~*/%+>>&位^<=<><>===%=/=//=-=+=*=isisinnotnotorpython510x13y1)(ab9(512x 22)字符串字符串的本質(zhì)是:字符序列。Python的字符串是不可變的,我們無法對原字符串做任默認(rèn)就是16位Unicode編碼,ASCII碼是Unicode編碼的子集。ordUnicode使用內(nèi)置函數(shù)chr()可以把十進(jìn)制數(shù)字轉(zhuǎn)換成對應(yīng)的字符。>>>>>>ord('A')ord('高')>>>chr(66)ord('淇') >>>a="I'ma>>>print(a)I'mateacher!>>>b='my_nameis>>>print(b)my_nameis"TOM">>>resume='''name="gaoqi" >>>print(resume) >>>c=>>>len(c)d'abc>>>len(d)>>>>>>a=>>>>>>print(a)>>>print('aaabb\可以使用+將多個(gè)字符串拼接起來。例如:’aa’+’bb’==>’aabb>>>>>>a=>>>>>>b=>>>>>>>>>a=>>>符。我們可以自己通過參數(shù)end=“任意字符串”。實(shí)現(xiàn)末尾添加任何內(nèi)容:sxtmynameinput("請輸入名字:")mynamestr(5.20)==> str(True)==>print()函數(shù)時(shí),解釋器自動(dòng)調(diào)用了str()將非字符串的對象轉(zhuǎn)成了字符串。我們0,第二個(gè)偏移量是1,以此類推。直到len(str)-1>>>>>>a=>>>>>>>>>>>>a[26->>>a[->>>a[->>>a[-Traceback(mostrecentcallFile"<pyshell#91>",line1,in<module>IndexError:stringindexoutof>>>>>>a=>>>Traceback(mostrecentcallFile"<pyshell#94line1in<module>TypeError:'str'objectdoesnotsupportitem>>>>>>a=>>>aa.replace('c'ab字符串。內(nèi)存圖如下:slice[起始偏移量start:終止偏移量end:步長step] [startstart[start:endstartend-[start:end:stepstart倒數(shù)第八個(gè)到倒數(shù)第步長為負(fù),從右到左偏移量小于0則會(huì)當(dāng)做0,終止偏移量大于“長度-1”會(huì)被當(dāng)成-1。例如:>>>"abcdefg"[3:50]將”tobeornottobe>>>>>>a="tobeornotto>>>['to','be','or','not','to',>>>a.split('be')['to','ornotto','']()的作用和>>>>>>a=>>>'*'.join(a)joinjoinjoin(),不同的效率(importimporttime01=time.time() a=""foriinaa+=time02=time.time() time03=time.time() li=[]foriinrange(1000000):a=time04=time.time() Python支持字符串駐留機(jī)制,對于符合標(biāo)識(shí)符規(guī)則的字符串(僅包含下劃線(_)、字母>>>>>>a=>>>b=>>>aisb>>>c=>>>d=>>>cisd>>>str1=>>>str2=>>> is>>>str1+str2=="aabb"isnotisid(obj1)是否和id(obj2)相等。innotina18623我們可以通過strip()去除字符串首尾指定信息。通過lstrip()去除字符串左邊指定信息,>>>>>>"*s*x*t*".strip("*")>>>"*s*x*t*".lstrip("*")>>>"*s*x*t*".rstrip("*")>>>" a= 產(chǎn)生新的字符串,首字母 產(chǎn)生新的字符串,每個(gè)單 產(chǎn)生新的字符串,所有字 PROGRAMMING,產(chǎn)生新的字符串,所有字 產(chǎn)生新的,所有字母大小 PROGRAMMING,>>>>>>a.center(10,"*")>>>a.center(10) >>>a.ljust(10,"*")isalpha( isspace(isupperislower()是否為小寫字母sxtisalpha()>>>"234.3".isdigit()>>>"23423".isdigit()>>>"aB".isupper()>>>"A".isupper()aa{0}a.format("高淇",18)a.format("高希希",6)b{0},年齡是{1}。{0>>>cname},年齡是c.format(age=19,name='高淇')'名字是高淇,年齡是19'>>>>>>>>>"我是a{0},我的存款有a.format("高淇",3888.234342)'我是高淇,我的存款有3888.23'355數(shù)字補(bǔ)x數(shù)字補(bǔ)x右對齊(默認(rèn),寬度為左對齊(寬度為中間對齊(寬度為能創(chuàng)建新的字符串對象。但是,經(jīng)常我們確實(shí)需要原地修改字符串,可以使用io.StringIO對象或array模塊。>>>>>>import>>>>>>s="hello,>>>sio=>>><_io.StringIOobjectat>>>sio.getvalue()'hello,sxt'>>>sio.seek(7)>>>sio.write("g")>>>sio.getvalue()'hello,gxt'python510x13y1)(ab9(512x 將”tobeornottobe>>>a=>>>b=>>>c=>>>d=>>>ais #輸出 >>>cis cname},年齡是>>>3a=a=[10,20,30,40]a[10,20,'abc',True]xlistlistindex>>>a=a a >>>a=>>>[0,1,2,3,4,5,6,7,8,>>>a=>>>['g','a','o','q','i',',','s','x',range([startendstep])start參數(shù):可選,表示起始數(shù)字。默認(rèn)是0end參數(shù):必選,表示結(jié)尾數(shù)字。step1python3rangerangelist()方法將其>>>list(range(3,15,2))[3,5,7,9,11,13][15,14,13,12,11,10,9,8,7,6,5,[3,2,1,0,-1,-2,-3,-4,-5,-6,-7,-8,-和if語句。在此,僅做基本介紹。在我們控制語句后面,會(huì)詳細(xì)講解更多列表推導(dǎo)式的細(xì)a in >>>[0,2,4,6,a[x*2forxinrange(100if if>>>[0,18,36,54,72,90,108,126,144,162,180,>>>a=>>>>>>[20,40,>>>a=>>>id(a)>>>a=>>>id(a)>>>a=>>>id(a)>>>>>>id(a)insert()方法可以將指定的元素插入到列表對象的任意制定位置。這樣會(huì)讓插入位置后>>>a=>>>>>>[10,20,100,>>>a=>>>b=>>>a['sxt',100]>>>['sxt',100,'sxt',100,'sxt',>>>c=>>>d=>>>>>>del刪除>>>a=>>>del>>>a>>>a=>>>>>>[10,20,30,>>>a.pop(1)>>>[10,30,>>>a=>>>>>>[10,30,40,50,20,30,20,>>>Traceback(mostrecentcallFile"<pyshell#208>",line1,in<module>ValueError:list.remove(x):xnotin>>>a=>>>a[2]>>>Traceback(mostrecentcallFile"<pyshell#211>",line1,in<module>IndexError:listindexoutofstart和end指定了搜索的范圍。>>>a=>>>a.index(20)>>>a.index(20,3) 5 6>>>a=>>>a.count(20)>>>a=>>>len(a)大于0則表示存在。但是,一般我們會(huì)使用更加簡潔的in關(guān)鍵字來判斷,直接返回True或False。>>>a=>>>20ina>>>100notina>>>30notinaslice[起始偏移量start:終止偏移量end[:步長step]] [startstart索引開始到[start:endstart到end-[start:end:step]從start提[20,40,倒數(shù)第五個(gè)到倒數(shù)[70,60,50,40,30,20,偏移量小于0則會(huì)當(dāng)做0,終止偏移量大于“長度-1”會(huì)被當(dāng)成”長度-1”。例如:>>>[20,30,forobj list1=[30,40,50]list2=list2list2list2list1=[30,40,50]list2=[]+>>>a=>>>id(a) >>>[10,20,30,>>>a= >>>[40,30,20,>>>import >>>[20,40,30,>>>a=>>>id(a)a >>>[10,20,30,>>>id(a)>>>a=>>>id(a)>>>b=>>>[10,20,30,>>>id(a)>>>id(b)c >>>[40,30,20,reversedreverse()方法不同的是,內(nèi)置函數(shù)>>>a=>>>c=>>><list_reverseiteratorobjectat>>>list(c)[40,30,10,20]>>>list(c)max和min[40,30,20,10]>>>a=>>>max(a)>>>min(a)>>>a=>>>sum(a)aa=]print(a[1][0],a[1][1],a[1][2])高小二1920000aa=]forminforninrange(4):a= a=>>>a=>>><class>>>a= a=>>><class通過tuple()創(chuàng)建元組b=tuple() b=tuple("abc")b=tuple(range(3))b=tuple([2,3,4])>>>>>>a=>>>Traceback(mostrecentcallFile"<pyshell#313>",line1,in<module>TypeError:'tuple'objectdoesnotsupportitem>>>a=>>>a[1]>>>(10,>>>a[:4](20,10,30,9)序,只能使用內(nèi)置函數(shù)sorted(tupleObj),并生成新的列表對象。>>>a=>>>sorted(a)[8,9,10,20,30]>>>a=>>>b=>>>c=>>>d=>>>[(10,40,70),(20,50,80),(30,60,我們可以通過生成器對象,轉(zhuǎn)化成列表或者元組。也可以使用生成器對象的next()>>>>>>s=(x*2forxin>>><generatorobject<genexpr>at>>>tuple(s)(0,2,4,6,8)>>>list(s) >>><generatorobject<genexpr>at>>>tuple(s)>>>s=(x*2forxin>>>s.next()>>>s.next()>>>s.next()a=>>>a=>>>b=>>>a=c d >>>k=>>>v=>>>d=>>>{'name':'gaoqi','age':18,'job':>>>a=>>>{'name':None,'age':None,'job':aname':'gaoqi','age':18,'job':'programmer'} >>>a=>>>Traceback(mostrecentcallFile"<pyshell#374>",line1,in<module>KeyError:通過getNone;也可以設(shè)定指定鍵不存在時(shí)默認(rèn)返回的對象。推薦使用get()獲取“值對象”。>>>a.get('sex','一個(gè)男人')>>>dict_items([('name','gaoqi'),('age',18),('job',>>>a.keys()>>>dict_values(['gaoqi',18,len>>>a=>>>"name"ina>>>a=>>>>>>{'namegaoqi'age16'jobprogrammer'address1使用update(key>>>a=={'>>>>>>{'namegaoxixi''age18'jobprogrammermoney1000'sexdelclear()刪除所有鍵值對;pop()刪除指定>>>a=>>>>>>{'age':18,'job':>>>b=>>>bpopitem():隨機(jī)刪除和返回該鍵值對。字典是“無序可變序列”,因此沒有第一個(gè)元素、最后一個(gè)元素的概念;popitem彈出隨機(jī)的項(xiàng),因?yàn)樽值洳]有"最后的元素"或者其>>>a=>>>a.popitem()('job','programmer')>>>{'name':'gaoqi','age':>>>a.popitem()('age',18)>>>>>>>>>x>>>y>>>z>>>>>>a>>>>>>a>>>b序列解包用于字典時(shí),默認(rèn)是對“鍵”進(jìn)行操作;如果需要對鍵值對操作,則需要使用items();如果需要對“值”進(jìn)行操作,則需要使用values();>>>s= >>> >>>name >>>name={={={tb=foriinrange(len(tb)): #i-->0,1,2foriinrange(len(tb)):每個(gè)單元叫做bucket。每個(gè)bucket有兩部分:一個(gè)是鍵對象的引用,一個(gè)是值對象的引>>>>>>a=我們要把”name”=”gaoqi”這個(gè)鍵值對放到字典對象a中,首先第一步需要計(jì)算鍵”name”的散列值。Python中可以通過hash()來計(jì)算。>>>>>>由于數(shù)組長度為8,我們可以拿計(jì)算出的散列值的最右邊3位數(shù)字作為偏移量,即“101”,十進(jìn)制是數(shù)字5。我們查看偏移量5,對應(yīng)的bucket是否為空。如果為空,則4。再查看偏移量為4的bucketbucket>>>>>>和存儲(chǔ)的底層流程算法一致,也是依次取散列值的不同位置的數(shù)字。假設(shè)數(shù)組長度為55bucketNone。如果不為空,則將這個(gè)bucket的鍵對象計(jì)算對應(yīng)散列值,和我們的散列值進(jìn)行比較,如果相等。則將對仍然沒有找到。則返回None。流程圖如下:112支持通過eq233>>>a=>>>{3,5,>>>>>>{9,3,5,使用set(),將列表、元組等可迭代對象轉(zhuǎn)成集合。如果原來數(shù)據(jù)存在重復(fù)數(shù)據(jù),則只保>>>a=>>>b=>>>{'b','a',>>>a=>>>>>>{10,50,>>>a=>>>b= {1,3,'sxt','he', a- {1, {1,3,'sxt','he', {1,a100,200,300]推導(dǎo)式生成列表:a[x*2forxinrange(100ifx%9==0 4章控制語句IDE是PyCharm。當(dāng)然,還有其他IDE可供我們使用:\h根據(jù)win系統(tǒng)是64還是32位,選擇不同的類型。301.選擇:“CreateNewProjectInterpreter部分是選擇新建項(xiàng)目所依賴的python庫,第一個(gè)選項(xiàng)會(huì)在項(xiàng)目中建立一個(gè)系統(tǒng)安裝的python獨(dú)立運(yùn)行。ExistingInterpreterpythonvenv器就可以選擇本地安裝的python環(huán)境。NewEnvironment可以在BaseInterpreter系統(tǒng)中安裝的Python解釋器,這樣做的好處如下:‘·把字體調(diào)大一些 if條件表達(dá)式:numnuminput("輸入一個(gè)數(shù)字:")ifint(num)<10:False、0、0.0、空值None、空序列對象(空列表、空元祖、空集合、空字典、空字符串)、空range對象、空迭代對象。if3:if3: a=[] ifa:s="False" ifs:c=ifif3<c andif andc<20·if3<cand 條件表達(dá)式:1/12/numnuminput("輸入一個(gè)數(shù)字:")ifint(num)<10: if printnumifint(num)<10elseif條件表達(dá)式11/elif條件表達(dá)式2/...elif條件表達(dá)式n:nn]60)、及格(60-79)、良scorescoreint(input("請輸入分?jǐn)?shù)"))grade=''gradegradegrade="良好"grade="優(yōu)秀"scorescoreint(input("請輸入分?jǐn)?shù)"))grade=''ifscore<60grade="不及格" score<80:grade="及格" score<90:grade="良好" gradexxint(inputxyint(inputyif(x==0andy==0):print("原點(diǎn)")elif(x==0):print("y軸")elif(x>0andy>0):print("第一象限")elif(x<0andy>0):print("第二象限")elif(x<0andy<0):print("第三象限")if表達(dá)式if表達(dá)式2if表達(dá)式0-10090A,80B,70C,60以上是D。60以下是E。scoreint(input(0-100))grade=""ifscore>100orscoreint(input(0-100))ifgrade="A"elifscore>=80:grade='B'elifscore>=70:grade='C'elifscore>=60:grade='D'grade=scoreint(input(0-100))degree="ABCDE"num=ifscore>100orscoreint(input(0-100))num=score//10ifnum<6:num=5復(fù)執(zhí)行循環(huán)體里的語句。在每次執(zhí)行完后都會(huì)判斷一次條件是否為True,如果為True則重復(fù)執(zhí)行循環(huán)體里的語句。圖示如下: numnum=whilenum<=10:num+=1numnum=sum_all=sum_evensum_even sum_odd=0 whilenum<=100:sum_all+=ifnum%2==0:sum_even+=numelse:sum_odd+=numnum print("1-100sum_all)print("1-100奇數(shù)的累加和",sum_odd) forxforx dd={'name':'gaoqi','age':18,'address':'西三旗001號(hào)樓'}forx #遍歷字典所有的keyforx forx forx range(start, startend(end)start0開始。step是可選的步長,默認(rèn)為1。如下是幾種典型示例:foriin 產(chǎn)生序列:012345678foriin 產(chǎn)生序列:345678foriin for1-1001-100計(jì)算1-100之間奇數(shù)的累加和。sum_allsum_all=sum_even=sum_odd=fornuminsum_all+=ififnum%2==0:sum_even+=numelse:sum_odd+=num0000011111222223333344444forxinrange(5):foryinrange(5): forforminforninrange(1,m+1): 4*3=125*2=105*3=155*4=206*2=126*3=186*4=246*5=307*2=147*3=217*4=287*5=357*6=428*2=168*3=248*4=328*5=408*6=488*7=569*2=189*3=279*4=369*5=459*6=549*7=639*8=72r1=r1=dict(name="高小一",age=18,salary=30000,city="北京")r2=dict(name="高小二",age=19,salary=20000,city="上海")r3=dict(name="高小三",age=20,salary=10000,city="深圳")tb=[r1,r2,r3]forxinifx.get("salary")>15000:breakwhileforbreakwhilewhileainput("請輸入一個(gè)字符(Qq)")ifa.upper()=='Q':【操作】要求輸入員工的薪資,若薪資小于0則重新輸入。最后打印出錄入員工的數(shù)量和empNumempNum=salarySum=0salarys=[]whileTrue:sinput("請輸入員工的薪資(QqififempNum+=1salarySum+=float(s)請輸入員工的薪資(Qq)2000請輸入員工的薪資(Qq)3000請輸入員工的薪資(Qq)4000請輸入員工的薪資(Qq)5000請輸入員工的薪資(按Q或q結(jié)束)Q員工數(shù)4錄入薪資:[2000.03000.04000.0結(jié)束,則會(huì)執(zhí)行else子句,否則不執(zhí)行。語法格式如下: 44salarySum=salarySum=0salarys=[]foriinsinput4(QqififsalarySum+=float(s)importstart=time.time()foriinrange(1000):result=forminrange(10000):end=time.time()start2=time.time()foriinresult=[]c=i*1000forminrange(10000):end2=time.time()我們可以通過namesnamesages=(18,16,20,25)forname,age,jobinzip(names,ages,jobs):PythonPython in可迭代對象 in可迭代對 >>>[xforxinrange(1,5)][1,2,3,4]>>>[x*2forxinrange(1,5)][2,4,6,8]>>>[x*2forxinrange(1,20)ifx%5==0][10,20,30]>>>[a in"abcdefg"]['a','b','c','d','e','f','g']>>>cells=[(row,col)for rowinrange(1,10)forcolinrange(1,10)] >>>forcellincells: iffor>>>my_text='iloveyou,ilovesxt,ilove>>>char_count= forcin>>>{'':9,'i':4,'l':3,'o':5,'v':3,'e':3,'y':1,'u':1,',':2,'s':1,'x':1,'t':1,'g':1,'a':1,'q': in可迭代對象 in可迭代對 >>>{xforxinrange(1,100)if{99,36,72,9,45,81,18,54,90,27,>>>(xforxinrange(1,100)if<generatorobject<genexpr>at>>>gnt=(xforxinrange(1,100)if>>>forxingnt:print(x,end='')9182736455463728190>>>forxingnt:print(x,end='')importimportt=my_colors=foriinrange(10):#01234 importwidth=num=x1=[(-400,400),(-y1=[(-400,400),(-400,400-t=turtle.Pen()foriinrange(0,19):foriinrange(0,19): 輸入一個(gè)學(xué)生的成績,將其轉(zhuǎn)化成簡單描述:不及格(小于60)、及格(60-79)、良好0-10090A,80B,70C,60是D。60以下是E利用for循環(huán),計(jì)算1-100之間數(shù)字的累加和;計(jì)算1-100 員工一共4人。錄入這4位員工的薪資。全部錄入后,打印提示“您已經(jīng)全部錄入45我們前面使用的PythonimportPython中,定義函數(shù)的語法如下: 函數(shù)名([參數(shù)列表]): ifa>b:20較大值30較大值printMaxprintMax(a,b)。ab在調(diào)用函數(shù)時(shí),傳遞的參數(shù)稱為“實(shí)際參數(shù)”,簡稱“實(shí)參”。上面代碼中,printMax(10,20),10和20就是實(shí)際參數(shù)。defdefhelp(函數(shù)名.docHelpHelponfunctionprint_starinmodulemaindefdefprint_star(n):defmy_avg(a,b):returndefmy_avg(a,b):returncmy_avg(20,30)defdefprint_star(n):c=print_star<functionprint_starat0x0000000002BB8620>行print_star(3)的效果是完全一致的。Python中,圓括號(hào)意味著調(diào)用函數(shù)。在沒有圓括號(hào)的情況下,Python會(huì)把函數(shù)當(dāng)做普通對象。zhengshu=intglobalaa=defglobalaa=defa=aa=def234{'c':4,'b':3,'a':2}{'name':'main','doc':None,'package':None,'loader':<class'_frozen_importlib.BuiltinImporter'>,'spec':None,'annotations':{},'builtins':<module'builtins'(built-in)>,'file':'E:\\PythonExec\\if_test01.py','a':100,'f1':<functionf1at0x0000000002BB8620>}importmathimportdefstart=foriinrange(10000000):end=time.time()defb=start=foriinrange(10000000):end=time.time()函數(shù)的參數(shù)傳遞本質(zhì)上就是:從實(shí)參到形參的賦值操作。Python所有的賦值操作都是“引用的賦值”。所以,Python中參數(shù)的傳遞都是“引用傳遞”,不bb=def m:b:[10,20,aa=defn=n+200n:n:a:importcopydeftestCopy():a=[10,20,[5,b=print("a",print("b",b) print("a",print("b",defa=[10,20,[5,b=print("a",print("b",b) print("a",print("b",

a[10,20,[5,b[10,20,[5,a[10,20,[5,6,b[10,20,[5,6,7],a[10,20,[5,b[10,20,[5,a[10,20,[5,b[10,20,[5,6,7],a=deftest01(m):m[2][0]=888a:m:(10,20,[888,m:(10,20,[888,defdef 23Traceback(mostrecentcallFile"E:\PythonExec\if_test01.py",line5,in<module>TypeError:f1()missing1requiredpositionalargument:deff1(a,b,c=10,d=20):deff1(a,b,c=10,d=20):

891089198919defdef 892030defdefdef 89(19,89{'name':'gaoqi','age':89(20,30){'name':'gaoqi','age':defdef (2,)3的方法。lambda函數(shù)實(shí)際生成了一個(gè)函數(shù)對象。 ff=lambdaa,b,c:a+b+cg=[lambdaa:a*2,lambdab:b*3,lambdac:c*4]<function<lambda>at0x0000000002BB8620>1221str語法:eval(source[,globals[,locals]])->valuesourcePythoncompile()返回的代碼對象globals:可選。必須是dictionarys="print('abcde')"a=b=c=dict1=d=eval("a+b",dict1)似于大家中學(xué)數(shù)學(xué)學(xué)習(xí)過的“數(shù)學(xué)歸納法”。每個(gè)遞歸函數(shù)必須包含兩個(gè)部分:nn-1【操作】使用遞歸函數(shù)計(jì)算階乘defdefifn==1:return1returnn*factorial(n-1)foriinrange(1,6):1!=2!=3!=4!= print('f1defprint('f2f1running...f2封裝-數(shù)據(jù)隱藏貫徹 Yourself)原defprintName(isChinese,name,familyName):definner_print(a,b):print("{0}ifdefprintChineseName(name,familyName):print("{0}{1}".format(familyName,name))defprintEnglishName(name,familyName):print("{0}{1}".format(name,familyName)) nonlocala=defb=defdefnonlocalprint("innerb=global a=print("outerb:",b)PythonLEGBLocal-->Enclosed-->Global-->Builtin Built 指的是Python如果某個(gè)namelocal)命名空間中沒有找到,接下來就會(huì)在閉包作用域間中進(jìn)行查找,最后會(huì)在內(nèi)建(built-in)命名空間搜索(如果一個(gè)名稱在所有命名空間中都沒有找到,就會(huì)產(chǎn)生一個(gè)NameError)。#測試#測試str="global"defouter():str=defstr="inner"strLEBGm(n)12... 61)面向?qū)ο蟪醪矫嫦驅(qū)ο螅∣bjectorientedProgramming,OOP)編程的思想主要是針對大型Python完全采用了面向?qū)ο蟮乃枷?,是真正面向?qū)ο蟮木幊陶Z言,完全支持面向一步一步,最終完成。這個(gè)適合簡單任務(wù),不需要過多協(xié)作的情況下。比如,如何開車?1.發(fā)動(dòng)車2.掛擋3.踩油門4.走你面向過程適合簡單、不需要協(xié)作的事務(wù)。但是當(dāng)我們思考比較復(fù)雜的問題,比如“如因此,面向?qū)ο罂梢詭椭覀儚暮暧^上把握、從整體上分析整個(gè)系統(tǒng)。但是,具體到隨著數(shù)據(jù)變多進(jìn)化“數(shù)組”;數(shù)據(jù)類型變復(fù)雜,進(jìn)化出了“結(jié)構(gòu)體”;處理數(shù)據(jù)的方式和像30,40,50.4等這些數(shù)字,可以看做是簡單數(shù)據(jù)。最初的計(jì)算機(jī)編程,都是像這樣structintchardoubleclassclasscompany count=0 definit(self,name,score):=name self.score=scoreStudent.count=def classclassdefinit(self,name,score): =name self.score=def#s1init 創(chuàng)建對象,我們需要定義構(gòu)造函數(shù)init()方法。構(gòu)造方法用于執(zhí)行“實(shí)例對象的初始化工init名稱固定,必須為:init 和score。defdefinit=name self.score=score比如:s1=Student('張三',80)initnew如果我們不定義init方法,系統(tǒng)會(huì)提供一個(gè)默認(rèn)的init方法。如果我們定義了帶參的init方法,系統(tǒng)不創(chuàng)建默認(rèn)的init方法。self必須為構(gòu)造函數(shù)的第一個(gè)參數(shù),名字可以任意修改。但一般遵守慣例,都叫做self。實(shí)例屬性一般在init()方法中通過如下代碼定義:self.實(shí)例屬性名=初始值selfobj01=類名 #創(chuàng)建對象,調(diào)用init()初始化屬obj01.實(shí)例屬性名= 方法名(self[,形參列表]):aa=obj.pass空語

類名:”。實(shí)際上,當(dāng)解釋器執(zhí)行class語句時(shí),classclass Stu2Stu2=Students1=Stu2()<main.Studentobjectat量Stu2,也能實(shí)現(xiàn)相關(guān)的調(diào)用。說明,確實(shí)創(chuàng)建了“類對象”?!咀ⅰ縫ass遇到暫時(shí)不知道往方法或者類中加入什么時(shí),可以先用pass占位,后期再補(bǔ)上。 類變量名=初始值classclasscompany="SXT" count=0 definit=name self.score=scoreStudent.countStudent.count=def#s1init我的公司是:SXT張三的分?jǐn)?shù)是:80 [,形參列表]):clsclassclasscompany=defdefprintCompany(cls): 靜態(tài)方法名([形參列表]):classclasscompany defadd(a,b): returna+bclassclasscompany="尚學(xué)堂 count definit=name self.score=scoreStudent.count=def#s1init del方法稱為“析構(gòu)方法”,用于實(shí)現(xiàn)對象被銷毀時(shí)所需的操作。比如:釋放對象Python(0),由垃圾回收器調(diào)用del方法。deldel方法。系統(tǒng)會(huì)自動(dòng)提供del方法,一般不需要自定義析構(gòu)方法。classdefdelp1=Person()p2=Person()delp2銷毀對象:<main.Personobjectat0x02175610>銷毀對象:<main.Personobjectat 定義了callclassclassdefcall(self,yearSalary=salary*12daySalary=hourSalary=s={'monthSalary':5000,'yearSalary':60000,'daySalary':166,'hourSalary':在其他語言中,可以定義多個(gè)重名的方法,只要保證方法簽名唯一即可。方法簽名包含3Python中,方法的的參數(shù)沒有聲明類型(調(diào)用時(shí)確定參數(shù)的類型),參數(shù)的數(shù)量也可以由建議:不要使用重名的方法!Python中方法沒有重載。classclassdefdefp1=classdefdefdefPerson.playPerson.play=play_gamePerson.work=work2p=Person()類外部可以通過“_類名classcompany definit=self.age defdefprint("我的公司是:",Employee.print(,"的年齡是:",self.self.def p1Employee( print(p1._Employeeage) 性。通過ee. ['_Personage', '_Personleg_num', '_Personsleep', 'class', 'delattr','dict','dir','doc','eq','format','ge','getattribute','gt'hash','init','init_subclass','le','lt','module','ne','new','reduce','reduce_ex','repr','setattr','sizeof','str','subclasshook','weakref','name','say_age']腿的數(shù)目:高淇的年齡是:18從打印的Person對象所有屬性我們可以看出。私有屬性“age”在實(shí)際存儲(chǔ)時(shí)是按照“_Personage”這個(gè)屬性來存儲(chǔ)的。這也就是為什么我們不能直接使用“age”而可以使用“_Personage”的根本原因。classdefreturnemp1= @property@propertyemp1.salary=1-10000的數(shù)字。這時(shí)候,我們就需要通過getter、setter方法來處理。classdefdefinit=self.salary=def{1}".format(self.salary,(12*self.returnself.defself.salary=emp1Employee(emp1.salary=-_xxx:保護(hù)成員,不能用“frommoduleimport*”導(dǎo)入,只有類對象和子類對象能訪xxxxxx:類中的私有成員,只有類對象自己能訪問,子類對象也不能訪問。(但,在類外_類名xxxPython)classclasscompany="尚學(xué)堂 count definit=name self.score=scoreStudent.count=def#s1init和height不傳,則默認(rèn)是100.getArea(62)面向?qū)ο筮M(jìn)階Python支持多重繼承,一個(gè)子類可以繼承多個(gè)父類。繼承的語法格式如下: 子類類名(父類1[,父類2,...]):類,里面定義了一些所有類共有的默認(rèn)實(shí)現(xiàn),比如:new()。父類名.init(self,參數(shù)列表)classclassdefinit(self,name,age):=nameselfself.age=defprint(,"的年齡是:",self.classdefinit(self,name,age,score):self.score=scorePerson.init(self,name,age)#構(gòu)造函數(shù)中包含調(diào)用父類構(gòu)造函數(shù)。根據(jù)需要,不是必須。子類并不會(huì)自動(dòng)調(diào)用父類的我們必s1Student("張三",15,85)張三的年齡是:['_Personage','class','delattr','dict','dir','doc','eq','format','ge','getattribute','gt','hash','init','init_subclass','le','lt','module','ne','new','reduce','reduce_ex','repr','setattr','sizeof','str','subclasshook','weakref','name','say_age','score']classclassdefinit(self,name,age):=nameself.age=defdefclassdefinitself.score=Person.init defdefs1Student張三的分?jǐn)?shù)是:85報(bào)告老師,我是張三張三的年齡是:15mro()或者類的屬性mroclassA:passclassclassA:passclassB(A):passclass[<class'main.C'>,<class'main.B'>,<class'main.A'>,<class入研究一下object類的結(jié)構(gòu)。對于我們繼續(xù)深入學(xué)習(xí)Python很有好處。為了深入學(xué)習(xí)對象,我們先學(xué)習(xí)內(nèi)置函數(shù)dir(),他可以讓我們方便的看到指定對象所有的classclassdefdefinit(self,name,age):=nameself.age=agedefsay_age(self):obj=object()s2Person("高淇",18)['['class','delattr','dir','doc','eq','format','ge','getattribute','gt','hash','init','init_subclass','le','lt','ne','new','reduce','reduce_ex','repr','setattr','sizeof','str','subclasshook']['class','delattr','dict','dir','doc','eq','format','ge','getattribute','gt','hash','init','init_subclass','le','lt','module','ne','new','reduce','reduce_ex','repr','setattr','sizeof','str','subclasshook','weakref','age','name','say_age']

age<class'int'>name<class'str'>say_age<class objectstrstr()經(jīng)常用于print()方法,幫助我們查看對象的信息。str()可以重寫。classclassdefinit(self,name,age):=nameself.age=agedefstrreturn"名字是:{0},年齡是{1}".format(,self.pPerson("高淇",18)cc=classdefclassdefclassdefMRO(MethodResolutionOrder):方法解析順序。我們可以通過mro()方法獲得classdefdefprint("sayclassdefdefprint("sayclassdefc=classdefprint("A:print("sayclassdefprint("sayb= <main.Bobjectat0x007A5690>sayAAAsayclassclassdefclassdefclassdefdefif aa=b=c=d=a.add(b)c=d=對象創(chuàng)建:prepr,a.xxx=lt,le,gt,ge,or,xor,lshift,mul,truediv,modclassdefinit(self,name):=namedefadd(self,ifreturn"{0}--{1}".format(,)defmul(self,ifisinstance(other,int):return*otherp1=Person("高淇")p2Person("高希希")x=p1+p2obj.obj.class.class.class.class.subclassesclassclassclassC(B,A):definit(self,nn):self.nn=nndefc=C(3)print(c.dict)print(c.class)print(C.bases)print(A.subclasses['class','delattr','dict','dir','doc','eq','format','ge','getattribute','gt','hash','init','init_subclass','le','lt','module','ne','new','reduce','reduce_ex','repr','setattr','sizeof','str','subclasshook','weakref','cc','nn']<class'main(<class'main.B'>,<class'main[<class'main.C'>,<class'main.B'>,<class'main.A'>,<class'object'>][<class'

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論