




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
項目一Python開發(fā)初體驗textbook教材Python程序設(shè)計項目式教程孫海洋
編著
電子工業(yè)出版社ISBN:9787121477546Contents目錄01.Python速覽02.搭建開發(fā)環(huán)境03.輸入/輸出—矩形面積04.認識數(shù)據(jù)類型—數(shù)值和字符串05.標準庫使用—圓周長和面積06.項目小結(jié)PartOnePython速覽了解Python起源及特點了解Python名字由來和LOGO熟記Python官網(wǎng)網(wǎng)址掌握Python語言的主要特點了解Python兩個版本及其區(qū)別Python起源Python的起源Python的設(shè)計者GuidovanRossum(吉多·范羅蘇姆),于1956年出生于荷蘭,1982年畢業(yè)于阿姆斯特丹大學(xué)(荷蘭文:UniversiteitvanAmsterdam,縮寫為UvA),并獲得了數(shù)學(xué)和計算機科學(xué)雙碩士學(xué)位。在1989年圣誕節(jié)期間為了打發(fā)無聊的時光,Guido設(shè)計并開發(fā)出了Python這種腳本解釋型語言,并于1991年公開發(fā)行了Python的第一個版本。Python的誕生Guido當(dāng)時非常喜歡看由“巨蟒劇團”出演的電視劇“飛翔的馬戲團”(即MontyPython'sFlyingCircus),是“巨蟒劇團”(MontyPython)的粉絲。于是,Guido便以劇團的名稱把編程語言命名為Python。雖然Python命名本意與動物蟒蛇并無關(guān)聯(lián),但是,依然把一對“雙蟒蛇”作為了該語言的官方()LOGO。Python起源Python主要特點1.簡潔Python的語法相較于其它語言來說簡潔明了,易于理解和學(xué)習(xí),使得開發(fā)者可以快速上手并編寫出高質(zhì)量的代碼。我們分別使用Java、Python等編程語言輸出“Hello”的程序?qū)Ρ热缦滤尽ython主要特點2.面向?qū)ο驪ython是完全面向?qū)ο蟮恼Z言,所有事物都視為對象,包括數(shù)值、字符串、函數(shù)等。這使得代碼組織和重用更為靈活和高效。3.強大的開發(fā)庫Python擁有豐富的標準庫和大量第三方庫,提供了廣泛的功能和工具。4.解釋型語言Python是解釋型語言,代碼在運行時由解釋器逐行解釋執(zhí)行。5.其他特點Python屬于高級語言,具有良好的可移植性及安全性。Python版本01Python2.xPython2.x是Python語言的一個重要版本,它支持許多Python3.x的特性,但已經(jīng)停止維護。02Python3.xPython3.x是Python語言的最新版本,它包含了許多新特性和改進,是Python開發(fā)的首選版本。03Python2.x與Python3.x的差異Python2.x和Python3.x在語法、庫和API等方面存在一些差異,Python官方已于2020年1月1日宣布不再維護Python2版本,各個第三方庫也逐漸放棄支持Python2,本教材主要講解Python3。課堂小測1.以下關(guān)于Python的說法正確的是()A.Python與C語言一樣是面向過程的程序設(shè)計語言B.Python與面向?qū)ο笳Z言C++一樣同屬于編譯型語言C.良好的可移植性是Python區(qū)別于其他編程語言的主要特點D.print2+3是Python2的正確語法,其輸出結(jié)果為5PartTwo搭建開發(fā)環(huán)境培養(yǎng)通過官網(wǎng)下載安裝Python3并配置環(huán)境變量的能力掌握使用IDLE交互式開發(fā)Python的能力掌握使用文本編輯源程序文件開發(fā)Python的能力掌握通過Anaconda安裝JupyterNotebook的能力了解PyCharm、Spyder等集成開發(fā)環(huán)境的安裝和使用安裝配置Python3下載地址:/downloads/下載Python301打開鏈接后,選擇相應(yīng)的Python版本,下載安裝,如圖1-1所示。02安裝Python3假設(shè)安裝在了C:\Python\目錄下,則在安裝目錄C:\Python\Doc下有Python幫助文檔,如圖1-2所示。圖1-1安裝包下載界面圖1-2幫助文檔安裝配置Python303設(shè)置環(huán)境變量以Win10操作系統(tǒng)為例,搜索環(huán)境變量,單擊“編輯系統(tǒng)環(huán)境變量”(圖1-3所示)→點擊“環(huán)境變量”按鈕(圖1-4所示)→打開“系統(tǒng)變量”對話框→選中“Path”→單擊“編輯”按鈕→單擊“新建”按鈕→輸入Python安裝目錄“C:\Python\”→單擊“確定”按鈕→單擊“確定”按鈕,如圖1-5所示。圖1-3搜索環(huán)境變量圖1-4打開環(huán)境變量圖1-5配置環(huán)境變量Python解釋器自帶IDLEIDLE是Python解釋器自帶的集成開發(fā)環(huán)境,提供了基本的代碼編輯和調(diào)試功能。IDLE簡介安裝并配置好環(huán)境變量后,通過計算機左下角“開始”找到剛安裝好的Python,打開IDLE(IntegratedDevelopmentandLearningEnvironment),進入交互式編程界面,在提示符>>>后輸入要執(zhí)行的命令,然后按回車鍵解釋執(zhí)行,如圖1-6所示。IDLE使用IDLE提供了代碼編輯、運行、調(diào)試等功能,可以滿足初學(xué)者的基本開發(fā)需求。IDLE功能圖1-6交互式環(huán)境開發(fā)文本編輯.py源程序并解釋執(zhí)行假設(shè)在D:\Python_WorkSpace\Chapter1目錄下新建一個記事本文件print_test.txt,編輯兩條Python輸出語句并保存,如圖1-7所示。01創(chuàng)建記事本文件把文件后綴名由.txt修改為.py文件,如圖1-8所示。02修改為Python源文件后綴打開“命令提示符”(點擊Win+R,然后在提示框輸入cmd),先鍵入d:并回車進入D盤,再使用cd命令更改目錄到D:\Python_WorkSpace\Chapter1下,然后調(diào)用Python解釋器解釋執(zhí)行文件print_test.py,輸出運行結(jié)果,如圖1-9所示。03解釋執(zhí)行.py源文件圖1-7記事本文件圖1-8修改為.py后綴圖1-9執(zhí)行源文件Python開發(fā)環(huán)境初識驗證代碼IDE種類0103所有案例代碼均在JupyterNotebook中驗證通過,確保學(xué)習(xí)順利。PyCharm、JupyterNotebook、Spyder等是常用的PythonIDE。02參考相關(guān)資料安裝IDE,本教材采用Anaconda安裝JupyterNotebook。安裝IDEPartThree輸入/輸出—矩形面積【任務(wù)描述】從鍵盤輸入矩形的長和寬,計算其面積并輸出。【任務(wù)分析】該任務(wù)涉及數(shù)值輸入操作,變量及輸出操作。掌握print輸出函數(shù)的原型及調(diào)用掌握input輸入函數(shù)的原型及調(diào)用掌握int、float及eval的使用和差別掌握type查看類型函數(shù)的使用變量及類型查看函數(shù)type保留字(關(guān)鍵字):指在編程語言中已經(jīng)定義過的字,編程者不能再將這些字作為自定義標識符使用。保留字通常與Python版本有關(guān)。Python3.8.5版本,其保留字共有35個。變量:是有名字(標識符)的內(nèi)存空間,且其中存儲和表示的值可以改變。變量及類型查看函數(shù)type變量類型:Python中變量本身無類型,也無須用類型關(guān)鍵字指定,其類型是由其值的類型決定的,可使用type()函數(shù)查看變量或數(shù)據(jù)的類型。type函數(shù)使用示例如下。變量名(標識符)命名規(guī)則:由大小寫英文字母(A~Z,a~z)、數(shù)字(0~9)、下畫線(_)和漢字或其組合構(gòu)成,但不能以數(shù)字開頭。例如,Class_5、_a、姓名等都是Python合法的標識符;而5a、a@、¥等都是錯誤的標識符。另外,Python標識符對大小寫敏感,即A和a為不同的標識符。標識符不能與保留字相同。print函數(shù)使用value:輸出各數(shù)據(jù)項的值,以逗號間隔。sep:可選,輸出各value值的間隔符,默認空格,也可顯式指定,如逗號sep=','。end:可選,輸出所有value后的結(jié)束符,默認換行,也可顯式指定,如空格end=''。參數(shù)解析print函數(shù)使用1.未顯式指定輸出數(shù)據(jù)項的間隔符,默認為空格。2.顯式指定各輸出數(shù)據(jù)項的間隔符。3.未顯式指定各數(shù)據(jù)項輸出完畢后的結(jié)束符,默認為換行。4.既指定數(shù)據(jù)項的輸出間隔符,又指定結(jié)束符。input函數(shù)使用prompt:可選,通常為增強代碼可讀性的輸入提示信息。參數(shù)解析注:不管輸入的是字符串、數(shù)值還是其他類型,該函數(shù)均返回其對應(yīng)的字符串類型。input函數(shù)使用1.從鍵盤上輸入一句話,直接保存到變量s中2.使用input()輸入數(shù)值,返回值保存到變量中,使用type()函數(shù)查看其返回值類型。3.input函數(shù)把輸入的數(shù)據(jù)均以字符串類型返回,如果輸入的為數(shù)值,則可通過強制類型轉(zhuǎn)換把數(shù)值字符串轉(zhuǎn)換為整型數(shù)int或浮點數(shù)float;或使用更通用的eval()函數(shù)從數(shù)值字符串中提取出相應(yīng)的數(shù)值。課堂小測以下關(guān)于Python的說法中錯誤的是()A.可使用type()查看某數(shù)據(jù)或變量的類型B.不管輸入的是整型、浮點型還是字符串型,input函數(shù)均返回字符串型C.a(chǎn)=input('輸入整數(shù):'),若輸入3.14,則a為“3.14”D.a(chǎn)=int(input('輸入整數(shù):')),若輸入3.14,則a為3PartFour認識數(shù)據(jù)類型—數(shù)值和字符串掌握常見算術(shù)運算符的使用掌握print的格式化輸出方式掌握數(shù)值類型的數(shù)據(jù)掌握字符串類型的表示和使用數(shù)值類型及print格式化輸出Python語言的數(shù)據(jù)類型主要有數(shù)值、字符串、列表、元組、集合和字典等數(shù)值型數(shù)據(jù)通常包括:整數(shù)和浮點數(shù)type函數(shù)可以查看數(shù)值類型運算符描述舉例+加法5+2.15=7.15-減法5-3=2*乘法2*3=6/除法11/4=2.75//相除取商11//4=2%相除取余11%4=3**冪次方2**10=1024常見運算符數(shù)值類型及print格式化輸出print調(diào)用格式:print(格式控制%(輸出項列表))格式控制部分為字符串,當(dāng)輸出項數(shù)多于一個時,必須用()括起來,各輸出項之間用逗號隔開。python中有許多格式控制符,如十進制常用%d或%i,八進制用%o,浮點數(shù)用%f等等,詳細可見書中列舉。Python字符串起止邊界Python語言中字符串?dāng)?shù)據(jù)的起止邊界既可以是單引號也可以是雙引號。但若字符串本身含有單引號或雙引號,那么起止邊界不能直接含有起止邊界符,以免報錯。通常有如下兩種解決方案。引號形式不同字符串內(nèi)容中的引號形式與起止邊界不同,確保字符串正確解析轉(zhuǎn)義字符表示字符串內(nèi)容中的引號以轉(zhuǎn)義字符形式表示,單、雙引號均可作為起止邊界。PartFive標準庫使用—圓周長和面積【任務(wù)描述】輸入圓的半徑,計算并輸出其周長和面積,分別保留兩位和三位小數(shù)。【任務(wù)分析】該任務(wù)需使用標準庫math中的圓周率,以及保留小數(shù)位數(shù)的print輸出格式控制方法。了解常見的標準庫和第三方庫掌握標準庫的兩種調(diào)用方式模塊的兩種訪問方式在Python中,可以直接使用import模塊名導(dǎo)入模塊直接導(dǎo)入使用from語句可以導(dǎo)入模塊中的特定函數(shù)或類,可以使用from模塊名import屬性名或from模塊名import函數(shù)名使用from語句0102調(diào)用方式一:模塊名.屬性名或模塊名.函數(shù)名()調(diào)用方式二:屬性名或函數(shù)名()print格式化輸出格式化輸出使用print函數(shù)進行格式化輸出,如print("圓周長:{:.2f}".format(a)),其中{:.2f}表示保留兩位小數(shù)。字符串格式化使用字符串格式化進行輸出,如print("圓周長:%s"%(a)),其中%s表示字符串。f-string格式化使用f-string進行格式化輸出,如print(f"圓周長:{a:.2f}"),其中:.2f表示保留兩位小數(shù)。注:%.nf:四舍五入保留小數(shù)點后n位。%.0f:四舍五入取整數(shù)部分。%f:通常默認保留小數(shù)點后6位,不夠補0。課堂小測以下代碼執(zhí)行正確的是()A.frommathimportsqrtsqrt(-4)B.frommathimportsqrtmath.sqrt(4)C.importmathsqrt(4)D.importmathmath.sqrt(5)PartSix項目小結(jié)項目小結(jié)THANKS!項目二
簡易計算器———分支結(jié)構(gòu)textbook教材Python程序設(shè)計項目化教程孫海洋
編著
電子工業(yè)出版社ISBN:9787121477546設(shè)計一個簡易計算器,根據(jù)輸入數(shù)字進行加(+)、減(-)、乘(*)、除(/)、相除取商(//)、相除取余(%)等進行相應(yīng)的運算,并輸出其運算結(jié)果。項目描述Contents目錄01.判斷考試是否通過—if-else雙分支04.簡易計算器的項目實施02.判斷商品是否有促銷活動—if分支03.根據(jù)成績判斷等級—if-elif-else05A.項目小結(jié)PartOne判斷考試是否通過——if-else雙分支掌握if-else分支結(jié)構(gòu)掌握if-else的執(zhí)行流程能夠使用if-else解決實際問題if-else分支結(jié)構(gòu)【任務(wù)描述】輸入一成績,判斷其是否及格,成績大于等于60分及格,小于60分不及格。了解if-else分支結(jié)構(gòu)的語法格式注:if體和else體既可以是一條語句,也可以是多條語句,注意縮進。任務(wù)流程與實施if-else分支結(jié)構(gòu)最重要的步驟就是畫出流程圖對于上述問題,我們可以畫出流程圖如下任務(wù)流程與實施若輸入成績58,則會進入B房間,輸出結(jié)果如下:若輸入成績96,則會進入A房間,輸出結(jié)果如下:PartTwo判斷商品是否有促銷活動—if分支掌握if分支結(jié)構(gòu)掌握if分支結(jié)構(gòu)的執(zhí)行流程能夠使用if分支結(jié)構(gòu)解決實際問題if分支結(jié)構(gòu)一商店為提升工作日的銷售額,策劃了優(yōu)惠促銷活動,星期一、二、四這三天,凡一次性購物總額在200元以上的,減免30元。幫顧客計算要付的金額。了解if分支結(jié)構(gòu)的語法格式畫出流程圖:字符串格式化函數(shù)formatformat格式:string.format(數(shù)據(jù)項列表)
保留小數(shù)點后n位:'{:.nf}'.format(num)。任務(wù)實施若滿足條件則輸出:不滿足任意一個條件則輸出:PartThree根據(jù)成績判斷等級—if-elif-else掌握if-elif-else級聯(lián)多分支結(jié)構(gòu)掌握if-elif-else級聯(lián)多分支結(jié)構(gòu)的執(zhí)行流程能夠使用級聯(lián)多分支結(jié)構(gòu)解決實際問題if-elif-else級聯(lián)多分支結(jié)構(gòu)輸入一成績,判斷其對應(yīng)等級,90分及以上為優(yōu)秀,大于等于80分且小于90分為良好,大于等于60分且小于80分為及格,小于60分為不及格。對于該任務(wù),任務(wù)總共有四種情況,這屬于多分支情況,可使用if-elif-else級聯(lián)多分支實現(xiàn)。我們先寫出if-elif-else級聯(lián)多分支結(jié)構(gòu)的語法格式說明:該結(jié)構(gòu)中可含有1個或多個elif部分,else部分可省略。從前往后依次判斷各條件表達式的值,如果某個條件表達式成立,即為邏輯真,則執(zhí)行其對應(yīng)的語句組,并終止整個分支結(jié)構(gòu)的執(zhí)行。如果上述所有表達式均不成立,即均為邏輯假且含有else部分時,則執(zhí)行對應(yīng)的else部分語句組。執(zhí)行流程與任務(wù)實施輸出結(jié)果如下:PartFour簡易計算器的項目實施項目實施運行結(jié)果如下:PartFive項目小結(jié)主要知識點總結(jié)知識點示例說明if分支結(jié)構(gòu)if條件表達式:
語句組A隱式雙分支:執(zhí)行語句組A和不執(zhí)行該語句組A兩種情況if-else分支結(jié)構(gòu)if條件表達式:
語句組A:else:
語句組B顯式雙分支:當(dāng)條件表達式的值為邏輯真時,執(zhí)行語句組A,否則執(zhí)行語句組Bif-elif-else分支結(jié)構(gòu)if條件表達式1:
語句組1elif條件表達式2:
語句組2…elif條件表達式n:
語句組nelse:
其他語句組該if-elif-else級聯(lián)多分支結(jié)構(gòu)的執(zhí)行流程是:
從前往后依次判斷各表達式的值,如果某表達式的值為真,則執(zhí)行對應(yīng)的分支語句組,并終止整個多分支結(jié)構(gòu)。若所有表達式的值均為假,且含有else時,則執(zhí)行對應(yīng)的else語句組。
else部分可以省略易錯知識點總結(jié)縮進錯誤01這是由于縮進不當(dāng),造成邏輯混亂。對上述代碼進行修改:易錯知識點總結(jié)包含重復(fù)條件02條件的重復(fù)包含,雖然既無語法錯誤,也無運行時錯誤,且能得到正確結(jié)果,但為規(guī)范起見,本教材把這種邏輯不清晰的程序視為“錯誤”。對上述代碼進行修改:易錯知識點總結(jié)語義錯誤03a=5為賦值表達式,其結(jié)果非邏輯值,故錯誤。a==5為關(guān)系表達式,其值為邏輯值對上述代碼進行修改:THANKS!項目三
循環(huán)結(jié)構(gòu)textbook教材Python程序設(shè)計項目化教程孫海洋
編著
電子工業(yè)出版社ISBN:9787121477546Contents目錄01.抓娃娃游戲—while循環(huán)02.猜數(shù)字謎游戲—循環(huán)流程控制04.項目小結(jié)03.模擬發(fā)紅包程序—for循環(huán)、列表PartOne
任務(wù)一抓娃娃游戲—while循環(huán)while循環(huán)結(jié)構(gòu)【任務(wù)描述】抓娃娃游戲玩一局需要3元錢,根據(jù)充值卡中的金額判斷還能玩幾局?!救蝿?wù)分析】當(dāng)(while)充值卡中的余額(balance)大于等于3元時,游戲一直進行(重復(fù)),同時每次支付3元,即balance-=3,直到balance小于3元時,游戲終止。while語句語法格式如下:執(zhí)行流程:首先判斷循環(huán)控制表達式Exp_cntrl的值,當(dāng)該表達式的值為邏輯真(True)時,會一直執(zhí)行循環(huán)體(語句組A),直到表達式的值為邏輯假(False)時,結(jié)束循環(huán)體執(zhí)行。流程圖如下:循環(huán)控制變量任務(wù)實施運行結(jié)果如下:參考代碼如下:鞏固案例【案例1】輸入任意一個十進制正整數(shù),將其“反序”后輸出(若輸入:1234,則輸出:4321)把原數(shù)從最低位到最高位逐位分離→按照分離出的順序,用分離出的數(shù)字組成新的十進制整數(shù)逐步分離出當(dāng)前n的最低位數(shù)字m為新數(shù)字,將剛分離的t作為低位,完成倒序去除已分離的低位,為下次分離做準備鞏固案例【案例2】計算并輸出1-3+5-7+…-99的值。符號位:每執(zhí)行一次sign就變成原來的相反數(shù)數(shù)值位:實現(xiàn)奇數(shù)累加當(dāng)前數(shù)據(jù)項:組建當(dāng)前的數(shù)據(jù)保存在item中求和變量:將每一輪得出的數(shù)據(jù)累加到s中PartTwo任務(wù)二猜數(shù)字謎游戲—循環(huán)流程控制【任務(wù)描述】設(shè)計一個猜數(shù)字游戲,隨機生成1到100之間的一個整數(shù),玩家總共有5次機會,每次輸入所猜數(shù)字,程序給出相應(yīng)的提示信息(“再大一點”、“再小一點”或“$恭喜您猜中了$”),如果猜中了,提示“$恭喜您猜中了$”,“總共猜了*次”,游戲結(jié)束,否則游戲繼續(xù);總共有5次機會,若均沒猜中,則提示“很遺憾,今天運氣不好!”并退出循環(huán)。任務(wù)描述【任務(wù)分析】該任務(wù)涉及循環(huán)結(jié)構(gòu),所以讓我們一起來學(xué)習(xí)一下break、continue以及while-else語句吧!break語句break語句語法格式執(zhí)行流程在循環(huán)體中,當(dāng)執(zhí)行到break語句時,終止break所在層的循環(huán),即“循環(huán)體內(nèi)break后的語句組”部分將不再被執(zhí)行,程序執(zhí)行流程從“循環(huán)結(jié)構(gòu)后的語句組”處,繼續(xù)往后執(zhí)行。break語句【示例1】分析以下程序,輸出其運行結(jié)果。因為n<5,所以n的取值為0,1,2,3,4,執(zhí)行5次后循環(huán)結(jié)構(gòu)正常終止。但當(dāng)n==4時,滿足條件,執(zhí)行下面一行語句,然后執(zhí)行break語句。在單層循環(huán)中,當(dāng)執(zhí)行到break時,立刻終止執(zhí)行整個循環(huán)結(jié)構(gòu),直接跳出整個while語句,執(zhí)行倒數(shù)第二行語句。continue語句語法格式執(zhí)行流程在循環(huán)體中,當(dāng)執(zhí)行到continue語句時,本次循環(huán)體的執(zhí)行流程將跳過“循環(huán)體內(nèi)continue后的語句組”,繼續(xù)執(zhí)行“循環(huán)判斷表達式”,即提前進入下一次的循環(huán)準備工作。continue語句continue語句【示例】分析以下程序,輸出其運行結(jié)果。如果n==
4,先執(zhí)行下面一行語句,然后執(zhí)行continue語句,然后跳過打印“第4天打卡”這句話,并不結(jié)束循環(huán)結(jié)構(gòu),接著判斷n<5是否依然為邏輯真。運行結(jié)果如下:while-else語句語法格式執(zhí)行流程當(dāng)循環(huán)條件表達式Exp_cntrl的邏輯值為假(False),即循環(huán)體執(zhí)行正常結(jié)束時,如果含有else部分,則執(zhí)行一次對應(yīng)的else部分(語句組B)。如果循環(huán)執(zhí)行非正常結(jié)束,則不會執(zhí)行else部分。while-else循環(huán)結(jié)構(gòu)與任務(wù)實施else部分可有可無while-else循環(huán)結(jié)構(gòu)【示例1】分析以下程序,輸出其運行結(jié)果。先執(zhí)行while循環(huán),循環(huán)正常結(jié)束后執(zhí)行else部分,這時整個while-else結(jié)構(gòu)才執(zhí)行結(jié)束,接著執(zhí)行while-else結(jié)構(gòu)后的部分。運行結(jié)果如下:注:若while循環(huán)中包含break,則不執(zhí)行else部分。任務(wù)實施1.回到猜字謎游戲,第一步我們需要先導(dǎo)入random模塊,調(diào)用randint函數(shù)生成1到100之間的隨機整數(shù)作為謎底ans。2.輸入第一次所猜數(shù)字guess,次數(shù)cnt記為1。3.采用while-else循環(huán)結(jié)構(gòu),只要guess!=ans,循環(huán)即猜謎游戲就一直進行下去,當(dāng)guess==ans時,猜中答案,即循環(huán)正常停止時,進入并執(zhí)行else部分語句組(“恭喜您猜中了”)。任務(wù)實施運行結(jié)果如下:PartThree任務(wù)三模擬發(fā)紅包程序—for循環(huán)、列表【任務(wù)描述】輸入發(fā)放總金額及發(fā)放個數(shù),隨機生成每個紅包的金額,并輸出。任務(wù)描述根據(jù)上述代碼,我們來逐個分析。首先,我們了解一下列表列表定義格式:列表名=[元素0,元素1,元素2,…,元素n-1]注意:列表的下標從0開始,各個元素可以是相同類型的,也可以是不同類型的,還可以是列表本身(列表嵌套)。range函數(shù)(1)僅給出結(jié)束位置:range(stop),對象range(0,stop)。該對象返回的序列是:0,1,…,stop-1,即stop為假尾巴,不被包含在其中(2)給出起、止位置:range(start,stop)。返回對象:start,start+1,start+2,…,stop-1。(3)起止及步長:range(start,stop,step)。從start到stop-1的區(qū)間內(nèi),按步長為step取若干樣點生成序列對象?!咀⒁狻浚翰介L為正,表示遞增,start<stop;步長為負,表示遞減,start>stopfor循環(huán)結(jié)構(gòu)我們先來了解一下for循環(huán)語法格式:可以是字符串、列表、元組等數(shù)據(jù)類型,也可以是range函數(shù)生成的序列對象等。執(zhí)行流程:循環(huán)變量的取值范圍從序列或序列對象的首元素開始,依次取到尾元素,即for循環(huán)的執(zhí)行次數(shù)等于“序列”的元素數(shù)量。for循環(huán)結(jié)構(gòu)習(xí)題1:從鍵盤輸入一字符串,把其中的大寫字母變?yōu)樾?,小寫字母變?yōu)榇髮?,其他不變,輸出轉(zhuǎn)換后的字符串。分析:Python中沒有字符類型,單個字符如'a'也被當(dāng)成字符串處理。遍歷原字符串中的每個子字符串s,然后對每個s進行判斷,做相應(yīng)的大小寫轉(zhuǎn)換(轉(zhuǎn)小寫:str.lower()、轉(zhuǎn)大寫:str.upper()),并把轉(zhuǎn)換后的結(jié)果鏈接到定義的新字符串后面,循環(huán)結(jié)束后即為轉(zhuǎn)換后的字符串。for循環(huán)結(jié)構(gòu)參考代碼:運行結(jié)果:for循環(huán)結(jié)構(gòu)習(xí)題2:輸出斐波那契數(shù)列的前10項,已知數(shù)列的前兩項值為0和1,從第三項開始每一項都等于其相鄰前兩項之和。分析1:定義長度為10的列表ls,下標范圍是從0到9,其中0、1號位置分別為數(shù)列前兩項的值0和1,即ls=[0,1]。故只需計算出第3到第10項,并依次存放到列表的2到9號位置。for循環(huán)結(jié)構(gòu)分析2:從第3項(i=2號位置)開始的每一項t都等于其相鄰的前兩項ls[i-1]和ls[i-2]之和,即t=ls[i-1]+ls[i-2]。然后調(diào)用列表的append方法,把t附加到列表ls的后面,即ls.append(t)。前兩項之和相加,若該位置下標為i,即ls[i]=ls[i-1]+ls[i-2]t參考代碼:運行結(jié)果:隨機數(shù)模塊random模塊導(dǎo)入:importrandom1.生成隨機浮點數(shù)(1)random()生成[0,1)之間的隨機浮點數(shù)(2)uniform(m,n)函數(shù)生成[m,n)或[m,n]之間的隨機浮點數(shù)2.生成隨機整數(shù)(1)randint(m,n)生成[m,n]之間的隨機整數(shù)【注意】包含起止邊界隨機數(shù)模塊random【示例1】生成5個10以內(nèi)的隨機奇數(shù)。randrange(start,stop=None,step=1)類似range返回序列對象中的隨機整數(shù)值,不包含“假尾巴”stop,step為步長某次運行結(jié)果:參考代碼:隨機數(shù)模塊random3.從給定集合中隨機選取元素(1)choice(sequence)從指定非空序列中隨機選取元素4.隨機打亂原序列元素的存儲順序shuffle(x,random=None),返回None(2)sample(sequence,k)抽樣:從指定非空序列中隨機抽取
k個不重復(fù)的元素PartFour項目小結(jié)知識點回顧知識點示例說明while循環(huán)whileExp_cntrl:
循環(huán)體語句組當(dāng)條件Exp_cntrl為邏輯真時,一直執(zhí)行循環(huán)體,當(dāng)條件為假時,循環(huán)結(jié)束。for循環(huán)for變量in序列:
循環(huán)體語句組循環(huán)的次數(shù)等于序列中元素的數(shù)量循環(huán)流程控制語句break終止并退出所在層循環(huán)。continue本次循環(huán)中,continue后的語句不再執(zhí)行,提前進入下一次循環(huán)條件的判斷THANKS!項目四打印九九乘法表與星號陣textbook教材Python程序設(shè)計項目化教程孫海洋
編著
電子工業(yè)出版社ISBN:9787121477546任務(wù)描述【任務(wù)描述】打印九九乘法表,如下所示?!痉治觥吭擁椖繉儆诖蛴≥敵龆嘈卸嗔械那榫?,控制行數(shù)需使用一層循環(huán),而每一行又有多列,控制每行的列數(shù)又需要一層循環(huán),故屬于雙重循環(huán),即循環(huán)的嵌套。接下來我們使用兩個案例來讓同學(xué)們了解循環(huán)的嵌套!Contents目錄01.輸出星號陣——循環(huán)嵌套02.輸出星號三角陣03.項目實施04.鞏固案例05.項目小結(jié)PartOne輸出星號陣——循環(huán)嵌套掌握循環(huán)嵌套結(jié)構(gòu)能夠使用循環(huán)嵌套解決實際問題輸出星號陣【任務(wù)描述】編程輸出如下圖形。
********************【定義】在一個循環(huán)結(jié)構(gòu)內(nèi),又嵌入另一個循環(huán)結(jié)構(gòu),稱為循環(huán)結(jié)構(gòu)的嵌套或多重循環(huán),常用的為二重循環(huán)。通常把外層的循環(huán)稱為外循環(huán),內(nèi)層的循環(huán)稱為內(nèi)循環(huán)。while循環(huán)、for循環(huán)均可相互嵌套。分析:輸出該圖形,我們需要用到循環(huán)嵌套任務(wù)實施參考代碼:因為圖形的每一行都是固定的形狀*****,重復(fù)執(zhí)行4次即得目標圖形分析每行圖形是一個星號*之后緊跟一個空格,每行5個星號,故重復(fù)5次外層循環(huán)控制行內(nèi)層循環(huán)控制列運行結(jié)果:PartTwo輸出星號三角陣掌握三角陣的輸出能夠使用循環(huán)嵌套解決實際問題輸出星號三角形【任務(wù)描述】編程輸出如下圖形。
**********由圖可知,每行輸入的星號與其所在的行數(shù)有一定的聯(lián)系參考代碼PartThree項目實施項目實施分析1:九九乘法表的輸出形狀與打印星號三角形類似,其程序框架如下:分析2:觀察發(fā)現(xiàn),每行輸出的算式與其行數(shù)一致。假設(shè)用變量j遍歷第i行的所有列,其代碼如下:分析3:參考代碼如下:PartFour鞏固案例鞏固案例【案例1】從鍵盤輸入正整數(shù)n,求s=1+(1+2)+(1+2+3)+…+(1+2+3+…+n)的值。分析1:求和變量s可以看成n項之和,設(shè)當(dāng)前項用term表示。第1項:term=1、第2項:term=(1+2)、第3項:term=(1+2+3)、…、第n項:term=(1+2+3+…+n),把每一項term累加到求和變量s上,使用外層循環(huán)控制該操作,循環(huán)累加n次,設(shè)i為循環(huán)控制變量,則循環(huán)結(jié)構(gòu)如下:分析2:term=(1+2+3+…+i),即把1、2、3、…、i累加到term上(term初始為0),設(shè)j為循環(huán)控制變量,則第1步中,“計算第i項的term值”的代碼如下:鞏固案例分析3:把第(2)步代碼嵌入到第(1)步的for循環(huán)中,即可得如下代碼:參考代碼:鞏固案例【案例2】編程輸出如下矩陣:
1
234
2
468
36912分析1:觀察該矩陣,是一個3行4列的矩陣,使用for循環(huán)控制行的輸出,設(shè)行的循環(huán)控制變量為i,用來控制行。列的循環(huán)控制變量為j,用來控制列,然后換行。其代碼如下:分析2:觀察輸出的每個數(shù)字,是數(shù)字所在的行*數(shù)字所在的位置,比如4在第2行,它的位置是第2個,即2*2=4,12在第3行,它的位置是第4個,即3*4=12。其代碼如下:鞏固案例分析3:把第2步嵌入到第1步的程序框架中,其代碼如下:分析4:參考代碼如下:PartFive項目小結(jié)項目小結(jié)實現(xiàn)功能錯誤示例正確示例******row=3foriinrange(1,row+1):
forjinrange(1,i+1):
print('*',end='')
print()row=3foriinrange(1,row+1):
forjinrange(1,i+1):
print('*',end='')
print()#正確位置本項目主要介紹了循環(huán)嵌套。易錯知識點小結(jié)如表4-1所示。表4-1易錯知識點小結(jié)THANKS!項目五簡易銀行系統(tǒng)——函數(shù)textbook教材Python程序設(shè)計項目化教程孫海洋
編著
電子工業(yè)出版社ISBN:9787121477546項目描述【問題描述】設(shè)計一個建議銀行系統(tǒng),銀行根據(jù)客戶輸入,幫其辦理相應(yīng)的業(yè)務(wù),主要包括存款、取款、查詢等相關(guān)業(yè)務(wù)。Contents目錄01.多功能計算器設(shè)計——為什么使用函數(shù)02.人狗大戰(zhàn)——函數(shù)應(yīng)用03.掌握變量的作用域04.掌握匿名函數(shù)05.項目實施06.項目小結(jié)PartOne多功能計算器設(shè)計—為什么使用函數(shù)掌握函數(shù)定義結(jié)構(gòu)掌握函數(shù)調(diào)用結(jié)構(gòu)能夠使用函數(shù)解決簡單問題任務(wù)描述【任務(wù)描述】設(shè)計一個能實現(xiàn)加、減、乘、除等相關(guān)運算的簡易計算器。運行結(jié)果如圖:讓我們一起來學(xué)習(xí)函數(shù)的基本概念來完成這個任務(wù)吧!函數(shù)概念與分類函數(shù)定義函數(shù)就是模塊,即把每一個功能相對獨立的代碼封裝起來。函數(shù)分類函數(shù)可分為庫函數(shù)(標準庫和第三方庫)和自定義函數(shù)。庫函數(shù):標準庫函數(shù)如math庫中的sqrt等;第三方庫函數(shù)如matplotlib庫中的繪圖函數(shù)plot、pie等。自定義函數(shù):程序設(shè)計者根據(jù)功能自己編寫的函數(shù)。函數(shù)定義與調(diào)用1.自定義函數(shù)定義格式def函數(shù)名(參數(shù)1,參數(shù)2,…):函數(shù)體一個函數(shù)定義包含函數(shù)頭和函數(shù)體兩部分。一般把關(guān)鍵字def、函數(shù)名、參數(shù)列表、冒號這四部分稱為函數(shù)頭;冒號后縮進的部分稱為函數(shù)體。函數(shù)名:符合標識符的命名規(guī)則,最好見名知意。如使用add作為求和函數(shù)的函數(shù)名,sort作為排序函數(shù)的函數(shù)名。參數(shù)表:函數(shù)定義時的參數(shù)又稱為形式參數(shù),簡稱形參。根據(jù)有無參數(shù),函數(shù)可分為帶參函數(shù)和無參函數(shù)。返回值:可有可無,返回關(guān)鍵字為return。【說明】函數(shù)定義與調(diào)用2.自定義函數(shù)調(diào)用格式在學(xué)習(xí)調(diào)用格式之前,我們來了解一下什么是帶參函數(shù)和無參函數(shù)(1)帶參函數(shù):可含有一個或多個形參,多個形參之間用逗號分隔,其代碼如下:(2)無參函數(shù),不含參數(shù),但不能省略括號,其代碼如下:帶參函數(shù)調(diào)用格式:函數(shù)名(參數(shù)1,參數(shù)2,…)無參函數(shù)調(diào)用格式:函數(shù)名()任務(wù)實施進行加減乘除運算使用無限循環(huán)讓用戶選擇運算類型。如果用戶選擇5,則打印退出信息并退出循環(huán)PartTwo人狗大戰(zhàn)——函數(shù)應(yīng)用掌握字典數(shù)據(jù)類型的使用掌握函數(shù)的定義和調(diào)用能夠自定義函數(shù)解決實際問題任務(wù)描述【任務(wù)描述】模擬一個人狗大戰(zhàn)游戲,人選手有姓名、年齡、生命值和攻擊力等,狗選手有名字、品種、生命值和攻擊力。人有打狗的行為,狗有咬人的行為。字典?函數(shù)定義?調(diào)用?數(shù)據(jù)類型—字典1.字典定義格式字典名={key1:value1,key2:value2,…,keyn:valuen}【注意】:鍵與值之間用冒號間隔構(gòu)成鍵值對,然后使用逗號連接若干鍵值對。2.字典常見操作操
作說
明舉
例新建字典手動大括號作為起止邊界d={}#空字典函數(shù)dict()
d=dict()#空字典,等同{}增加元素添加d[key]=v當(dāng)key不存在時即添加新鍵值對d={'Name':'Tom','Age':18}d['Sc']=98
#鍵'Sc'在d中原不存在,即增加print(d)
#{'Name':'Tom','Age':18,'Sc':98}數(shù)據(jù)類型—字典操
作說
明舉
例刪除元素pop函數(shù)刪除指定key值的鍵值對d.pop(key)
若key存在,返回對應(yīng)的value值;否則,拋出KeyError異常d={'Name':'Tom','Age':18,'Sc':98}d.pop('Sc')#{'Name':'Tom','Age':18}d.pop('No')#鍵'No'不存在,拋出異常KeyError隨機刪除并返回一鍵值對d.popitem()若d非空,則以元組的形式返回一鍵值對;若為空,則拋出KeyError異常d={'Name':'Tom','Age':18,'Sc':98}d.popitem()#刪除并返回('Sc',98)d.popitem()#刪除并返回('Age',18)d.popitem()#刪除并返回('Name','Tom')d.popitem()#刪除并返回KeyErrordel刪除指定key值的鍵值對元素deld['key']若key不存在,則拋出KeyError異常d={'Name':'張三','Age':18,'Sc':98}deld['Sc']print(d)#{'Name':'張三','Age':18}清空字典d.clear()d={'Name':'張三','Age':18,'Sc':98}d.clear()print(d)#{}數(shù)據(jù)類型—字典操
作說
明舉
例修改元素修改已存在鍵(key)對應(yīng)的值d['key']=new_value
如果key值不存在,則表示增加元素d={'Name':'Tom','Sc':88}d['Sc']=92#修改成績print(d)#{'Name':'Tom','Sc':92}update更新元素d.update(k1:v1,k2:v2,…)
對已存在的key值起更新作用,對未存在的key值起新增鍵值對作用d={'a':1,'b':3,}d.update({'a':0,'d':5})#修改'a'值,新增'd'print(d.items())#dict_items([('a',0),('b',3),('d',5)])查找(訪問)元素單個元素訪問d['key']d={'Name':'Tom','Addr':{'Sc':'88','Age':'18'}}#字典嵌套print(d['Name'])#Tomprint(d['Addr'])#{'Sc':'88','Age':'18'}keys()訪問所有鍵d.keys()
返回所有鍵值對的鍵值sc={'數(shù)學(xué)':96,'語文':86}print(sc.keys())#dict_keys(['數(shù)學(xué)','語文'])values()訪問所有值d.values()返回所有鍵對應(yīng)的值sc={'數(shù)學(xué)':96,'語文':86,'英語':77}print(sc.values())#dict_values([96,86,77])items()返回所有鍵值對d.items()返回所有鍵值d={'a':7,'b':3}print(d.items())
#dict_items([('a',7),('b',3)])帶默認值參數(shù)在函數(shù)定義時,可以為參數(shù)設(shè)置默認值,帶默認值的參數(shù)必須放在所有非默認值參數(shù)的后面?!緟⒖即a】在函數(shù)調(diào)用時,若沒有為默認值參數(shù)傳值,則采用參數(shù)的默認值。在函數(shù)調(diào)用時,若為默認值參數(shù)指定新值,則用新值覆蓋默認值。任務(wù)實施定義了一個字典attack_dog,其中包含不同品種狗的名稱和對應(yīng)的攻擊力值。定義了一個函數(shù)dog,包含狗的名字、品種、生命值和攻擊力的字典。如果狗的品種在attack_dog字典中,則攻擊力取相應(yīng)的值,否則默認為20。定義了一個函數(shù)person,包含人的名字、年齡和生命值。如果年齡在18到40歲之間,攻擊力設(shè)為70,否則為30。任務(wù)實施定義了beat函數(shù),模擬人打狗的行為。人的攻擊力會減少狗的生命值,并打印出相應(yīng)的信息定義了dog_bite函數(shù),模擬狗咬人的行為。狗的攻擊力會減少人的生命值,并打印出相應(yīng)的信息。PartThree變量作用域掌握掌握局部變量和全局變量的定義能夠使用global在局部空間中引入全局變量全局變量是在任何函數(shù)或語句塊之外定義的變量。它們在整個程序范圍內(nèi)都是可見和可訪問的。全局變量局部變量的作用域限制在其定義的函數(shù)或語句塊內(nèi)。在這些局部區(qū)域內(nèi),變量默認是有效的,且不能在外部訪問。如果需要在函數(shù)內(nèi)部修改全局變量,可以使用global關(guān)鍵詞來聲明。作用域規(guī)則局部變量是在函數(shù)或語句塊內(nèi)部定義的變量。它們僅在定義它們的函數(shù)或語句塊內(nèi)部有效。局部變量010203全局變量和局部變量全局變量和局部變量1.函數(shù)內(nèi)默認訪問局部變量2.函數(shù)內(nèi)部訪問全局變量—global鞏固案例【案例】分析以下代碼,輸出其運行結(jié)果。首先定義了一個全局變量g并賦值為2。在f1函數(shù)中,使用global關(guān)鍵詞聲明g為全局變量,并將其修改為3。在f2函數(shù)中,g被重新賦值為4,但這里的g是局部變量,不影響全局變量。最后,當(dāng)主程序執(zhí)行時,調(diào)用f1和f2函數(shù),打印全局變量g的值,由于f1中的修改,輸出結(jié)果為3。全局變量局部變量全局變量全局變量PartFour掌握匿名函數(shù)掌握匿名函數(shù)的定義和調(diào)用掌握map、filter、reduce等函數(shù)匿名函數(shù)在函數(shù)功能邏輯較簡單、代碼量較少的情況下,可以將函數(shù)定義為匿名函數(shù),即不給該函數(shù)指定標識符(名字),通常稱為“l(fā)ambda表達式”。其定義格式為:lambda參數(shù)1,參數(shù)2,…:功能實現(xiàn)函數(shù)與匿名函數(shù)對比利用函數(shù)求和利用匿名函數(shù)求和【結(jié)論】由此可見,匿名函數(shù)所保存的“對象”或“模型”非常類似普通函數(shù)名,在調(diào)用格式上兩者也非常相似。lambda與mapmap函數(shù)定義格式為:map(func,iterables)【功能描述】將函數(shù)func應(yīng)用于可迭代對象iterables中的每個元素,并返回一個包含所有結(jié)果的map對象,該對象可以被轉(zhuǎn)換為列表或元組以查看結(jié)果?!景咐慷x一個匿名函數(shù)來計算數(shù)字的平方,利用`map`函數(shù)將此函數(shù)應(yīng)用于列表`[1,2,3,4,5]`中的每個元素。并使用`list()`將其轉(zhuǎn)換為列表形式,打印每個元素的平方結(jié)果。lambda與filterfilter函數(shù)定義格式為:filter(func,iterables)【功能描述】可迭代序列iterables中的每個元素依次代入函數(shù)或匿名函數(shù)func中執(zhí)行,然后把各返回值結(jié)果封裝成filter對象返回??蛇M一步通過列表或元組等形式查看該對象中包含的數(shù)據(jù)內(nèi)容。filter函數(shù)的形參func通常返回True或False?!景咐縧ambda與reducereduce函數(shù)定義格式為:reduce(func,sequence[,initial])【功能描述】其中,initial為可選參數(shù),表示初值,求和默認值為0,求積默認值為
1,也可顯式指定為其他值?!景咐?】求和運算,分析以下程序,輸出運行結(jié)果?!痉治觥縭educe函數(shù)通過lambdax,y:x+y將列表[1,2,3,4,5]中的元素從左至右依次累加,最終得到總和15。lambda與reduce【案例2】求積運算,分析以下程序,輸出運行結(jié)果。【分析】每次調(diào)用`lambdax,y:x*y`
需要兩個參數(shù),分析過程同求和,依次執(zhí)行以下運算:1*2=2,2*3=6,6*4=24,24*5=120。求積運算的初始值initial默認為1,也可顯式指定。PartFive項目實施項目實施init函數(shù)用于打印系統(tǒng)初始化時的信息,包括銀行可辦理的業(yè)務(wù)列表。deposit函數(shù)實現(xiàn)存款功能。使用global關(guān)鍵字修改全局變量money的值。存款金額小于0,則提示錯誤;否則,增加賬戶余額,并打印存款和當(dāng)前余額信息。withdraw函數(shù)實現(xiàn)了取款功能。同樣使用global關(guān)鍵字來修改money。若取款金額小于0或大于賬戶余額,則打印相應(yīng)的錯誤信息;否則,減少賬戶余額,并打印取款和當(dāng)前余額信息。項目實施check函數(shù)用于查詢當(dāng)前賬戶余額,并打印出來。main函數(shù)是程序的主要入口點。它調(diào)用init函數(shù),進入一個無限循環(huán),不斷提示用戶輸入業(yè)務(wù)代碼。根據(jù)用戶輸入的代碼,調(diào)用相應(yīng)函數(shù)來處理請求。若輸入'q',則打印退出信息并退出循環(huán),結(jié)束程序。PartSix項目小結(jié)主要知識點知
識
點示例說
明函數(shù)定義定義求兩數(shù)之和的函數(shù)defadd(a,b):#函數(shù)頭
return(a+b)#函數(shù)體函數(shù)包含函數(shù)頭和函數(shù)體。函數(shù)頭由關(guān)鍵字def、函數(shù)名、參數(shù)表和冒號組成。函數(shù)定義時的參數(shù)稱為形參,如a和b函數(shù)調(diào)用s=add(2,3)函數(shù)調(diào)用“喊名字,傳參數(shù)”,函數(shù)調(diào)用時傳遞的參數(shù)稱為實參,如2和3字典字典名={key1:value1,5…,keyn:valuen}由若干鍵值對key:value構(gòu)成變量的作用域a=2#全局變量,其值為2defchange():
a=10#局部變量,其值為10
print('a=',a)#訪問局部變量change()#輸出a=10該例中定義了同名的不同變量a,一個是全局變量,一個為局部變量global引入全局變量a=2#全局變量,其值為2defchange():
globala#引入全局變量
a=10#為全局變量賦值10
print('a=',a)#全局變量change()#輸出a=10該例中僅定義了一個變量即全局變量a,使用global關(guān)鍵字在局部空間引入該全局變量易錯知識點易錯知識點錯誤示例說明函數(shù)定義錯誤deffun(n)
#函數(shù)體語法錯誤。函數(shù)頭尾部漏掉冒號:帶參函數(shù)定義defprint_info(age=17,name):
#函數(shù)體帶默認值的參數(shù)必須放在所有非默認值參數(shù)后面易錯知識點THANKS!項目六烏龜吃魚游戲——面向?qū)ο髏extbook教材Python程序設(shè)計項目化教程孫海洋
編著
電子工業(yè)出版社ISBN:9787121477546項目描述【項目描述】模擬烏龜吃魚游戲,游戲規(guī)則:水池中有一只烏龜和若干條魚,烏龜和魚在水池中游動,如果烏龜遇到魚則把魚吃掉,生命值增加,烏龜游動消耗體力。如果池中所有的魚都被吃掉或者烏龜體力耗盡游戲結(jié)束。Contents目錄01.聰明的小狗——類和對象04.愛心募捐——實例變量和類變量02.莫問年齡和存款——私有成員03.生物進化——繼承05.項目實施06.項目小結(jié)PartOne聰明的小狗——類和對象掌握類定義結(jié)構(gòu)掌握構(gòu)造對象的方法掌握通過對象名調(diào)用屬性和行為的方式任務(wù)描述【任務(wù)描述】設(shè)計一個狗類,包含名字、品種、年齡等屬性,具備搖尾、趴下、打滾、奔跑等行為。運行結(jié)果如下所示。讓我們一起學(xué)習(xí)類和對象來解決這個問題吧!面向?qū)ο蠛皖?1面向?qū)ο缶幊蘋OP是一切皆對象,把具有相同屬性和行為的對象抽象為“類”。02面向?qū)ο笕筇匦詾榉庋b、繼承和多態(tài)。03類是編程中創(chuàng)建對象的模板,用class定義,擁有屬性存儲信息和方法執(zhí)行操作。面向?qū)ο蠛皖悺绢惗x格式1】含構(gòu)造方法【類定義格式2】不含構(gòu)造方法,系統(tǒng)提供默認的無參構(gòu)造方法【說明】在Python中,構(gòu)造方法`__init__`用于初始化新創(chuàng)建的對象,為其屬性賦初值。如果沒有顯式定義構(gòu)造方法(僅含有self)。析構(gòu)方法`__del__`在對象被刪除時自動調(diào)用。類中的方法通常以`self`作為第一個參數(shù),代表當(dāng)前對象實例,其余參數(shù)根據(jù)需要定義。下面,我們來舉幾個例子幫助大家更好理解面向?qū)ο蠛皖悺景咐?】定義一個學(xué)生類,包括姓名、年齡、班級等屬性,以及自我介紹方法。【案例2】定義一個鳥類Bird,僅包含飛行方法,不含構(gòu)造方法。創(chuàng)建對象構(gòu)造類的對象時,通過類的名字調(diào)用構(gòu)造方法__init__,為該對象的數(shù)據(jù)成員即屬性賦初值。如果類中沒有顯式定義構(gòu)造方法或者定義的構(gòu)造方法除了self外,沒有其他參數(shù),則創(chuàng)建該類對象的格式如下:舉例:在這個例子中,Bird類沒有定義構(gòu)造方法,因此Python自動提供了一個默認的無參構(gòu)造方法。當(dāng)我們創(chuàng)建Bird類的對象b時,我們使用Bird(),括號內(nèi)是空的,表示沒有傳遞任何參數(shù)。然后我們可以調(diào)用b對象的fly方法來模擬鳥的飛行行為。創(chuàng)建對象若類中定義的構(gòu)造方法除了self外還有其他參數(shù),則創(chuàng)建該類對象格式如下:舉例:在這個例子中,Student類有一個構(gòu)造方法__init__,它接受三個參數(shù):name、age和class_info。創(chuàng)建Student類的對象s1和s2時,需要提供這些參數(shù)的值。然后,我們可以通過調(diào)用introduce方法來打印每個學(xué)生的信息。通過對象訪問屬性和行為訪問對象屬性的格式如下:舉例:在這個例子中,Student類有三個屬性:name、age和cls。我們創(chuàng)建了兩個Student類的對象s1和s2,并且為它們的屬性賦了初值。然后,我們通過點操作符訪問這些屬性,并使用print函數(shù)輸出它們的值。通過對象訪問屬性和行為訪問對象行為的格式如下:舉例:在這個例子中,我們定義了一個Student類,它有一個構(gòu)造方法和一個introduce方法。我們創(chuàng)建了一個Student對象student,并調(diào)用了它的introduce方法來打印自我介紹。任務(wù)實施__init__是類的構(gòu)造方法,用于初始化創(chuàng)建的對象。它接受breed(品種)、name(名字)和age(年齡)作為參數(shù),并將它們設(shè)置為對象的屬性。speak方法用于模擬小狗的自我介紹,打印出小狗的品種、名字和年齡。wag方法模擬小狗搖尾巴的動作,打印出搖尾巴的小狗的名字。lie方法模擬小狗趴下的動作,打印出趴下的小狗的名字。roll_over方法模擬小狗打滾的動作,打印出打滾的小狗的名字。run方法模擬小狗跑步的動作,參數(shù)dis表示距離(米),并打印出小狗的名字和跑的距離。任務(wù)實施創(chuàng)建了兩個Dog類的對象dog1和dog2,分別代表兩個不同品種和名字的小狗,以及它們的年齡。調(diào)用各類方法運行結(jié)果如下:鞏固案例【案例】定義一個圓類,包含屬性半徑,及求周長和面積的方法。參考代碼:PartTwo莫問年齡和存款——私有成員任務(wù)描述【任務(wù)描述】設(shè)計一個Python個人信息類。創(chuàng)建一個Person類,封裝姓名、私有的年齡、分數(shù)和存款。實現(xiàn)方法以輸出個人信息、安全地獲取和設(shè)置分數(shù)、以及模擬賺錢和花錢。在主程序中演示這些功能。讓我們一起學(xué)習(xí)一下私有成員屬性來完成這個任務(wù)吧!私有成員屬性Python類中的屬性默認是公開的,可以自由訪問和修改,這可能違反封裝原則并降低安全性。為了提供封裝和數(shù)據(jù)保護,Python使用雙下劃線`__`前綴來定義私有屬性,如`__weight`和`__score`。私有屬性只能在類內(nèi)部訪問,外部代碼不能直接訪問它們。通常,類會提供公共的`get_屬性名`和`set_屬性名`方法來間接訪問和修改這些私有屬性。【錯誤案例】試圖在類外直接訪問私有成員屬性。私有成員屬性【正確案例】通過set***和get***方法可在類外間接訪問私有屬性。定義了一個公開方法getWeight,用于獲取私有屬性__weight的值。定義了一個公開方法setWeight,它接受一個參數(shù)newWeight,用于設(shè)置私有屬性__weight的新值。newWeight將傳入的newWeight值賦給私有屬性__weight。調(diào)用setWeight方法,將體重修改為59.5公斤。任務(wù)實施__init__是構(gòu)造方法,初始化Person對象的屬性。接受姓名、年齡、分數(shù)和金錢作為參數(shù),并將它們設(shè)置為對象的屬性。其中,年齡、分數(shù)和金錢屬性名前使用了雙下劃線__,這表示它們是私有屬性。speak方法用于打印出人的姓名、年齡、分數(shù)和余額。返回私有屬性__age的值和私有屬性__score的值。setSc方法接受一個新分數(shù)newSc,先打印出修改前的成績,然后更新成績,并打印出修改后的成績。任務(wù)實施spend方法接受一個金額amount,將其從余額中減去,并打印出花錢后的信息和當(dāng)前余額。運行結(jié)果如下:PartThree生物進化——繼承掌握類的定義結(jié)構(gòu)掌握構(gòu)造對象的方法掌握通過對象名調(diào)用屬性和行為的方式單繼承單類繼承的格式為:pass表示占位符,通常表示暫時沒實現(xiàn)的函數(shù)(方法)體或類體。子類默認繼承父類的非私有屬性和方法。直接調(diào)用從父類繼承過來的方法為不重寫父類方法—直接繼承單繼承在子類中重寫父類中的同名方法,相當(dāng)于把從父類繼承過來的該方法覆蓋掉。該方法為重寫父類方法—方法覆蓋運行結(jié)果為:多重繼承多重繼承是子類擁有多個父類,可同時繼承多個父類的屬性和方法。其格式為:【案例】閱讀以下程序,分析其運行結(jié)果?!痉治觥孔宇怱wan擁有兩個父類Bird和Goose,即同時繼承了父類Bird的fly方法,以及父類Goose的swim方法?!菊f明】多個父類名用逗號間隔,表示子類同時繼承多個父類的屬性和方法。PartFour愛心募捐——實例變量和類變量掌握實例變量的定義和使用掌握類變量的定義和使用任務(wù)描述【任務(wù)描述】設(shè)計一個募捐類,統(tǒng)計輸出實時捐款金額和明細。該項任務(wù)涉及實例變量和類變量。實例變量就是屬于對象(實例)的變量(屬性),每個對象均有屬于自己的獨立實例變量。而類變量屬于整個類的所有對象所共有,即“公共空間”。相信同學(xué)們對于什么是實例變量和類變量還是一頭霧水,讓我們一起進入實例變量和類變量的學(xué)習(xí)中吧!實例變量實例變量是指在類的任意方法內(nèi)部,以self開頭定義的變量(屬性)。實例變量定義self.變量名語法格式實例變量只能通過對象名訪問,不能通過類名訪問。訪問方式
實例變量【案例】閱讀以下代碼,分析其中的實例變量?!痉治觥吭陬愔械娜我夥椒▋?nèi)以“self.變量名”定義和使用的變量均為“實例變量”,故該類構(gòu)造方法中的、self.age、self.__score這三個以self開頭的變量均是實例變量。運行結(jié)果展示了同一個類`Stu`的不同對象`s1`和`s2`各自擁有獨立的私有實例變量`self.__score`。它們是各自獨立、互不影響的,即都有自己的獨立存儲空間和值。類變量是指在類的所有方法之外定義的變量。定義01語法格式02類變量既可以通過類名訪問,也可以通過對象名訪問,建議通過類名訪問訪問方式03類變量類變量【案例】閱讀以下代碼,分析其中的類變量和實例變量。這段代碼中的`Rect`類展示了類變量和實例變量的區(qū)別:`cnt`是類變量,用于統(tǒng)計創(chuàng)建的`Rect`對象數(shù)量,所有對象共享;而`self.w`和`self.h`是實例變量,每個`Rect`對象擁有獨立的寬度和高度值。通過類名或?qū)ο竺L問類變量`cnt`,可以獲取創(chuàng)建對象的總數(shù)。str.center的使用字符串center方法返回指定總寬度width且居中的字符串,fillchar為填充字符,默認為空格。調(diào)用格式為:【案例1】字符串內(nèi)容(如“歡迎光臨”)為偶數(shù)(4)位,輸出總位寬為(11),其余填充符7(奇數(shù))位,則左邊多1個填充符。運行結(jié)果如下:str.center的使用【案例2】字符串內(nèi)容(如“南京歡迎您”)為奇數(shù)(5)位,輸出總位寬(12),其余填充符7(奇數(shù))位,則右邊多1個填充符。這兩個案例說明了如果填充字符的總數(shù)是奇數(shù),center()會在兩邊分配填充字符,但會多放一個在一側(cè),以確保字符串在中間。哪一側(cè)更長取決于總寬度和字符串長度的差值。如果填充字符的總數(shù)是偶數(shù),則兩側(cè)分配的填充字符數(shù)量相等。運行結(jié)果如下:任務(wù)實施運行結(jié)果如下:在循環(huán)內(nèi)部,為每個捐款者創(chuàng)建一個Donate類的實例。調(diào)用每個捐款者實例的donate方法,傳入隨機生成的捐款金額,更新捐款總額。donate方法接受一個參數(shù)num(捐款金額),并將其加到類變量total上,從而更新捐款總額。PartFive項目實施項目實施swim方法讓動物在其邊界內(nèi)隨機移動,如果碰到邊界會反彈,并且每次移動會消耗動物的體力。項目實施Turtle類繼承自Animal類,表示烏龜,并添加了特有的eat方法來模擬烏龜吃魚后體力的增加,但不超過100。Fish類繼承自Animal類,表示魚,并添加了特有的bubble方法來模擬魚吐泡泡的動作。創(chuàng)建了一只烏龜和10條魚,并將魚存儲在列表fish_ls中。項目實施如果魚和烏龜在同一位置,烏龜會吃掉魚,并從魚的列表中移除該魚。項目實施運行結(jié)果如下:PartSix項目小結(jié)項目小結(jié)主要知識點面向?qū)ο笕筇匦詾椋悍庋b、繼承、多態(tài)。類的構(gòu)造方法是在創(chuàng)建對象時調(diào)用,注意其方法名前后均有兩個下畫線__init__。類的私有成員變量前有兩個下畫線,如__age、__money等,在類外不能直接訪問私有成員變量。通常提供get***和set***方法獲取或修改私有成員變量的值。類的繼承分單繼承和多繼承,其主要為提高代碼的復(fù)用率。子類默認繼承父類的非私有屬性和方法。THANKS!項目七能否構(gòu)成三角形——異常處理textbook教材Python程序設(shè)計項目化教程孫海洋
編著
電子工業(yè)出版社ISBN:9787121477546項目描述【項目描述】自定義一個三角形異常類,當(dāng)用戶傳入三個數(shù)據(jù)構(gòu)造一個三角形對象前,先判斷是否滿足三角形邊長關(guān)系,如果不滿足,則拋出異常,并提示用戶重新輸入;若滿足,則構(gòu)造該三角形對象,計算并輸出其面積。Contents目錄01.除數(shù)為零的煩惱——初識異常02.輸入到滿意為止——異常處理03.圓半徑不能為負——自定義異常04.項目實施05.項目小結(jié)PartOne除數(shù)為零的煩惱——初識異常了解算法的概念了解算法的性質(zhì)和目標了解異常的概念任務(wù)描述【任務(wù)描述】小明要設(shè)計一個簡易計算器。幫其設(shè)計一個除法運算函數(shù),并用測試用例驗證該函數(shù)的正確性及健壯性。算法?錯誤?異常?算法性質(zhì)和目標算法:解決問題的方法、步驟的集合算法性質(zhì):有輸入、輸出、有限、確定和可執(zhí)行5個性質(zhì)算法目標:算法的正確性、可讀性、健壯性、高時間效率和高空間效率等幾大追求目標算法性質(zhì)和目標錯誤和異常程序中的錯誤可以分為兩類:一類是外部因素(如硬件、操作系統(tǒng))引起的“非正?!鼻闆r;另一類是Python語法錯誤,導(dǎo)致程序無法執(zhí)行。而程序執(zhí)行中因算法、編程或用戶輸入等問題導(dǎo)致的“非正?!鼻闆r,被稱為異常。錯誤和異常常見異常類型1.類型異常運行結(jié)果:【異常原因】+運算符不能連接字符串和數(shù)值。2.值異常運行結(jié)果:【異常原因】如果用戶無意中輸入非整數(shù)值,如浮點數(shù)3.14或字符串hello,則均會拋出如下異常。常見異常類型3.名稱異常運行結(jié)果:【異常原因】解釋器不理解c的含義,提示
c未定義。4.文件找不到異常運行結(jié)果:【異常原因】若上述文件路徑不存在,則會拋出如下異常。常見異常類型5.索引異常運行結(jié)果:【異常原因】列表ls含4個元素,下標索引從0~3,故ls[4]下標越界。6.語法錯誤(強類型異常)運行結(jié)果:【異常原因】】字符串“'hello'”的右引號錯誤寫為中文符號常見異常類型7.縮進異常(強類型異常)運行結(jié)果:【異常原因】Python是使用縮進來標識代碼塊和代碼邏輯的。示例代碼中的4行代碼應(yīng)縮進一致。任務(wù)實施運行結(jié)果
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 核電站核反應(yīng)堆操作員崗位全職聘用與安全生產(chǎn)培訓(xùn)合同
- 私人直升機航拍旅游宣傳素材版權(quán)授權(quán)合同
- 司法鑒定機構(gòu)股權(quán)并購重組合同
- 私人直升機航拍素材版權(quán)授權(quán)及收益分成補充協(xié)議
- 智能家居系統(tǒng)售后服務(wù)補充協(xié)議
- 離岸公司注冊、全球法律事務(wù)處理與合規(guī)支持協(xié)議
- 新能源汽車產(chǎn)業(yè)鏈股權(quán)合作與產(chǎn)業(yè)創(chuàng)新協(xié)議
- 婚姻不可抗力風(fēng)險防范與忠誠協(xié)議修訂協(xié)議書
- 2025年比特幣投資項目提案報告
- 2025年耐火土石類項目申請報告
- 小學(xué)生德育教育ppt課件
- 《菱形的判定》教學(xué)設(shè)計(共3頁)
- 配電箱系統(tǒng)圖
- 精選靜電感應(yīng)現(xiàn)象的應(yīng)用練習(xí)題(有答案)
- 電纜井工程量計算
- 初中音樂--人聲的分類--(1)pptppt課件
- 育種學(xué) 第6章雜交育種
- 小作坊生產(chǎn)工藝流程圖(共2頁)
- 生態(tài)瓶記錄單
- 鋼芯鋁絞線參數(shù)
- 音王點歌機800S加歌操作方法
評論
0/150
提交評論