版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
零基礎(chǔ)Python教程#031for循環(huán),讓代碼更靈活!復(fù)習(xí)1、while語句循環(huán)2、break跳出循環(huán)3、continue結(jié)束本次循環(huán),繼續(xù)進(jìn)行下一次循環(huán)補(bǔ)充Break和continue都可以用在循環(huán)語句中起到相應(yīng)的作用For語句循環(huán)語法格式:For值in數(shù)組范圍:
默認(rèn)情況下數(shù)組范圍從第一個值開始遍歷,直到最后一個值被遍歷完后結(jié)注意:循環(huán)中還是可以使用break來中斷的舉例for循環(huán)"""
劉金玉編程,編程創(chuàng)造城市
輸出1~10之間所有的整數(shù)
"""
forxinrange(1,11):
ifx==6:
break;
print(x,end="")Range函數(shù)的作用是返回一個數(shù)組。使用的時候需要傳入一個數(shù)值的開始,和數(shù)值的結(jié)尾。注意:range函數(shù)是一個半開半閉區(qū)間,包含開頭的值,不包含結(jié)尾的值。Len函數(shù)補(bǔ)充Len(數(shù)組list)該函數(shù)返回一個數(shù)組/列表的長度,長度,是指數(shù)組中有幾個值任務(wù)1、for語句中嵌套while語句2、for語句中嵌套for語句3、while語句中嵌套for4、while中嵌套while總結(jié)強(qiáng)調(diào)1、掌握for語句循環(huán)的基本格式2、掌握range函數(shù)的使用注意3、通過程序判斷,來使得for循環(huán)的輸出能夠自如訂閱/關(guān)注/點贊劉金玉編程零基礎(chǔ)Python教程作用域與函數(shù)嵌套復(fù)習(xí)拆解傳參。1.字典傳參。使用**2.列表傳參。使用*實際上我們在定義函數(shù)的時候,如果省略了星號,那么在調(diào)用函數(shù)的時候必須要省略星號,除非我們拆解后的參數(shù)個數(shù)剛好相等。作用域作用域:可以被影響的范圍。全局變量:在最外層聲明的變量。局部變量:在某些代碼塊聲明的變量。全局變量舉例xxx=100#最外層的變量,全局變量defP():print(xxx)P()說明:外面一層的變量,能夠被代碼塊內(nèi)部一層的變量調(diào)用。局部變量的注意事項1.在函數(shù)體內(nèi)部聲明的變量,不能再函數(shù)體外部去調(diào)用,會直接報錯。2.在函數(shù)體內(nèi)部同名的局部變量,即使重新賦值了,也不會影響函數(shù)體外部的那個同名全局變量。如果真的想要改變外部同名的全局變量,那么我們必須要在函數(shù)體內(nèi)部使用global關(guān)鍵字聲明變量。3.在函數(shù)體內(nèi)部,如果先調(diào)用外部的全局變量后,是不能再次修改的,因為在函數(shù)體內(nèi)部寫了同名的變量后,會使得編譯器無法識別局部變量還是全局變量,使得程序異常。函數(shù)的嵌套在python中是運行函數(shù)嵌套定義使用的。注意:函數(shù)體內(nèi)部定義的函數(shù)也必須要手工調(diào)用才能使得有函數(shù)中的效果,否則默認(rèn)是不被調(diào)用執(zhí)行的。舉例:#函數(shù)的嵌套eee=10defP3():eee=20print("P3中eee=",eee)defP4():fff=5print("P4中的結(jié)果=",fff+eee)
P4()P3()函數(shù)嵌套的作用范圍在函數(shù)體內(nèi)部定義的函數(shù)需要在函數(shù)體內(nèi)部調(diào)用,默認(rèn)不能在全局的作用范圍的最頂層調(diào)用這個函數(shù)的。函數(shù)的復(fù)雜嵌套調(diào)用#函數(shù)的嵌套eee=10defP3():eee=20print("P3中eee=",eee)defP4():fff=5print("P4中的結(jié)果=",fff)returnP4P3()()注意:如果使用雙括號,在調(diào)用內(nèi)存函數(shù)的時候,外層函數(shù)將會被自動調(diào)用。函數(shù)的指針賦值調(diào)用#函數(shù)的嵌套eee=10defP3():eee=20print("P3中eee=",eee)defP4():fff=5print("P4中的結(jié)果=",fff)
returnP4#這里返回的是指針類型的變量K1=P3()K1()結(jié)論:在調(diào)用內(nèi)存函數(shù)的時候,外層函數(shù)也將會被自動調(diào)用。解決問題的思路1.帶有紅色下劃線的報錯,它是一種語法報錯2.異常報錯,先調(diào)試,實在不行,可以將報錯去直接搜索引擎直接搜索報錯3.搜索問題的知識點??偨Y(jié)強(qiáng)調(diào)1.作用域。全局變量區(qū)別于局部變量。2.函數(shù)的嵌套。注意點,在內(nèi)部定義的函數(shù)被調(diào)用時候會自動調(diào)用其父級函數(shù)。函數(shù)也有作用范圍。3.解決問題的思路。4.一定要主動多測試代碼。訂閱/關(guān)注/點贊劉金玉編程字符串與數(shù)值中的巧妙應(yīng)用零基礎(chǔ)Python教程#010復(fù)習(xí)了解python界面修改python解釋器初始化pycharm字符串的連接Python控制臺補(bǔ)充叫法:REPLReadevalprintloop讀執(zhí)行輸出循環(huán)適合于執(zhí)行簡單的命令字符串與數(shù)值的使用區(qū)別變量只有為數(shù)值的時候,才能進(jìn)行數(shù)學(xué)運算。變量為字符串的時候,在+的時候,會進(jìn)行拼接。*的情況如果x和y都是數(shù)值,那么進(jìn)行數(shù)學(xué)運算,x乘以y。如果x是字符串,y是數(shù)值,那么就x這個字符串重復(fù)的倍數(shù)。**使用技巧如果是數(shù)值的數(shù)學(xué)運算,那么就是x的y次方來運算如果x和y都是字符串,那么無法使用**運算,會直接報錯。如果x是字符串,y是數(shù)值,也報錯。向上取整與向下取整比較Round相當(dāng)于四舍五入,但必須注意,當(dāng)小數(shù)部分剛好是0.5的時候,會向下取整,超過后,會向上取整。Int函數(shù)向下取整如果使用math這個庫的話,那么Math.ceilMath.floor總結(jié)1、要能夠區(qū)別字符串與數(shù)值的運算2、巧妙運用**與*3、學(xué)會區(qū)別使用int函數(shù)和round函數(shù),尤其要注意round函數(shù)的使用訂閱/關(guān)注/點贊劉金玉編程零基礎(chǔ)Python教程#93字典中的刪除復(fù)習(xí)1.Items方法:以元組形式返回鍵值形式的對象列表2.Keys方法:返回字典中的所有的鍵3.Values方法:返回字典中所有的值Pop方法Pop方法屬于字典自帶的方法,只需要傳入一個參數(shù),這個參數(shù)是字典的鍵,就可以對字典中的某個鍵值對進(jìn)行刪除。dic1={"aa":"老劉","bb":"老張","cc":"老王"}dic1.pop("bb")Popitem方法這個方法不需要傳入?yún)?shù),就可以直接對字典中的鍵值對進(jìn)行刪除,并且每次刪除的都是最后一個。Clear方法徹底清除字典中的所有的鍵值對。如何知道我刪除的是哪個鍵值對?使用pop方法是人為規(guī)定刪除某個鍵值對,但是使用popitem方法呢?dic1.popitem()方法在刪除之前保留了一份數(shù)據(jù)(元組的形式),這份數(shù)據(jù)在使用popitem方法刪除字典中的數(shù)據(jù)后會將這份刪除的數(shù)據(jù)進(jìn)行返回,以供知悉。pop方法刪除后會返回一個對應(yīng)刪除鍵的值,這個值用來給你判斷你刪除的是否你要真正刪除的。總結(jié)強(qiáng)調(diào)1.掌握pop方法:刪除指定的鍵值對,最后返回的是刪除鍵的值。2.掌握popitem方法:每次刪除字典中的最后一個鍵值對,返回這個刪除的鍵值對。3.掌握clear方法:徹底清除字典中所有的鍵值。這里清除后,最后如果一定要返回值,那就是一個None。訂閱/關(guān)注/點贊劉金玉編程零基礎(chǔ)Python教程#94字典中的賦值技巧復(fù)習(xí)字典的刪除Pop方法:刪除指定的鍵的鍵值對。需要指定一個自己已知的鍵,刪除后返回的是鍵對應(yīng)的值。Popitem方法:刪除的是最后一個鍵值對。在刪除后,返回所刪除的這個鍵值對。Setdefault方法用處:保護(hù)了字典原來數(shù)據(jù)的情況下進(jìn)行賦值。只在原字典中的鍵不存在的情況下,才會對字典新增一個鍵值對。如果原字典存在著某個鍵的情況下,那么新的數(shù)據(jù)將不會被更新到原字典中,這樣有效保護(hù)了原字典的數(shù)據(jù)不受改變,只會新增。用法一(兩個參數(shù)):字典變量.setdefault(鍵,值)用法二(一個參數(shù)):字典變量.setdefault(鍵)這里的值默認(rèn)為None如何改變字典中原數(shù)據(jù)的值?直接使用字典原始的賦值方式即可。dic1["aa"]="劉金玉"對字典的批量更新賦值舉例使用update方法進(jìn)行批量更新賦值dic1={"aa":"老劉","bb":"老張"}dic2={"cc":"老王","dd":"老李"}dic1.update(dic2)print("dic1",dic1)結(jié)果:dic1{'aa':'劉金玉','bb':'老張','cc':'老王','dd':'老李'}使用update更新字典數(shù)據(jù)注意事項字典的鍵值對特性:后更新的鍵的值會覆蓋前面已有的鍵對應(yīng)的值。新的字典數(shù)據(jù)的鍵如果和原來的字典的數(shù)據(jù)的鍵相同,那么以新的字典的數(shù)據(jù)的鍵對應(yīng)的值作為新的鍵值對,更新了原有的鍵值對。總結(jié)強(qiáng)調(diào)1.掌握setdefault方法與普通字典的賦值的區(qū)別。2.批量更新字典數(shù)據(jù)可以采用update方法,理解鍵值對的注意事項。3.掌握指針賦值、淺層復(fù)制、深層復(fù)制之間區(qū)別。4.掌握字典的聲明與基本賦值、取值。訂閱/關(guān)注/點贊劉金玉編程零基礎(chǔ)Python教程自定義異常類的使用復(fù)習(xí)next函數(shù)主要是用來返回一個迭代器當(dāng)前的值,注意一定要把迭代器賦值給某個變量的值,然后將這個變量傳入next函數(shù)。掌握異常的概念。了解常見的異常情況。手動拋出異常關(guān)鍵詞raise異常的系統(tǒng)關(guān)鍵詞exception自定義異常類1.自定義類2.繼承系統(tǒng)的異?;恊xception3.自定義異常類的構(gòu)造函數(shù)等方法進(jìn)行處理舉例:自定義一個我的異常類MyException這是一個最簡單的異常類classMyException(Exception):pass案例:判斷輸入的情況如果不是數(shù)值就拋出異常。a=input("請輸入一個值?")ifnota.isdigit():raiseMyException("異常:輸入的不是數(shù)值!")總結(jié)強(qiáng)調(diào)1.自定義異常類。2.掌握如何利用自定義異常類。3.利用自定義異常類的構(gòu)造方法,進(jìn)行異常數(shù)值的提示。訂閱/關(guān)注/點贊劉金玉編程零基礎(chǔ)Python教程#045測試實驗報告元組的增刪改查復(fù)習(xí)1、index函數(shù)2、count函數(shù)3、sort函數(shù)和sorted函數(shù)4、reverse函數(shù)元組tuple元組:起到將列表只讀的作用創(chuàng)建:使用小括號()X=()空的元組有元素的元組,括號內(nèi)必須要有逗號,有很多的函數(shù)以及數(shù)據(jù)處理后,我們往往只返回的結(jié)果是一個元組的形式元組中的每個元素使用,隔開增大元組的辦法使用+來產(chǎn)生一個新的元組x=(3,4,56,2)y=(6,7,2)z=x+yprint(z)元素的刪除使用關(guān)鍵字del來刪除某個元組偏方來產(chǎn)生一個新的元組來達(dá)到目的直接讀取元組或者使用循環(huán)來讀取元組的值后,存入到新創(chuàng)建的元組x=(3,4,56,2)y=(6,7,2)z=(x[1],y[1])print(z)偏方2,通過將列表轉(zhuǎn)為元組使用tuple函數(shù)來將列表轉(zhuǎn)元組z=[]z.append(x[1])z.append(y[1])print(tuple(z))子元組的獲取利用分片技術(shù)x=(3,4,56,2)y=(6,7,2)print(x[1:3])總結(jié)強(qiáng)調(diào)1、掌握元組的創(chuàng)建2、掌握元組的讀取3、掌握偏方來處理元組4、掌握元組的特性:只讀5、掌握分片技術(shù)在元組上的使用訂閱/關(guān)注/點贊劉金玉編程零基礎(chǔ)Python教程異常棧跟蹤與異常利用復(fù)習(xí)異常類型結(jié)構(gòu):try: passexcept: passelse: passfinally: pass異常中,必須要有的try關(guān)鍵詞,后接上except或者else異常棧的跟蹤棧的特點:先進(jìn)后出異常的拋出,如果內(nèi)部的異常沒有被進(jìn)行處理,那么會從最內(nèi)部一個慢慢往外部傳遞異常。如果內(nèi)部的異常已經(jīng)被捕獲且處理,那么內(nèi)部的異常就不會進(jìn)行傳遞了。異常利用我們在使用字典的時候,往往可能會出現(xiàn)調(diào)用的字典的關(guān)鍵詞并不存在的情況,那么直接就會報錯了。我們以前會使用if語句進(jìn)行處理,來判斷每一個關(guān)鍵詞在調(diào)用之前,是否存在的判斷。注意:python中大小寫是敏感的,要注意調(diào)用的時候,大小寫的正確性。原有判斷字典鍵值的方式,防止程序異常#調(diào)用字典輸出,直接使用if語句進(jìn)行判斷if"aa"indic1:print(dic1["aa"])else:print("關(guān)鍵詞不存在")利用異常捕獲,來簡化代碼try:print(dic1["aa"])print(dic1["BB"])exceptKeyError:print("關(guān)鍵詞不存在,拋出異常")類的異常利用老的模式下的類的屬性是否存在的判斷mc=MyClass()if(hasattr(MyClass,"abc")):mc.abc()else:print("屬性不存在")新式的類屬性調(diào)用的判斷采用異常捕獲的情況來進(jìn)行try:mc.abc()mc.defd()except:print("屬性方法不存在")總結(jié)強(qiáng)調(diào)1.掌握異常棧的跟蹤。2.掌握異常的利用,來優(yōu)化代碼,排除未知異常。3.掌握try捕獲異常的基本形式。4.所有異常捕獲后,拋出的異常,都是異常對象。訂閱/關(guān)注/點贊劉金玉編程零基礎(chǔ)Python教程#124異常與else和finally復(fù)習(xí)異常中使用的關(guān)鍵詞:raise手動拋出異常exception表示異常的基類自定義異常,通過class來繼承exceptiontry關(guān)鍵詞用來捕獲異常except關(guān)鍵詞用來對捕獲的異常進(jìn)行處理異常的總體結(jié)構(gòu)try:passexcept:passelse:passfinally:pass異常與else通過try…與except之間的代碼如果沒有異常,那么,我們就執(zhí)行else語句;如果有異常,那么就執(zhí)行except語句。異常與finally在try語句捕獲的時候,不管程序有沒有發(fā)生異常,最后都會執(zhí)行finally使用finally注意事項1.注意在函數(shù)中捕獲異常的時候不管是否有沒有使用return,結(jié)果都會執(zhí)行finally語句2.注意在finally語句中我們要執(zhí)行的是不會發(fā)生異常的語句。一般寫掃尾工作,比如關(guān)閉文件,關(guān)閉數(shù)據(jù)庫等。3.如果在finally中還存在可能發(fā)生異常的語句,那么我們也可以在finally中嵌套try語句進(jìn)行捕獲。異常捕獲的內(nèi)部機(jī)制多個異常進(jìn)行嵌套使用的時候,如果內(nèi)部的異常被捕獲后使用except處理,那么外部的異常將不再處理內(nèi)部的異常。如果內(nèi)部的異常沒有使用except處理,那么會被外部的大的這個except處理總結(jié)強(qiáng)調(diào)1.掌握異常與else語句的使用2.掌握異常與finally語句的使用3.掌握finally與else的區(qū)別4.else與except的區(qū)別5.finally使用時的注意點訂閱/關(guān)注/點贊零基礎(chǔ)Python教程#032循環(huán)的嵌套使用,靈活運用循環(huán)語句復(fù)習(xí)1、for語句循環(huán)For值in列表:循環(huán)要執(zhí)行的內(nèi)容2、while語句循環(huán)While條件判斷:
條件為true時要執(zhí)行的代碼3、列表list數(shù)組[“a”,”b”,”ccc”]多維列表一維列表:List1=[“110001”,”劉金玉”,”男”,”60”]List2=[“110002”,”如花”,”女”,”70”]List3=[“110003”,”編程”,”女”,”30”]List4=[“110004”,”創(chuàng)造”,”男”,”20”]二維列表:ListA=[list1,list2]listB=[list3,list4]三維列表:listC=[listA,listB]獲取列表長度len函數(shù)Len(列表)返回列表的長度,注意該函數(shù)返回的是第一層的長度批量注釋1、選中代碼2、按快捷鍵ctrl+/數(shù)組的索引數(shù)組的索引開始值是0,從0開始數(shù)總結(jié)強(qiáng)調(diào)1、掌握for嵌套2、while嵌套3、while與for混合運用4、掌握一維數(shù)組、二維數(shù)組、三維數(shù)組訂閱/關(guān)注/點贊劉金玉編程序列解包特性及其便捷賦值劉金玉編程零基礎(chǔ)Python教程#025復(fù)習(xí)Print函數(shù)Sep參數(shù),分隔符End參數(shù),結(jié)尾文本內(nèi)容的修改序列解包特性x,y=333,555#分別將x,y進(jìn)行賦值x,y=y,x#將x和y的值進(jìn)行互換其它便捷賦值的方式1、連續(xù)賦值a=b=c=6662、數(shù)學(xué)運算運用中,增量寫法j=j+1對應(yīng)一個增量賦值的寫法j+=1J=j-1對應(yīng)j-=1J*=2j/=2總結(jié)強(qiáng)調(diào)1、x,y,z,f=1,2,3,4注意等于號左右側(cè)的個數(shù)必須相等2、連續(xù)賦值a=b=c=63、交換x,y=y,x4、基本運算的簡寫訂閱/關(guān)注/點贊劉金玉編程零基礎(chǔ)Python教程#88序列(字典、列表)的排序復(fù)習(xí)Zip函數(shù):壓縮函數(shù),把多個序列壓縮成元組形式數(shù)據(jù),各個元素的位置是一一對應(yīng)的。根據(jù)最少元素的個數(shù)來決定壓縮后的總元素的個數(shù)。*星號在zip函數(shù)參數(shù)中使用,可以起到解壓序列的作用列表的排序1、升序、降序,采用sorted函數(shù),返回排序后的結(jié)果2、逆序,采用reversed函數(shù),返回逆序的結(jié)果3、列表的復(fù)雜排序,使用sorted函數(shù)的key參數(shù)參數(shù)采用lambda表達(dá)式來傳入Lambda表達(dá)式可以看成匿名函數(shù)。就是沒有名字的函數(shù),函數(shù)的結(jié)果要返回一個值。這個表達(dá)式往往用于較為簡單的函數(shù)表示形式。書寫形式:Lambda參數(shù):函數(shù)內(nèi)容字典的排序升序、降序1.魔術(shù)屬性,對字典的鍵進(jìn)行排序,按照鍵來進(jìn)行升序或者降序輸出。2.items方法,結(jié)合lambda表達(dá)式排序,默認(rèn)情況下輸出的是列表形式的結(jié)果,我們可以采用dict函數(shù)對結(jié)果進(jìn)行轉(zhuǎn)換,轉(zhuǎn)為字典總結(jié)強(qiáng)調(diào)掌握字典的排序,有兩種方法,一種是使用__getitem__魔法屬性,使用key的形式排序,一種是使用items整體傳入后,結(jié)合lambda表達(dá)式排序進(jìn)行整體排序掌握列表的排序和逆序掌握復(fù)雜列表的排序訂閱/關(guān)注/點贊劉金玉編程零基礎(chǔ)Python教程#038星號菱形復(fù)習(xí)1、四種數(shù)字三角形2、訓(xùn)練編程思維取整運算符回顧//相當(dāng)于int(數(shù)值)函數(shù)案例:星號菱形1、輸出菱形的上半部分,得到一個三角形2、輸出菱形下半部分,得到一個相反的三角形3、下半部分的三角形就要少一行的算法思路過程01491337252537134901511i2*i+1n//2-i-1(n//2-i-1)*2+1總結(jié)強(qiáng)調(diào)1、程序思維訓(xùn)練2、掌握星號三角形3、掌握星號菱形的算法訂閱/關(guān)注/點贊劉金玉編程零基礎(chǔ)Python教程#81gui編程計算器模擬第三節(jié)復(fù)習(xí)1、最重要的:掌握自主查看事件等對象的具體構(gòu)成.dir()函數(shù)help()函數(shù)2、lambda表達(dá)式的使用,傳參3、bind方法綁定點擊事件如何進(jìn)行計算?Exec函數(shù)直接執(zhí)行string類型的py代碼,而不返回而使用eval函數(shù)的好處,就是可以直接把執(zhí)行的py代碼返回給某個變量功能鍵如何設(shè)置?1、通過點擊事件傳入的按鈕文本使用if語句進(jìn)行判斷哪個按鈕2、針對某個特殊的按鍵,進(jìn)行相應(yīng)功能的編程異常判斷處理使用try:捕獲異常except:異常處理捕獲異常:在一段代碼中,可能會報錯,報錯的時候會將這個報錯的異常捕獲,一旦捕獲到之后,就會直接到except中進(jìn)行處理,正常的程序代碼不再正常執(zhí)行下去異常處理:有很多個異??梢葬槍π缘奶幚恚绻麤]有寫明處理什么異常,那么就默認(rèn)處理所有的異常窗體圖標(biāo)設(shè)置使用iconbitmap函數(shù),寫入圖片路徑即可,注意,這里的圖標(biāo)只能是擴(kuò)展名為ico的圖片舉例:form1.iconbitmap("img/calc.ico")總結(jié)強(qiáng)調(diào)1、掌握eval函數(shù)的使用2、掌握功能鍵與計算鍵的配置使用邏輯3、掌握異常處理機(jī)制4、掌握窗體圖標(biāo)的更換訂閱/關(guān)注/點贊劉金玉編程零基礎(chǔ)Python教程#110調(diào)用父類同名方法復(fù)習(xí)類的構(gòu)造方法。__init__魔法方法由于類的繼承導(dǎo)致可能覆蓋同名的構(gòu)造方法,導(dǎo)致只能使用子類的構(gòu)造,而無法調(diào)用父類的構(gòu)造方法。但其實可以采用super方法解決這個問題。super函數(shù)super()這個方法用來解決子類中調(diào)用父類同名構(gòu)造方法。Python版本過渡,在2.x版本中往往寫成super(所在類的類名,self)這種形式,而在3.x版本開始后,就直接可以簡寫為super()來直接調(diào)用父類中的構(gòu)造方法。通過實際測試,我們知道:1.super方法可以用在類中的任意的函數(shù)中,去調(diào)用父類中的方法。2.super方法也可以調(diào)用超類中的方法。超類Student類是person類的子類,RunStudent是student類的子類,那么我們可以稱runstudent類是person類的超類??偨Y(jié)強(qiáng)調(diào)1.掌握super方法在兩種不同的Python版本中的不同的寫法。2.掌握super方法可以調(diào)用類和超類中的所有的同名方法。3.掌握super方法調(diào)用類中同名函數(shù)時的方法調(diào)用順序,默認(rèn)是優(yōu)先調(diào)用父類中的同名方法。訂閱/關(guān)注/點贊劉金玉編程零基礎(chǔ)Python教程#037四種數(shù)字三角形復(fù)習(xí)1、如何判斷奇偶性?2、while循環(huán)3、數(shù)據(jù)的統(tǒng)計與記錄案例講解112123123412345123456#n表示行數(shù)
n=6
i=0;
whilei<n:
forjinrange(i+1):
print(j+1,end="")
print()
i+=1案例2123456123451234123121案例3
121321432154321654321案例4123456123451234123121總結(jié)強(qiáng)調(diào)1、程序思維訓(xùn)練2、掌握圖形觀察的方法3、考慮復(fù)雜的圖形其實是由于簡單圖形的變化產(chǎn)生的訂閱/關(guān)注/點贊劉金玉編程數(shù)字格式化輸出厲害了,我的天!劉金玉編程零基礎(chǔ)Python教程#020復(fù)習(xí)1、Python四舍五入整數(shù)及保留一位小數(shù)的時候使用round函數(shù),可以正常四舍五入2、decimal模塊處理四舍五入Decimal.Context(prec=3,rounding=ROUND_HALF_UP).create_decimal(string類型)返回正常的四舍五入的答案強(qiáng)大的format函數(shù)Format(參數(shù)1,參數(shù)2)參數(shù)1:需要格式化的數(shù)字參數(shù)2:格式化字符串,用來表示如何格式化舉例format(x,"<n.2f")X是實際的數(shù)據(jù),<表示左對齊,表示數(shù)據(jù)所占長度,2f表示小數(shù)位數(shù)保留2位舉例數(shù)字a=123.45678911、小數(shù)點保留2位Format(a,”0.2f”)#注意這里并非四舍五入2、數(shù)字在指定的長度n區(qū)域內(nèi)對齊方式,并保留小數(shù)位數(shù)x=123.45667>表示右對齊format(x,"0>20.2f")可以在數(shù)據(jù)前面補(bǔ)0,形成00000000000000123.46<表示左對齊format(x,“0<20.2f”)可以在數(shù)字后面補(bǔ)0,形成123.4600000000000000n表示數(shù)據(jù)長度^表示居中對齊,例如format(x,"^20.2f")續(xù)上千分號表示法>>>x=1357.45667>>>print(format(x,","),111)1,357.45667111千分號+小數(shù)點保留format(x,",.2f")科學(xué)計數(shù)法format(x,"e")科學(xué)計數(shù)法+小數(shù)點保留format(x,"0.2e")科學(xué)計數(shù)法12345這一個整數(shù)用科學(xué)計數(shù)法表示1.2345*(10的4次方)在計算機(jī)中10的幾次方,可以表示成e的幾次方10的4次方,在計算機(jī)中表示為e+410的-4次方,在計算機(jī)中表示為e-4總結(jié)強(qiáng)調(diào)1、掌握format函數(shù),這個函數(shù)用來格式化數(shù)據(jù)2、要掌握弄清楚幾種格式化的表示方式:科學(xué)技術(shù)法、千分制法、保留幾位小數(shù)、字符串的長度定位(左對齊、右對齊、居中對齊)訂閱/關(guān)注/點贊劉金玉編程print參數(shù)sep和end#024復(fù)習(xí)1、使用符號\來進(jìn)行反轉(zhuǎn)義\n
\\n2、repr函數(shù)3、print的字符串前加上rPrint(r”劉金玉編程”)4、多行輸出Print的奧秘一、默認(rèn)情況下,多個參數(shù)傳入,輸出的結(jié)果會用空格隔開>>>print("劉金玉編程","編程創(chuàng)造城市")劉金玉編程編程創(chuàng)造城市二、使用分隔符分隔多個參數(shù)輸出的結(jié)果>>>print("劉金玉編程","編程創(chuàng)造城市",sep='|')劉金玉編程|編程創(chuàng)造城市三、換行的修改x="歡迎訪問博客"+"http://ljy.kim"print(x,end="")print("歡迎"+"加入我們的QQ群,"+"編程創(chuàng)造城市",end="\n\n")總結(jié)強(qiáng)調(diào)1、修改print中的sep參數(shù)用于修改分隔符2、修改print中的結(jié)尾處,默認(rèn)是一個換行訂閱/關(guān)注/點贊劉金玉編程零基礎(chǔ)Python教程#119生成器復(fù)習(xí)迭代器,依靠類來產(chǎn)生,每次返回一個值。產(chǎn)生的方法:類中使用__iter__方法,使類變成迭代器。類中使用__next__方法,用來具體實現(xiàn)每次迭代的過程。停止的方法:1.在調(diào)用迭代器的時候,我們在循環(huán)中利用if判斷條件來退出迭代器。2.利用raise和StopIteration拋出異常的方法,讓迭代器有限生產(chǎn)。生成器類似點:生成器和迭代器都是一個值一個值生成的。區(qū)分點:1.在迭代器中迭代依靠類,生成器依靠自定義函數(shù)2.迭代器使用__iter__和__next__方法,而生成器使用yield關(guān)鍵詞。3.生成器利用循環(huán)思想來實現(xiàn)生產(chǎn)值。yield關(guān)鍵詞作用:使得函數(shù)暫停,并且提交一個生成的值。案例:制作一個生成器1.自定義一個函數(shù)2.隨機(jī)生成一個列表3.利用for循環(huán)輸出列表的值,每次輸出一個,暫停一次
4.遍歷生成器總結(jié)強(qiáng)調(diào)1.回顧了迭代器2.掌握生成器的定義3.理解生成器和迭代器的區(qū)別4.理解yield關(guān)鍵詞訂閱/關(guān)注/點贊劉金玉編程零基礎(chǔ)Python教程#113深化內(nèi)建類學(xué)習(xí),自定義字符串類復(fù)習(xí)1.內(nèi)建類:listdictstr2.好處:大大提高開發(fā)效率;實現(xiàn)內(nèi)建類中一些已經(jīng)有的方法。3.使用list和dict在做自定義類的時候,需要實現(xiàn)__init__構(gòu)造方法。字典類的補(bǔ)充使用雙星號傳入的情況的不同classMyDict(dict):def__init__(self,**args):#print(args)returnsuper().__init__(**args)md=MyDict(**{"a":"老劉","b":"老張","c":"老王"})print(md)字典中的get情況使用get的好處就是如果鍵不存在字典中,也不會報錯,但是不會觸發(fā)___getitem__這個魔法方法。使用名稱[鍵]的方式進(jìn)行獲取的時候,雖然當(dāng)鍵不存在的時候會報錯,但是會觸發(fā)__getitem方法,觸發(fā)這個方法的好處就是我們可以自定義這個方法,使得實現(xiàn)我們想要的功能。列表自帶的reverse與reversed函數(shù)區(qū)別使用列表自帶的reverse()方法會改變變量本身的值。而使用python中的類方法reversed()方法的話,則不會改變原來變量的值。自定義字符串類這里利用字符串內(nèi)建類str的形式來實現(xiàn)舉例實現(xiàn),使用自定義分隔符來隔離傳入的各個字符串。類中的__new__魔法方法這個方法的作用:就是在類的__init__魔法方法執(zhí)行之前,就開始執(zhí)行。即:類進(jìn)行實例化對象前就執(zhí)行的方法(__new__)如何去除最后多余的分隔符?使用字符串的分片功能來實現(xiàn)index=-len(sep)if(index==0):index=len(s)returnstr.__new__(cls,s[:index])總結(jié)強(qiáng)調(diào)1.掌握自定義類的定義與使用2.掌握自定義字典類的注意方式3.掌握使用自定義字符串類的方法表述4.理解__new__方法的執(zhí)行順序位置訂閱/關(guān)注/點贊劉金玉編程零基礎(chǔ)Python教程#115深化類的屬性監(jiān)控,利用魔法方法來實現(xiàn)復(fù)習(xí)1.傳統(tǒng)的屬性監(jiān)控。Setter\getter方法2.類中使用property方法,綁定設(shè)置變量、獲取變量、刪除變量。利用魔法方法實現(xiàn)屬性監(jiān)控__getattr__魔法方法,用于類的成員變量的獲取時候的觸發(fā)。區(qū)別__getitem____setattr__魔法方法,用于設(shè)置類的成員變量的時候觸發(fā)。區(qū)別__setitem____delattr__魔法方法,用于監(jiān)控類的成員變量刪除的時候觸發(fā)。區(qū)別__delitem__實例:自定義類來實現(xiàn)屬性監(jiān)控實現(xiàn)一個fangkuai類的屬性的監(jiān)控。步驟:1.設(shè)置自定義類2.初始化類的屬性3.寫魔法方法__setattr__方法,第一個參數(shù)key是自定義屬性的名稱,第二個參數(shù)是屬性的值。注意這個自定義屬性可以是自己去利用自己的思維去概述類的屬性。4.寫魔法方法__getattr__方法,item參數(shù)是被監(jiān)控的屬性的名稱5.寫魔法方法__delattr__方法,item參數(shù)是被刪除的屬性的名稱。作業(yè):利用屬性的監(jiān)控,來實現(xiàn)一個屬性的值不小于100的數(shù)總結(jié)強(qiáng)調(diào)1.回顧傳統(tǒng)屬性和property方法監(jiān)控屬性2.采用魔法方法來獲取屬性訂閱/關(guān)注/點贊劉金玉編程零基礎(chǔ)Python教程#90深度復(fù)制字典復(fù)習(xí)clear方法:徹底清除與某個字典變量有關(guān)系的字典變量的數(shù)據(jù)。字典數(shù)據(jù)的賦值ljydic1={'bb':'老張','cc':['小紅','小林'],'aa':'劉金玉'}print(ljydic1)ljydic2=ljydic1ljydic1["aa"]="老劉"print("ljydic2",ljydic2)從這個案例中可以看出,字典賦值,實際上是指針的指向那么如何才能夠?qū)χ档臄?shù)據(jù)進(jìn)行復(fù)制?使用字典自帶的copy方法。但是注意:這個copy方法只是針對于一級鍵值對的數(shù)據(jù)的復(fù)制。這個方法對于二級數(shù)據(jù)及更深層次的數(shù)據(jù)仍然只是一個指針指向。深度復(fù)制字典數(shù)據(jù)使用copy這個庫中的deepcopy方法,可以對字典數(shù)據(jù)進(jìn)行深度復(fù)制。fromcopyimportdeepcopyljydic1={'bb':'老張','cc':['小紅','小林'],'aa':'劉金玉'}print(ljydic1)ljydic2=deepcopy(ljydic1)ljydic1["cc"][0]="老劉"print("ljydic2",ljydic2)總結(jié)強(qiáng)調(diào)掌握普通字典的賦值、字典的copy復(fù)制賦值、deepcopy對字典的復(fù)制賦值這三種不同的復(fù)制之間的區(qū)別。實戰(zhàn)練習(xí)訂閱/關(guān)注/點贊劉金玉編程零基礎(chǔ)Python教程#89如何徹底清除字典數(shù)據(jù)?復(fù)習(xí)序列的排序,sorted函數(shù),默認(rèn)升序,采用reverse參數(shù)設(shè)置True就可以降序。強(qiáng)大的key關(guān)鍵字來傳入需要按照某個值進(jìn)行排序1.列表的排序2.字典的排序。按照鍵來排序__getitem__。按照鍵值對的整體數(shù)據(jù)進(jìn)行排序getitems()方法。3.Lambda表達(dá)式。匿名函數(shù)字典數(shù)據(jù)默認(rèn)情況下,字典數(shù)據(jù)是無法徹底清除的。dic1={"老劉","老張","老王"}print(dic1)dic2=dic1dic1=““#如果直接采用賦值的形式對原數(shù)據(jù)清空,是無法徹底清空數(shù)據(jù)的如何徹底清空與字典有關(guān)的數(shù)據(jù)?dic1.clear()#使用clear函數(shù)可以徹底清空某個字典的源數(shù)據(jù)這里的dic1代表某個字典變量區(qū)別賦值的方式只能清空某個字典變量的數(shù)據(jù)。使用clear方法可以情況所有與該變量有關(guān)的字典的數(shù)據(jù)??偨Y(jié)強(qiáng)調(diào)掌握clear方法的用法來徹底清空字典掌握只清除某個字典變量的方法掌握普通賦值和clear方法區(qū)別訂閱/關(guān)注/點贊劉金玉編程零基礎(chǔ)Python教程#121認(rèn)識異常,合理利用異常復(fù)習(xí)生成器:yield使得函數(shù)凍結(jié)提交一個值。每次使用生成器,都使用了for循環(huán),實際上使用的是next函數(shù)來進(jìn)行下一次迭代。生成器依賴于一個函數(shù)。遞歸生成器,實則是在生成器中,再次調(diào)用生成器。next函數(shù)調(diào)用的問題。next函數(shù)作用:主要是用來返回下一次迭代器的返回值使用方法:next(迭代器,[默認(rèn)值])如果直接使用兩次調(diào)用自定義迭代器函數(shù)的方式,將返回的是每一次迭代器的初始位置的值,也就是說,指針總是指向的是初始的位置。我們應(yīng)該把自定義的迭代器賦值給一個變量,然后再使用next函數(shù)對這個變量進(jìn)行下一次迭代。#使用變量來表示一個實際的生成器對象scq=shengChengqi()print(next(scq))print(next(scq))異常什么是異常?不是普通的正常的代碼執(zhí)行情況。實際上是屬于系統(tǒng)內(nèi)代碼有問題導(dǎo)致的報錯。異常,我們往往使用Exception來表示。異常的分類主要分為兩大類。一類是自動自動拋出的異常,系統(tǒng)編譯器自動判斷來拋出異常。舉例:laoliuAge=31/0拋出異常ZeroDivisionError:divisionbyzero一類是人工手動拋出的異常,使用raise來手動拋出。手動拋出異常使用:raiseException,這里的Exception是一個異常類,類的話我就可以使用構(gòu)造方法進(jìn)行初始值的傳入。也就是說傳入的是異常的描述。我們可以使用raiseException(“這里是我們的自定義異?!?實際中我們?nèi)绾问褂檬謩赢惓#课覀兺枰Y(jié)合一些條件判斷來手工拋出異常。舉例如下:a=1ifa==1:raiseException("這里是老劉拋出的異常")else:print("沒有異常")異常的利用舉例1.判斷是否是int類型的數(shù)據(jù)2.判斷是否是string類型的數(shù)據(jù)歸納一下:1.我們可以利用異常來做一些數(shù)據(jù)類型的轉(zhuǎn)換。2.我們可以利用異常來進(jìn)行數(shù)據(jù)類型的判斷。重要的內(nèi)建類異常Exception所有異常的基類AttributeError屬性引用或?qū)傩允r拋出的異常OSError當(dāng)操作系統(tǒng)無法執(zhí)行任務(wù)時拋出的異常IndexError在使用序列中不存在的索引時拋出的異常KeyError在使用映射中不存在的鍵值時拋出的異常NameError找不到名字(變量)時拋出的異常SyntaxError在代碼為錯誤形式時觸發(fā)TypeError在內(nèi)建操作或函數(shù)應(yīng)用于錯誤類型的對象時拋出的異常ValueError在內(nèi)建操作或者函數(shù)應(yīng)用于正確類型的對象,但該對象使用了不適合的值時拋出的異常ZeroDivisionError在除法或者取模操作的第2個參數(shù)值為0時拋出的異??偨Y(jié)強(qiáng)調(diào)1.理解什么是異常?2.理解異常的分類3.掌握手動拋出異常的方法4.學(xué)會利用異常,把異常的拋出為己所用訂閱/關(guān)注/點贊劉金玉編程零基礎(chǔ)Python教程#86認(rèn)識并行迭代復(fù)習(xí)1、遍歷字典按照鍵來遍歷key字典[key]按照鍵值來遍歷keyvalue,結(jié)合字典的items方法2、遍歷列表3、字符串轉(zhuǎn)字典eval函數(shù)并行迭代舉例列表List1=[“老劉”,”老張”,”老王”]List2=[“程序員”,”教練”,”總監(jiān)”]List3=[30,40,50]注意:并行迭代使用的是for語句統(tǒng)一輸出,注意各個元素的值的位置是相對應(yīng)的,元素的格數(shù)必須相同。并行迭代的數(shù)據(jù)來源1.普通的列表2.元組3.字符串splitjoin如何批量輸出多個列表?s1="老劉,老張,老王"s2="程序員,教練,總監(jiān)"s3="30,40,50"list1=s1.split(",")list2=s2.split(",")list3=s3.split(",")foriinrange(len(list1)):print("姓名:"+list1[i]+"職業(yè):"+list2[i]+"年齡:"+list3[i])最關(guān)鍵的要點:使用獲取列表長度的方式輸出range(len(list1))總結(jié)強(qiáng)調(diào)1、掌握字符串轉(zhuǎn)列表2、認(rèn)識并行迭代:實質(zhì)是對多個列表進(jìn)行遍歷,注意元素個數(shù)要相等,元素的值要對應(yīng)。訂閱/關(guān)注/點贊劉金玉編程輕松聲明變量和使用零基礎(chǔ)Python教程復(fù)習(xí)Dir()查看當(dāng)前環(huán)境下所有的模塊、變量等Dir(參數(shù))查看指定的模塊下的所有的方法/函數(shù)Help(參數(shù))詳細(xì)解釋某個模塊下的函數(shù)/方法的使用發(fā)規(guī)則導(dǎo)入os模塊,調(diào)用system方法來執(zhí)行cmd命令變量什么是變量?相當(dāng)于數(shù)學(xué)中的未知數(shù)x,y等變量存儲在哪里?內(nèi)存中聲明一個變量后,就在內(nèi)存中開辟一個空間,這個空間用來存儲我們的變量的值。Python中很多時候都會自動轉(zhuǎn)換變量的值的類型Python中的變量是區(qū)分大小寫的如何聲明一個變量?變量又叫做variablePython中的變量聲明格式:變量的名稱=變量的值注意點:1、變量的名稱一般都是由字母、數(shù)字、下劃線組成,且開頭字符只能是下劃線或字母2、變量的名稱不能是系統(tǒng)自帶關(guān)鍵字3、聲明的時候注意要賦值,賦值的過程,就是讓這個變量名稱=一個值如何調(diào)用變量?如果變量已經(jīng)被聲明過,那么就可以在聲明后進(jìn)行調(diào)用,調(diào)用的時候,只需要使用變量的名稱即可。賦值格式:變量的名稱=變量的值舉例x=123Y=x+1這里注意等于號=相當(dāng)于賦值總結(jié)強(qiáng)調(diào)1、掌握變量的聲明方法以及變量名稱的注意點2、掌握賦值的含義3、掌握聲明變量的深層含義訂閱/關(guān)注/點贊劉金玉編程零基礎(chǔ)Python教程#91批量默認(rèn)初始化與獲取字典復(fù)習(xí)1.深度復(fù)制字典:deepcopy方法,必須利用copy庫,這個結(jié)果只有數(shù)據(jù),內(nèi)部沒有指針了。2.如果只要賦值第一層的數(shù)據(jù),只需采用字典自帶的copy方法。初始化字典空字典的初始化:dic1={}初始化有數(shù)據(jù)的字典:dic1={"a":"老劉","b":"老王頭","c":"老張"}根據(jù)鍵來進(jìn)行批量初始化利用字典的fromkeys方法,傳入一個列表代表鍵位。方法一:初始化沒有值的字典,鍵對應(yīng)的默認(rèn)值為“None”代表空值dic1={}.fromkeys([“a”,“b”,“c”])方法二:初始化一個默認(rèn)值dic1={}.fromkeys(["a","b","c"],"老劉")字典值的獲取常規(guī)方法:dic1["a"]這個常規(guī)方法的弊端,就是當(dāng)傳入的鍵如果在字典中不存在的話,那么程序會直接報錯。友好的字典獲取方法利用字典自帶的get方法,這個方法可以有好的返回一個獲取的結(jié)果。怎么使用?只需要王這個方法中傳入一個鍵就可以了。使用get方法獲取字典值的時候,如果不存在的鍵傳入后,返回的結(jié)果是None總結(jié)強(qiáng)調(diào)1.掌握字典的批量默認(rèn)初始化值,利用字典自帶的方法{}.fromkeys(…)2.掌握字典的友好取值方法get訂閱/關(guān)注/點贊劉金玉編程零基礎(chǔ)Python教程冒泡排序法應(yīng)用復(fù)習(xí)函數(shù)遞歸利用函數(shù)遞歸的原理可以模擬一個循環(huán),為了能夠方便的解決問題,比如一些多級目錄。注意:盡可能不要使用遞歸。深度不是太大的時候使用起來會比較容易。算法算法解釋:計算方法。計算方法:一系列計算的過程,可能需要調(diào)用各種各樣函數(shù)、使用各種數(shù)學(xué)公式。算法有:冒泡排序法、選擇排序排序法、折半查找法?;仡櫼郧暗呐判蚺e例列表的排序。讓一個序列中的數(shù)值進(jìn)行排序。list1=[4,2,6,3,8]print(sorted(list1,reverse=True))排序的根本思想本質(zhì)上:其實是數(shù)值的比較。數(shù)值比較的本質(zhì):兩兩比較。舉例的數(shù)值進(jìn)行比較,假設(shè)從小到大數(shù)值:4,2,6,3,8第一輪比較:第一次比較:
2,4,6,3,8第二次比較:2,4,6,3,8第三次比較:2,4,6,3,8第四次比較:2,4,6,3,8第二輪比較:第一次比較:2,4,6,3,8第二次比較:2,3,6,4,8第三次比較:2,3,6,4,8…這就是冒泡排序的思想冒泡思想1.分成多輪進(jìn)行比較2.每一輪取一個值,與后面所有的值進(jìn)行比較,如果是從小到大進(jìn)行排序,那么我們就把小的數(shù)挑出來進(jìn)行交換,直到比較完所有的值,最后把最后小的值冒出來。實戰(zhàn)案例自定義函數(shù),使用冒泡排序法進(jìn)行算法計算總結(jié)強(qiáng)調(diào)1.掌握系統(tǒng)自帶函數(shù)的排序方法2.掌握自定義排序方法,比如冒泡排序法3.掌握數(shù)據(jù)交換的簡便技巧訂閱/關(guān)注/點贊劉金玉編程零基礎(chǔ)Python教程#043徹底學(xué)通序列基本操作列表的增刪改查復(fù)習(xí)1、in函數(shù)檢查存在性2、最值maxmin補(bǔ)充List函數(shù)可以將字符串,轉(zhuǎn)為列表,將字符串中的每一個元素,編程列表中的一個元素列表的增加1、運算符+list3=list1+list22、分片技術(shù)操作list3[3:3]="是"3、insert插入list3.insert(4,"不是")4、appendlist3.append("?")5、extendlist3.extend("?")列表元素刪除1、del操作符dellist3[4]2、remove函數(shù)list3.remove(“呢”)
3、pop函數(shù)默認(rèn)刪除列表中的最后一個元素list3.pop()list3.pop(len(list3)-2)4、clear清除所有元素list3.clear()列表的修改1、最簡單的修改list3[3]="是不是“2、利用列表分片技術(shù)來實現(xiàn)批量修改list3[3:6]=[“是不是”,“變變變”,“奧特曼”]只修改指定的位置的值list3[3:]=[“是不是”,“變變變”,“奧特曼”]修改了索引3之后的所有位置被替換成最新的元素會有不同的效果查1、利用print函數(shù)輸出列表Print(list3)2、利用循環(huán)來輸出列表元素總結(jié)強(qiáng)調(diào)1、掌握列表的正刪改查2、掌握兩種不同的基本操作(是否使用分片技術(shù)來操作)3、加強(qiáng)練習(xí)訂閱/關(guān)注/點贊劉金玉編程利用python幫助命令擴(kuò)展開發(fā)知識面劉金玉編程零基礎(chǔ)Python教程#015復(fù)習(xí)%取余數(shù)5%3=2計算幾天后是星期幾的問題?(今天是星期幾+幾天后)%7回到pythonREPL簡稱python控制臺往往企業(yè)中的環(huán)境比較簡單,但是需要我們可能去解決一些bug,需要現(xiàn)場調(diào)試,此時,現(xiàn)場開發(fā),可能用到幫助來提示我們一些函數(shù)的用法。如何利用幫助命令解決問題?1、利用dir()函數(shù)來獲取當(dāng)前環(huán)境下面有哪些模塊?如何利用幫助命令解決問題?2、利用help命令來獲取
模塊下面的所有函數(shù)Help(模塊名稱)返回所有的函數(shù)的詳細(xì)解釋Help(模塊名稱.函數(shù)名稱)返回某個函數(shù)的詳細(xì)解釋Dir(參數(shù))參數(shù)是模塊名稱返回這個模塊下的所有的名稱名稱Python中如何調(diào)用cmd命令?1、導(dǎo)入os模塊Importos2、查看函數(shù)Dir(os)3、找到執(zhí)行cmd命令的函數(shù)systemHelp(os.system)4、調(diào)用cmd命令的函數(shù)Os.system(“cls”)執(zhí)行cls來清空當(dāng)前窗體總結(jié)強(qiáng)調(diào)1、help函數(shù)看幫助詳細(xì)2、dir函數(shù)看當(dāng)前環(huán)境下有哪些變量、模塊等3、通過導(dǎo)入os模塊來調(diào)用cmd命令訂閱/關(guān)注/點贊劉金玉編程零基礎(chǔ)Python教程#103類和對象復(fù)習(xí)算法:1.冒泡排序法。兩兩比較數(shù)據(jù),每一輪冒出一個需要的數(shù)值。多輪比較下來得到一個需要的排序。
2.掌握數(shù)據(jù)交換的簡便方法3.掌握sorted等來進(jìn)行排序類理解為現(xiàn)實生活中的一個類別。比如:人類、動物等。有大類、有小類。得到的其實:類其實是比較抽象的一個歸類,并沒有涉及到具體的一個事物。對象理解為:某一個類別的具體的實例化的事物。比如就是人類的實例化一個“老劉”類的定義使用系統(tǒng)關(guān)鍵詞classClass類的名稱:
類的屬性和方法說明:類其實就是一個代碼塊。這里提到的“方法”,其實就是我們以前學(xué)過的函數(shù),只不過在類的外面定義的時候叫函數(shù),在類內(nèi)部定義的時候,我們就叫方法。
類的定義的舉例定義一個獲取和設(shè)置年齡的類classPerson:defsetAge(self,a):self.age=adefgetAge(self):returnself.age實例化之后的類如何使用?舉例:p=Person()#設(shè)置年齡p.setAge(18)#獲取年齡print(p.getAge())如何應(yīng)用類?使用類的時候,必須要進(jìn)行實例化,而實例化之后的類,我們稱為對象。如何實例化一個類?只需要在類名稱后加一個小括號即可。舉例:p=Person()這里的p就是Person這個類的具體的一個實例對象。類的特性:1.繼承:父級的方法會被子級繼承下來。2.封裝:把某個特定的方法封裝在一個類下面,使得某個具體執(zhí)行的功能會比較隱蔽。代碼看起來也會比較清晰。3.多態(tài):同一個方法在不同的場景下面會有不同的效果。類的方法定義:由之前的例子,我們得到:每一個類中的方法在定義的時候,第一個參數(shù)必定是類的對象,一般這個參數(shù)的名字默認(rèn)為self。也可以是其它的變量的名稱,但是,默認(rèn)情況下第一個參數(shù)無法是什么名字,都被默認(rèn)為是這個類的對象本身。類的應(yīng)用場景往往都是對應(yīng)于現(xiàn)實事物的各個對象:比如貪吃蛇游戲中的蛇或者是食物。比如業(yè)務(wù)中的話,我們可以對應(yīng)某個系統(tǒng)中的人的某個數(shù)據(jù)表。等等現(xiàn)實生活中的場景。總結(jié)強(qiáng)調(diào)1.掌握類和對象的概念理解2.掌握類和方法的定義3.掌握類和對象的調(diào)用和使用方法4.理解類的應(yīng)用場景訂閱/關(guān)注/點贊劉金玉編程零基礎(chǔ)Python教程類的迭代器復(fù)習(xí)1.靜態(tài)方法及常用場景2.類方法及常用場景3.靜態(tài)方法和類方法的定義和區(qū)別4.實例方法既可以調(diào)用靜態(tài)方法也可以調(diào)用類方法。迭代器可以看做集合,集合類似列表,但是迭代器的所消耗的內(nèi)存資源要小于集合。迭代:循環(huán)在python中表現(xiàn)為__iter__方法,而__iter__方法必須返回一個迭代器。實際上一個類,只要有__iter__方法,那么這個類就是一個迭代器。迭代器實現(xiàn)后,每一次迭代的返回結(jié)果在__next__方法中。利用迭代器實現(xiàn)輸出一個三角形1.寫一個自定義類2.在類中實現(xiàn)一個__iter__方法,構(gòu)造出迭代器3.再實現(xiàn)一個__next__方法,返回奇數(shù)個星號,獲取迭代結(jié)果4.對于需要的一些變量,我們再次在__init__方法進(jìn)行初始化5.實例化類的對象6.利用for循環(huán)輸出自定義的迭代類總結(jié)強(qiáng)調(diào)1.掌握迭代器的概念與意義2.掌握類來實現(xiàn)自定義迭代器3.掌握利用迭代器實現(xiàn)一個直角三角形訂閱/關(guān)注/點贊劉金玉編程零基礎(chǔ)Python教程類的屬性監(jiān)控學(xué)習(xí)復(fù)習(xí)繼承內(nèi)建類,形成一個自定義的功能強(qiáng)大的屬于自己的類。內(nèi)建類:list、dict、str模仿列表的魔法方法:__getitem__、__setitem__、__delitem__、__lenitem__內(nèi)建類使用:1、傳入?yún)?shù)值,使用__init__方法初始化,初始化的時候往往傳入多個參數(shù)。2、__new__的使用,這個魔法方法是在類的對象實例化前所會調(diào)用的方法。傳統(tǒng)的屬性監(jiān)控模式類中的傳統(tǒng)屬性我們是如何載入的呢?通過類的構(gòu)造方法__init__來進(jìn)行初始化屬于類的屬性。今天主要學(xué)習(xí)對類的屬性的監(jiān)控。通過以前的課程,我們可以通過setter、getter來進(jìn)行屬性的讀寫。傳統(tǒng)意義上的屬性監(jiān)控classFangkuang:def__init__(self):self.width=0self.height=0defsetWidth(self,width):print("監(jiān)控設(shè)置的width")self.width=width*100defgetWidth(self):returnself.widthfk=Fangkuang()fk.setWidth(2)print(fk.getWidth())傳統(tǒng)的屬性監(jiān)控缺陷1.一個屬性成員要對象寫三個方法去進(jìn)行監(jiān)控,那么如果我們有10個屬性成員呢?2.只能通過gettter和setter的方法來監(jiān)控屬性。3.不能通過直接操作屬性的方式監(jiān)控采用property綁定的方式好處:給我們提供直接操作屬性的方式監(jiān)控類中的屬性,同時也可以通過del關(guān)鍵字使用的使用來監(jiān)控刪除屬性的操作。定義結(jié)構(gòu):操作屬性的自定義名稱=property(綁定讀取方法名,綁定設(shè)置方法名,綁定刪除方法名)總結(jié)強(qiáng)調(diào)1.掌握傳統(tǒng)屬性的監(jiān)控方式。2.理解掌握property的方法來綁定需要的參數(shù)屬性。訂閱/關(guān)注/點贊劉金玉編程零基礎(chǔ)Python教程#104類的屬性方法和私有化復(fù)習(xí)1.類。明白什么是類?如何定義類?2.對象。什么是對象?如何使用對象?3.類的方法的定義以及調(diào)用4.類的方法內(nèi)部使用類的屬性,調(diào)用了self參數(shù),這個參數(shù)可以用其它的名字替換,但是表述類的對象的參數(shù)必須是類中方法的第一個參數(shù)類的屬性屬性:類似于人的身高、職業(yè)、性別等稱為屬性。注意:類的屬性默認(rèn)情況下是直接被開放出去,可以直接調(diào)用讀取和賦值的。類的方法補(bǔ)充:在類的內(nèi)部不同方法之間是可以調(diào)用類的同一個屬性的。舉例:defsayHello(self):print("hello,"+)私有化的概念理解私有化往往其實就是指只能被某些特定的對象調(diào)用。類的方法的私有化其實私有化只需要在方法名前加兩個下劃線即可,舉例:def__sayHello(self):print("hello,"+)而實際上,這種類型的私有化并不是絕對不能被調(diào)用的,我們可以采用類的名稱前加一個下劃線以及定義的真?zhèn)€私有方法名的拼接組合一個新的方法名稱就可以調(diào)用。舉例:p._Person__sayHello()為什么私有化的類可以被調(diào)用呢?在python中,私有化的類方法在被編譯的時候,實際上就是在這個方法名稱前面拼接了下劃線和類的名稱。如何私有化的調(diào)用方式知道的呢?使用inspect庫進(jìn)行方法。importinspectmethods=inspect.getmembers(p,predicate=inspect.ismethod)print(methods)注意點:inspect.getmembers(類的對象,刷選依據(jù))結(jié)論:無論是類的方法還是類的屬性,只要在方法或者屬性名稱前面加上兩個下劃線,那么就會被python編譯器自動私有化,會在這個名稱前面加上一個_類的名稱??偨Y(jié)強(qiáng)調(diào)1.掌握類的屬性的定義和調(diào)用2.掌握類的方法的定義和調(diào)用3.掌握類的屬性和方法的私有化4.掌握使用inspect庫來查看類的所有的屬性和方法的成員。訂閱/關(guān)注/點贊劉金玉編程零基礎(chǔ)Python教程類的接口復(fù)習(xí)類的多繼承。掌握的是多繼承類定義的寫法。理解類的同名方法的優(yōu)先級。__bases__查看一個類的多個繼承父類。接口在python中沒有接口的概念。接口:理解為一種規(guī)范。定義一種接口實際上是一定一個規(guī)范,那么一個接口類可以定義多個規(guī)范。每個規(guī)范實際上是一個函數(shù)(方法)名稱。接口的實現(xiàn):通過具體繼承這個接口的類來具體實現(xiàn)。Python中采用方法判斷代替接口是否存在Hasatrr(參數(shù)1,參數(shù)2)函數(shù)來判斷,如果某個參數(shù)1對象中有參數(shù)2的方法,那么就返回True,否則返回False參數(shù)1:某個類實例化的對象參數(shù)2:某個方法名稱,用字符串類型表示通過測試,我們知道hasattr函數(shù)同樣適用于類的屬性。getattr函數(shù)getattr(參數(shù)1,參數(shù)2[,參數(shù)3])參數(shù)1:某個類的對象參數(shù)2:某個類的方法名稱,注意這個方法名稱不要加小括號參數(shù)3:默認(rèn)函數(shù),這個方法可以被省略,但是如果被省略的情況下,參數(shù)2這個方法名稱如果不存在的話,這個函數(shù)會直接報異常。如果參數(shù)3沒有省略,那么這個getattr函數(shù)的結(jié)果,在參數(shù)2不存在的情況下,會返回參數(shù)3,使得結(jié)果不會報錯。注意,參數(shù)3在寫的時候不要加小括號,一旦佳樂小括號,參數(shù)3這個方法名稱就會被自動執(zhí)行。這里的參數(shù)3中的方法名稱不一定是要在類的內(nèi)部的,也可以是外部自定義的。同樣的,這個函數(shù)也可以適用到屬性的獲取上面。setattr函數(shù),設(shè)置對象的默認(rèn)方法與屬性setattr(參數(shù)1,參數(shù)2,參數(shù)3)參數(shù)1:某個類的實例化對象參數(shù)2:需要設(shè)置的某個類的新的方法或?qū)傩悦Q參數(shù)3:對象參數(shù)2中的方法或?qū)傩悦Q的具體的值。如果參數(shù)2是一個屬性,那么參數(shù)3可以直接設(shè)置這個屬性的值。如果參數(shù)2是一個方法,那么參數(shù)3可以設(shè)置自定義的某個方法名稱,這里不要寫成字符串的形式,而是直接寫某個方法名。如果參數(shù)2中的方法或?qū)傩悦Q與對象原有的方法或?qū)傩韵嗤敲淳鸵孕略O(shè)置的為準(zhǔn)??偨Y(jié)強(qiáng)調(diào)1.掌握接口的概念2.掌握hasattr判斷某個對象是否有某個屬性或者方法3.掌握getattr函數(shù)獲取某個對象的方法或?qū)傩?,并可以給予一個默認(rèn)值4.掌握setattr函數(shù)設(shè)置某個對象的犯法或?qū)傩?。訂?關(guān)注/點贊劉金玉編程零基礎(chǔ)Python教程類的繼承,類代碼塊復(fù)習(xí)類的屬性和方法的私有化。Python中的類的私有化,并非真正意義上的私有化后不能被調(diào)用,而是通過編譯器迂回的方式來重新定義私有化的成員名稱。使用一個庫inspect的getmembers方法可以看到某個對象的私有化屬性和方法。類代碼塊在定義的時候,使用了:而這個冒號在python中的表示一個代碼塊的開始。類代碼塊中的代碼同樣是從上到下讀取的。使用注意點:1.實例化一個類后,如果在方法外寫的代碼會被直接運行。2.類中寫的變量名稱,自動會被認(rèn)為類的屬性,這個屬性可以被該類的方法調(diào)用。類的繼承繼承:子類可以繼承父類的方法和屬性。繼承的代碼定義:Class父類名稱:父類成員Class子類名稱(父類名稱):#這里體現(xiàn)了繼承的定義
子類成員注意:子類繼承父類后,我們可以直接實例化子類,那么父類中的屬性和方法都可以被子類調(diào)用。類繼承的好處1.可以提取類的公共特性。2.容易理解類之間的關(guān)系。3.使得代碼更加簡化,更能表示現(xiàn)實事物對象以及關(guān)系。4.如果子類繼承的父類還有繼承關(guān)系,那么將繼承所有的父類的方法。??偨Y(jié)強(qiáng)調(diào)1.類代碼塊,可以通過類的實例化就可以輸出類中代碼的效果,主要理解代碼塊的讀取順序。2.類的繼承。掌握類繼承的定義以及類的調(diào)用方法,繼承了哪些。訂閱/關(guān)注/點贊劉金玉編程零基礎(chǔ)Python教程類的構(gòu)造方法復(fù)習(xí)Python中接口的概念。hasattr函數(shù)getattr函數(shù)setattr函數(shù)類的構(gòu)造方法構(gòu)造方法:類開始實例化的時候被最先初始化的方法。定義類的構(gòu)造方法使用:__init__魔法關(guān)鍵字,用做魔法方法。作用:往往對某個對象進(jìn)行初始化(實例化)的時候,對數(shù)據(jù)進(jìn)行初始化。類的構(gòu)造方法定義格式class函數(shù)名稱:def__init__(self,此處定義需要輸出化數(shù)據(jù)的形參):構(gòu)造方法的實際代碼處理塊。接著是其它的類的方法。構(gòu)造方法的重寫如果是繼承關(guān)系,那么子類也有構(gòu)造方法。如果子類存在構(gòu)造方法,繼承關(guān)系成立后,最終的結(jié)果也還是以子類的構(gòu)造方法為準(zhǔn)。這個重寫其實只是邏輯上表面重寫??偨Y(jié)強(qiáng)調(diào)1.掌握構(gòu)造方法的定義2.理解構(gòu)造方法的調(diào)用和重寫。訂閱/關(guān)注/點贊劉金玉編程零基礎(chǔ)Python教程類的多繼承復(fù)習(xí)Issubclass是否是子類__bases__獲取類的父類Isinstance函數(shù)檢測是否是某個類的實例。多繼承類似于c++中某個類一次可以繼承多個父類,所有被繼承的這些父類的方法和屬性都將可以被子類使用。注意:如果所繼承的父類的方法相同的情況下,那么按照從左到右的方向,依次由寫在左邊的類的方法覆蓋右邊類的方法。如果某個類的方法與繼承的父級中有相同的方法名稱,那么我們的結(jié)果就是以這個子類的方法名稱作為最終的方法。如何查看繼承的多個父級類是哪些?可以通過子類的__bases__(注意這里有兩個下劃線)Python中屬性的繼承規(guī)則呢?通過測試,我們知道屬性的繼承規(guī)則和方法的繼承規(guī)則是一樣的??偨Y(jié)強(qiáng)調(diào)1.掌握多繼承類的定義2.掌握查看多繼承類的魔法屬性3.掌握多繼承類的調(diào)用規(guī)則4.掌握屬性的繼承規(guī)則訂閱/關(guān)注/點贊劉金玉編程進(jìn)制轉(zhuǎn)換任意玩兒零基礎(chǔ)Python教程復(fù)習(xí)1、運算符優(yōu)先級同一級別的運算符,從左到右運算不同級別優(yōu)先級的,按照優(yōu)先級的優(yōu)先順序來進(jìn)行計算。2、python更適合數(shù)據(jù)分析基礎(chǔ)知識補(bǔ)充計算機(jī)中常用進(jìn)制有哪些?二進(jìn)制binary簡寫bin用B表示八進(jìn)制octal簡寫oct用O表示十進(jìn)制decimal簡寫dec用D表示十六進(jìn)制hex用H表示進(jìn)制之間的轉(zhuǎn)換Int函數(shù),int(參數(shù)1,參數(shù)2)參數(shù)1:用字符串表示一個數(shù)。參數(shù)2:用來表示進(jìn)制。Bin函數(shù),bin(參數(shù)),參數(shù)表示幾進(jìn)制的數(shù)Hex函數(shù),hex(參數(shù)),參數(shù)表示一個幾進(jìn)制的數(shù)Oct函數(shù),oct(參數(shù)),參數(shù)表示一個幾進(jìn)制的數(shù)十六進(jìn)制中的數(shù)值十進(jìn)制:0、1、2、…..8、9、10、11、12、13、14、15,16十六進(jìn)制:0、1、2、…..8、9、A、B、C、D、
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年公共空間設(shè)計與可持續(xù)社區(qū)建設(shè)
- 2026年綠色施工與環(huán)境影響最小化的策略
- 2026年關(guān)鍵橋梁的實時監(jiān)測與維護(hù)策略
- 2026年智能化建筑的供電系統(tǒng)設(shè)計
- 貨運安全資料員培訓(xùn)課件
- 貨站消防安全培訓(xùn)課件
- 神經(jīng)科護(hù)理實踐與護(hù)理管理
- 2026年福建華南女子職業(yè)學(xué)院單招綜合素質(zhì)考試模擬試題帶答案解析
- 2026年河南經(jīng)貿(mào)職業(yè)學(xué)院單招職業(yè)技能考試模擬試題帶答案解析
- 2026年廣東松山職業(yè)技術(shù)學(xué)院單招綜合素質(zhì)考試備考題庫帶答案解析
- 昆山鈔票紙業(yè)有限公司2026年度招聘備考題庫附答案詳解
- 2025年巴楚縣輔警招聘考試備考題庫附答案
- 2026云南省產(chǎn)品質(zhì)量監(jiān)督檢驗研究院招聘編制外人員2人考試參考試題及答案解析
- GB/T 46793.1-2025突發(fā)事件應(yīng)急預(yù)案編制導(dǎo)則第1部分:通則
- 老人再婚協(xié)議書
- 泥漿護(hù)壁成孔灌注樁施工操作規(guī)程
- 舞臺燈光效果課件
- 2025年中國工藝美術(shù)館面向社會招聘工作人員2人筆試歷年典型考題及考點剖析附帶答案詳解
- 滬教版生物科學(xué)八年級上冊重點知識點總結(jié)
- 焊縫的圖示法
- 2020年云南省中考英語試卷真題及答案詳解(含作文范文)
評論
0/150
提交評論