Python程序設(shè)計(jì)與財(cái)務(wù)應(yīng)用(微課版)課件 第3章 Python語(yǔ)法進(jìn)階_第1頁(yè)
Python程序設(shè)計(jì)與財(cái)務(wù)應(yīng)用(微課版)課件 第3章 Python語(yǔ)法進(jìn)階_第2頁(yè)
Python程序設(shè)計(jì)與財(cái)務(wù)應(yīng)用(微課版)課件 第3章 Python語(yǔ)法進(jìn)階_第3頁(yè)
Python程序設(shè)計(jì)與財(cái)務(wù)應(yīng)用(微課版)課件 第3章 Python語(yǔ)法進(jìn)階_第4頁(yè)
Python程序設(shè)計(jì)與財(cái)務(wù)應(yīng)用(微課版)課件 第3章 Python語(yǔ)法進(jìn)階_第5頁(yè)
已閱讀5頁(yè),還剩89頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

Python程序設(shè)計(jì)與財(cái)務(wù)應(yīng)用(微課版)第3章

Python語(yǔ)法進(jìn)階知識(shí)目標(biāo)1.掌握分支結(jié)構(gòu);2.掌握循環(huán)結(jié)構(gòu);3.掌握函數(shù)和模塊。技能目標(biāo)1.能夠根據(jù)單個(gè)、兩個(gè)或多個(gè)條件實(shí)現(xiàn)正確選擇;2.能夠根據(jù)條件或次數(shù)完成重復(fù)性的工作;3.能夠根據(jù)需要,使用內(nèi)置函數(shù)、自定義函數(shù)或lambda函數(shù)完成某些重復(fù)性的功能;4.掌握模塊的導(dǎo)入及使用模塊完成某些功能。學(xué)習(xí)目標(biāo)章節(jié)導(dǎo)圖思考題1.我們編寫程序的時(shí)候,遇到選擇時(shí)如何判斷執(zhí)行呢?2.在財(cái)務(wù)工作中,有些工作是重復(fù)性的,如何減少重復(fù)、提高效率呢?章節(jié)導(dǎo)讀CONTENTS分支結(jié)構(gòu)01.02.循環(huán)結(jié)構(gòu)函數(shù)03.模塊04.分支結(jié)構(gòu)01.6在前面章節(jié)的學(xué)習(xí)中,我們編寫的Python代碼都是一條一條語(yǔ)句順序執(zhí)行的,這種代碼結(jié)構(gòu)稱為順序結(jié)構(gòu),其流程圖如圖3-1所示。然而僅有順序結(jié)構(gòu)并不能解決所有的問(wèn)題,比如每月根據(jù)銷售額計(jì)算提成:銷售額大于10萬(wàn)元按5%計(jì)算提成,否則按3%計(jì)算提成。那么在下個(gè)月初,我們要根據(jù)員工的銷售額來(lái)決定究竟是按5%計(jì)算提成,還是按3%計(jì)算提成,這里就會(huì)產(chǎn)生兩個(gè)分支,而且這兩個(gè)分支只有一個(gè)會(huì)被執(zhí)行。類似的場(chǎng)景還有很多,我們將這種結(jié)構(gòu)稱為分支結(jié)構(gòu)(選擇結(jié)構(gòu))。常見(jiàn)的分支結(jié)構(gòu)有單分支結(jié)構(gòu)、雙分支結(jié)構(gòu)和多分支結(jié)構(gòu)3種。3.1.1單分支結(jié)構(gòu)7單分支結(jié)構(gòu)是最簡(jiǎn)單的分支結(jié)構(gòu),我們用if語(yǔ)句來(lái)表示。其語(yǔ)法格式如下。其功能是:如果if條件表達(dá)式的結(jié)果為真,則執(zhí)行if之后的語(yǔ)句塊,然后執(zhí)行分支結(jié)構(gòu)以外的語(yǔ)句;如果if條件表達(dá)式的結(jié)果為假,則不執(zhí)行其后面的語(yǔ)句塊,直接執(zhí)行分支結(jié)構(gòu)以外的語(yǔ)句。if語(yǔ)句的流程圖如圖3-2所示。需要注意的是:①if條件表達(dá)式的最后一定不能漏掉符號(hào)“:”,否則會(huì)出錯(cuò);②符號(hào)“:”之后的語(yǔ)句塊中的語(yǔ)句必須縮進(jìn),否則會(huì)出錯(cuò)。3.1.1單分支結(jié)構(gòu)8實(shí)際上,在Python中,當(dāng)前行與前一行的關(guān)系是根據(jù)縮進(jìn)來(lái)判斷的:如果縮進(jìn)相同,Python就認(rèn)為它們是一個(gè)語(yǔ)句塊;否則是兩個(gè)語(yǔ)句塊。在JupyterNotebook中,在遇到分支結(jié)構(gòu)語(yǔ)句時(shí),按Enter鍵系統(tǒng)會(huì)自動(dòng)縮進(jìn)下一條語(yǔ)句(與按下Tab鍵的效果一樣,即空4個(gè)空格)?!纠?-1】使用if語(yǔ)句判斷用戶輸入的工齡是否大于等于10年,如果為真,則工資增加500元,否則保持原有工資不變。(代碼位置:資源\第3章)其流程圖如圖3-3所示。3.1.1單分支結(jié)構(gòu)9實(shí)際上,在Python中,當(dāng)前行與前一行的關(guān)系是根據(jù)縮進(jìn)來(lái)判斷的:如果縮進(jìn)相同,Python就認(rèn)為它們是一個(gè)語(yǔ)句塊;否則是兩個(gè)語(yǔ)句塊。在JupyterNotebook中,在遇到分支結(jié)構(gòu)語(yǔ)句時(shí),按Enter鍵系統(tǒng)會(huì)自動(dòng)縮進(jìn)下一條語(yǔ)句(與按下Tab鍵的效果一樣,即空4個(gè)空格)。3.1.2雙分支結(jié)構(gòu)10雙分支結(jié)構(gòu)是一種非“1”即“2”的分支結(jié)構(gòu),我們用if…else語(yǔ)句來(lái)表示。其語(yǔ)法格式如下。其功能是:如果if條件表達(dá)式的結(jié)果為真,則執(zhí)行if條件表達(dá)式之后的語(yǔ)句塊1,執(zhí)行后忽略else后面的語(yǔ)句塊2,直接執(zhí)行分支結(jié)構(gòu)以外的語(yǔ)句;如果if條件表達(dá)式的結(jié)果為假,則忽略if之后的語(yǔ)句塊1,執(zhí)行else后面的語(yǔ)句塊2,然后執(zhí)行分支結(jié)構(gòu)以外的語(yǔ)句。if…else語(yǔ)句的流程圖如圖3-4所示。需要注意的是:else語(yǔ)句不能單獨(dú)使用,必須和if語(yǔ)句一起使用。3.1.2雙分支結(jié)構(gòu)11【例3-2】使用if…else語(yǔ)句判斷用戶輸入的工齡是否大于等于10年,如果為真,則工資增加500元,否則工資增加200元。(代碼位置:資源\第3章)其流程圖如圖3-5所示。3.1.2雙分支結(jié)構(gòu)123.1.3多分支結(jié)構(gòu)13多分支結(jié)構(gòu)用if…elif…else語(yǔ)句來(lái)表示。其語(yǔ)法格式如下。3.1.3多分支結(jié)構(gòu)14其功能是:如果if條件表達(dá)式1的結(jié)果為真,則執(zhí)行語(yǔ)句塊1,執(zhí)行后忽略后面的elif和else語(yǔ)句,直接執(zhí)行分支結(jié)構(gòu)以外的語(yǔ)句;如果elif條件表達(dá)式2的結(jié)果為真,則執(zhí)行語(yǔ)句塊2,執(zhí)行后直接執(zhí)行分支結(jié)構(gòu)以外的語(yǔ)句……如果前n-1個(gè)條件表達(dá)式都不為真,則執(zhí)行語(yǔ)句塊n,執(zhí)行完后直接執(zhí)行分支結(jié)構(gòu)以外的語(yǔ)句。其流程圖如圖3-6所示。3.1.3多分支結(jié)構(gòu)15【例3-3】使用if…elif…else語(yǔ)句計(jì)算銷售人員每月提成金額,提成規(guī)則如表3-1所示。(代碼位置:資源\第3章)3.1.3多分支結(jié)構(gòu)16其流程圖如圖3-7所示。3.1.3多分支結(jié)構(gòu)173.1.4嵌套if語(yǔ)句18嵌套if語(yǔ)句適用于多分支的情況,雖然if…elif…else語(yǔ)句也適用于多分支,但是它們是有區(qū)別的。if…elif…else語(yǔ)句的應(yīng)用場(chǎng)景是:同時(shí)判斷多個(gè)條件,所有的條件都是平級(jí)的。嵌套if語(yǔ)句的應(yīng)用場(chǎng)景是:在使用if語(yǔ)句進(jìn)行條件判斷時(shí),如果希望在條件成立或不成立的執(zhí)行語(yǔ)句中增加額外的條件判斷(該條件從層級(jí)上來(lái)講比前面的條件低一級(jí))。嵌套if語(yǔ)句的語(yǔ)法格式除了縮進(jìn)之外,其余和多分支結(jié)構(gòu)沒(méi)有區(qū)別,嵌套在里層的if語(yǔ)句的語(yǔ)句塊需要再次縮進(jìn)4個(gè)空格,在JupyterNotebook中編寫嵌套if語(yǔ)句時(shí),系統(tǒng)會(huì)按層級(jí)的不同自動(dòng)分層縮進(jìn)。嵌套if語(yǔ)句通常使用兩個(gè)層級(jí)嵌套,不提倡多級(jí)嵌套if語(yǔ)句,因?yàn)樾瘦^低。3.1.4嵌套if語(yǔ)句19【例3-4】某商場(chǎng)在促銷日舉行打折活動(dòng),如果購(gòu)買的是啤酒就打5折,其他商品打8折。非促銷日商品不打折。使用嵌套if語(yǔ)句判斷用戶輸入是否為促銷日,商品是否打折及打折的幅度,并輸出實(shí)付金額、應(yīng)付金額及優(yōu)惠。(代碼位置:資源\第3章)其流程圖如圖3-8所示。3.1.4嵌套if語(yǔ)句203.1.4嵌套if語(yǔ)句213.1.5課堂實(shí)驗(yàn)——根據(jù)公司固定資產(chǎn)類型計(jì)算月折舊額22【實(shí)驗(yàn)內(nèi)容】從鍵盤輸入公司固定資產(chǎn)類型和價(jià)格,采用直線法計(jì)提折舊,計(jì)算其月折舊額。固定資產(chǎn)折舊規(guī)定如表3-2所示。(代碼位置:資源\第3章)【實(shí)驗(yàn)思路】①固定資產(chǎn)有4種類型,可以采用多分支結(jié)構(gòu)(if…elif…else語(yǔ)句)進(jìn)行判斷;循環(huán)結(jié)構(gòu)02.24在3.1節(jié)中介紹了順序結(jié)構(gòu)和分支結(jié)構(gòu),本節(jié)將介紹3種結(jié)構(gòu)中的最后一種結(jié)構(gòu):循環(huán)結(jié)構(gòu)。在財(cái)務(wù)工作中,我們經(jīng)常需要重復(fù)做某些工作。例如,每個(gè)月都要計(jì)算員工工資,每個(gè)月末都要結(jié)賬等。為了高效地完成重復(fù)性工作,Python提供了解決這種問(wèn)題的方法——循環(huán)結(jié)構(gòu),它通過(guò)將一段代碼重復(fù)執(zhí)行就可以輕松地完成重復(fù)性的工作。Python中的循環(huán)結(jié)構(gòu)有兩種,一種是while循環(huán),另一種是for-in循環(huán)。3.2.1while循環(huán)25while循環(huán)是一種只要條件表達(dá)式為真,就重復(fù)執(zhí)行一組語(yǔ)句(循環(huán)體語(yǔ)句塊)的循環(huán)結(jié)構(gòu)。其語(yǔ)法格式如下。其功能是:如果條件表達(dá)式的結(jié)果為真,就一直執(zhí)行循環(huán)體語(yǔ)句塊;如果條件表達(dá)式的結(jié)果為假,就退出循環(huán)體,執(zhí)行循環(huán)結(jié)構(gòu)以外的語(yǔ)句。while循環(huán)的流程圖如圖3-9所示。3.2.1while循環(huán)26根據(jù)循環(huán)次數(shù)是否確定(已知),可以將while循環(huán)分為計(jì)數(shù)型while循環(huán)和條件型while循環(huán)。1.計(jì)數(shù)型while循環(huán)計(jì)數(shù)型while循環(huán)是指已知循環(huán)次數(shù)的循環(huán)結(jié)構(gòu)。通常采用計(jì)數(shù)器變量來(lái)控制循環(huán)的次數(shù),需要設(shè)置循環(huán)變量的初始值、終止值及每次循環(huán)的增量(或減量),循環(huán)結(jié)束的條件是計(jì)數(shù)器變量超出給定的終止值?!纠?-5】2023年5月31日,公司對(duì)存貨進(jìn)行了盤點(diǎn),盤點(diǎn)結(jié)果如表3-3所示。請(qǐng)根據(jù)盤點(diǎn)結(jié)果做出相應(yīng)的賬務(wù)處理。(代碼位置:資源\第3章)3.2.1while循環(huán)27賬務(wù)處理規(guī)則如下。如果實(shí)存數(shù)量和賬存數(shù)量一致,則輸出“無(wú)須進(jìn)行賬目處理!”;如果實(shí)存數(shù)量小于賬存數(shù)量,則計(jì)算盤虧金額[盤虧金額=(賬存數(shù)量-實(shí)存數(shù)量)×單價(jià)],并保留兩位小數(shù)格式化輸出“發(fā)生盤虧:**元”;如果實(shí)存數(shù)量大于賬存數(shù)量,則計(jì)算盤盈金額[盤盈金額=(實(shí)存數(shù)量-賬存數(shù)量)×單價(jià)],并保留兩位小數(shù)格式化輸出“發(fā)生盤盈:**元”。其流程圖如圖3-10所示。3.2.1while循環(huán)283.2.1while循環(huán)292.條件型while循環(huán)條件型while循環(huán)是指循環(huán)次數(shù)不確定的循環(huán)結(jié)構(gòu)。需要注意的是,在循環(huán)體內(nèi)要有能改變循環(huán)條件的語(yǔ)句(讓循環(huán)條件不成立),以使循環(huán)能夠結(jié)束;否則,循環(huán)將無(wú)休止地執(zhí)行,形成“死循環(huán)”?!纠?-6】使用循環(huán)結(jié)構(gòu)從鍵盤輸入成本類二級(jí)科目(生產(chǎn)成本、制造費(fèi)用、勞務(wù)成本費(fèi)、研發(fā)支出、工程施工、工程結(jié)算),形成成本類二級(jí)科目列表,輸入“退出”結(jié)束輸入。(代碼位置:資源\第3章)其流程圖如圖3-11所示。3.2.1while循環(huán)303.2.2for-in循環(huán)31其功能是:遍歷序列中的所有元素并賦值給變量(從序列的第一個(gè)元素開(kāi)始,依次取到最后一個(gè)元素),遍歷結(jié)束就退出循環(huán),然后執(zhí)行循環(huán)結(jié)構(gòu)以外的語(yǔ)句。需要注意的是,for-in循環(huán)中的變量將會(huì)在每次循環(huán)開(kāi)始時(shí)自動(dòng)被賦值,因此不需要在循環(huán)中再對(duì)該變量賦值。for-in循環(huán)的流程圖如圖3-12所示。for-in循環(huán)類似于計(jì)數(shù)型while循環(huán),也是已知循環(huán)次數(shù)的循環(huán)結(jié)構(gòu),其循環(huán)次數(shù)取決于in后面的序列(如字符串、列表、元組、字典等)中元素的個(gè)數(shù)。其語(yǔ)法格式如下。3.2.2for-in循環(huán)32【例3-7】遍歷成本類二級(jí)科目列表(生產(chǎn)成本、制造費(fèi)用、勞務(wù)成本費(fèi)、研發(fā)支出、工程施工、工程結(jié)算),形成并輸出成本類二級(jí)科目字符串。(代碼位置:資源\第3章)其流程圖如圖3-13所示。3.2.2for-in循環(huán)33【例3-7】遍歷成本類二級(jí)科目列表(生產(chǎn)成本、制造費(fèi)用、勞務(wù)成本費(fèi)、研發(fā)支出、工程施工、工程結(jié)算),形成并輸出成本類二級(jí)科目字符串。(代碼位置:資源\第3章)其流程圖如圖3-13所示。3.2.3break語(yǔ)句34在循環(huán)體語(yǔ)句中,當(dāng)所需條件滿足時(shí),為了提高效率(既然已滿足所需條件,再繼續(xù)循環(huán)下去就沒(méi)有意義了),可以使用break語(yǔ)句提前退出循環(huán),然后執(zhí)行循環(huán)結(jié)構(gòu)后面的語(yǔ)句。其流程圖如圖3-14所示。3.2.3break語(yǔ)句35【例3-8】某公司成本類二級(jí)科目費(fèi)用如表3-4所示,找出并輸出勞務(wù)成本費(fèi)。(代碼位置:資源\第3章)3.2.3break語(yǔ)句36其流程圖如圖3-15所示。3.2.3break語(yǔ)句373.2.4continue語(yǔ)句38在循環(huán)體語(yǔ)句塊中,當(dāng)滿足所需條件時(shí),使用continue語(yǔ)句可立即結(jié)束本輪循環(huán)(即不執(zhí)行continue語(yǔ)句之后的語(yǔ)句),跳轉(zhuǎn)到循環(huán)結(jié)構(gòu)開(kāi)始處,開(kāi)始新一輪循環(huán)。其流程圖如圖3-16所示。3.2.4continue語(yǔ)句39【例3-9】某公司上半年開(kāi)票數(shù)如表3-5所示,找出并輸出開(kāi)票數(shù)大于10的所有月份及開(kāi)票數(shù)。(代碼位置:資源\第3章)其流程圖如圖3-17所示。3.2.4continue語(yǔ)句403.2.5循環(huán)嵌套41與分支結(jié)構(gòu)嵌套一樣,循環(huán)結(jié)構(gòu)也可以嵌套。既可以在while循環(huán)中嵌套while循環(huán),又可以在for-in循環(huán)中嵌套for-in循環(huán),還可以使while循環(huán)和for-in循環(huán)相互嵌套。其中外層的循環(huán)稱為外循環(huán),里層的循環(huán)稱為內(nèi)循環(huán)。其語(yǔ)法格式如下。3.2.5循環(huán)嵌套42【例3-10】某公司各部門下一年的年度管理費(fèi)用預(yù)算如表3-6所示,各季度管理費(fèi)用分配比例如表3-7所示。計(jì)算并輸出各部門下一年各季度的管理費(fèi)用預(yù)算。(代碼位置:資源\第3章)3.2.5循環(huán)嵌套43其流程圖如圖3-18所示。3.2.5循環(huán)嵌套44其流程圖如圖3-18所示。3.2.6課堂實(shí)驗(yàn)——篩選符合條件的全部工資數(shù)據(jù)45【實(shí)驗(yàn)內(nèi)容】某公司員工小張1~6月的工資如表3-8所示,篩選出工資大于8000元的所有月份及工資。(代碼位置:資源\第3章)【實(shí)驗(yàn)思路】①建立月份工資字典;②使用for-in循環(huán)和continue語(yǔ)句完成篩選。函數(shù)03.函數(shù)就是程序中可重復(fù)使用的、能實(shí)現(xiàn)某些功能的代碼段。當(dāng)這樣的代碼段被定義為函數(shù)后,在需要使用這段代碼段的地方,僅用一條調(diào)用該函數(shù)的語(yǔ)句即可。這樣可以使程序看起來(lái)很簡(jiǎn)潔(減少重復(fù)性),并降低復(fù)制、粘貼錯(cuò)誤的概率。Python中的函數(shù)有兩種,一種是內(nèi)置函數(shù),另一種是自定義函數(shù)。3.3.1內(nèi)置函數(shù)47為了提高效率、方便用戶使用,Python為一些常用的功能編寫了代碼,并定義為相應(yīng)的函數(shù),這樣的函數(shù)稱為內(nèi)置函數(shù)。在需要使用內(nèi)置函數(shù)完成某些功能的時(shí)候,直接調(diào)用內(nèi)置函數(shù)即可。Python提供的內(nèi)置函數(shù),除了前面介紹的input()、print()、format()等函數(shù)外,還包括另外幾十個(gè)常用的內(nèi)置函數(shù)。限于篇幅,下面僅介紹一些常見(jiàn)內(nèi)置函數(shù)的用法。1.max()和min()函數(shù)max()函數(shù)用于返回可迭代對(duì)象的元素中的最大值或者所有參數(shù)的最大值,min()函數(shù)用于返回可迭代對(duì)象的元素中的最小值或者所有參數(shù)的最小值。可迭代對(duì)象可以簡(jiǎn)單地理解為可以使用for循環(huán)的對(duì)象。元組、列表、字典、字符串等都是可迭代對(duì)象。3.3.1內(nèi)置函數(shù)48【例3-11】max()函數(shù)的常見(jiàn)用法(由于min()函數(shù)的常見(jiàn)用法與max()函數(shù)類似,這里不再詳細(xì)介紹)。(代碼位置:資源\第3章)3.3.1內(nèi)置函數(shù)492.round()函數(shù)round()函數(shù)用于返回對(duì)浮點(diǎn)數(shù)進(jìn)行四舍五入后的值?!纠?-12】某小微企業(yè)全年應(yīng)納稅所得額為955327元,按2.5%的稅率繳納企業(yè)所得稅,計(jì)算企業(yè)所得稅(四舍五入、保留兩位小數(shù))。(代碼位置:資源\第3章)3.3.1內(nèi)置函數(shù)503.pow()函數(shù)pow()函數(shù)用于返回某個(gè)值的冪運(yùn)算值?!纠?-13】某企業(yè)銀行貸款的年利率為5.85%,計(jì)算期數(shù)為5的復(fù)利終值系數(shù)(四舍五入、保留4位小數(shù))。(代碼位置:資源\第3章)3.3.1內(nèi)置函數(shù)514.sum()函數(shù)sum()函數(shù)用于返回可迭代對(duì)象中各元素之和?!纠?-14】sum()函數(shù)的常見(jiàn)用法。(代碼位置:資源\第3章)3.3.1內(nèi)置函數(shù)525.tuple()函數(shù)tuple()函數(shù)用于根據(jù)傳入的參數(shù)創(chuàng)建一個(gè)新的元組。【例3-15】tuple()函數(shù)的常見(jiàn)用法。(代碼位置:資源\第3章)3.3.1內(nèi)置函數(shù)536.list()函數(shù)list()函數(shù)用于根據(jù)傳入的參數(shù)創(chuàng)建一個(gè)新的列表?!纠?-16】list()函數(shù)的常見(jiàn)用法。(代碼位置:資源\第3章)3.3.1內(nèi)置函數(shù)547.dict()函數(shù)dict()函數(shù)用于根據(jù)傳入的參數(shù)創(chuàng)建一個(gè)新的字典。【例3-17】dict()函數(shù)的常見(jiàn)用法。(代碼位置:資源\第3章)3.3.1內(nèi)置函數(shù)558.zip()函數(shù)zip()函數(shù)用于將可迭代對(duì)象作為參數(shù),將可迭代對(duì)象中對(duì)應(yīng)的元素打包成一個(gè)個(gè)元組,然后返回由這些元組組成的對(duì)象。zip()函數(shù)對(duì)象不能直接輸出,可使用list()、tuple()、dict()函數(shù)來(lái)轉(zhuǎn)換輸出,如果各個(gè)可迭代對(duì)象的元素個(gè)數(shù)不一致,則返回的列表長(zhǎng)度以最短的可迭代對(duì)象的元素個(gè)數(shù)為準(zhǔn)?!纠?-18】zip()函數(shù)的常見(jiàn)用法。(代碼位置:資源\第3章)3.3.2自定義函數(shù)56雖然使用Python提供的內(nèi)置函數(shù)可以實(shí)現(xiàn)很多常見(jiàn)功能,但是在實(shí)際工作中,仍然有許多重復(fù)性的功能無(wú)法通過(guò)內(nèi)置函數(shù)來(lái)完成,這時(shí)就需要通過(guò)自定義函數(shù)來(lái)完成這些功能,實(shí)現(xiàn)一次編寫、多次調(diào)用的目的。1.自定義函數(shù)的格式自定義函數(shù)的格式如下。3.3.2自定義函數(shù)57自定義函數(shù)要遵守以下規(guī)則。①函數(shù)以def關(guān)鍵詞開(kāi)頭,后接函數(shù)名和一對(duì)圓括號(hào)()。②圓括號(hào)中可以沒(méi)有參數(shù)(絕大部分情況下有參數(shù)),如果有多個(gè)參數(shù),則多個(gè)參數(shù)之間用逗號(hào)分隔。③函數(shù)體要縮進(jìn)。④函數(shù)是否有返回值根據(jù)函數(shù)要實(shí)現(xiàn)的功能而定(絕大部分情況下有返回值)。有返回值就要有return語(yǔ)句,沒(méi)有返回值則不用有return語(yǔ)句。⑤函數(shù)體的開(kāi)頭通常用于存放函數(shù)說(shuō)明,包括函數(shù)的功能說(shuō)明、參數(shù)說(shuō)明、返回值說(shuō)明等。3.3.2自定義函數(shù)582.參數(shù)傳遞在數(shù)學(xué)中,當(dāng)使用三角函數(shù)sin(x)來(lái)計(jì)算30°的正弦值的時(shí)候,需要使用30°這個(gè)實(shí)際數(shù)值來(lái)代替x。同樣的道理,當(dāng)函數(shù)定義好以后,在程序中調(diào)用函數(shù)時(shí),也需要用實(shí)際數(shù)值來(lái)代替定義函數(shù)時(shí)使用的參數(shù),這個(gè)過(guò)程就稱為參數(shù)傳遞。函數(shù)的參數(shù)分為兩種:定義函數(shù)時(shí)使用的參數(shù)稱為形式參數(shù);調(diào)用函數(shù)時(shí)使用的實(shí)際數(shù)值(或變量)稱為實(shí)際參數(shù)。3.3.2自定義函數(shù)59【例3-19】通過(guò)計(jì)算所有者權(quán)益理解參數(shù)傳遞。(代碼位置:資源\第3章)3.3.2自定義函數(shù)60在調(diào)用函數(shù)時(shí),將實(shí)際參數(shù)傳遞給形式參數(shù)有多種方式,下面分別介紹。(1)使用位置參數(shù)傳遞位置參數(shù)是指在調(diào)用自定義函數(shù)時(shí),必須按照順序?qū)?shí)際參數(shù)傳遞給形式參數(shù),即傳入實(shí)際參數(shù)的位置和數(shù)量必須和定義函數(shù)時(shí)完全一致。例3-19屬于位置參數(shù)。(2)使用默認(rèn)參數(shù)值傳遞定義參數(shù)時(shí),可以為參數(shù)指定默認(rèn)值。在傳遞參數(shù)的時(shí)候,如果參數(shù)值沒(méi)有傳入,則會(huì)用默認(rèn)值代替;如果傳入?yún)?shù),則默認(rèn)值不起作用。需要注意的是,有默認(rèn)值的參數(shù)應(yīng)放在最后,否則會(huì)出錯(cuò)。3.3.2自定義函數(shù)61【例3-20】通過(guò)計(jì)算銀行存款理解默認(rèn)參數(shù)值。(代碼位置:資源\第3章)3.3.2自定義函數(shù)62(3)使用關(guān)鍵字參數(shù)傳遞關(guān)鍵字參數(shù)是指在調(diào)用函數(shù)時(shí),采用“參數(shù)名=值”的形式傳遞參數(shù),無(wú)須按照指定順序傳遞參數(shù)。這種方式更加靈活,既可以避免由于參數(shù)順序不對(duì)造成的錯(cuò)誤,又可以讓函數(shù)的調(diào)用者更加明確每個(gè)參數(shù)所傳遞的具體值。【例3-21】通過(guò)計(jì)算銀行存款理解關(guān)鍵字參數(shù)。(代碼位置:資源\第3章)3.3.2自定義函數(shù)63(4)使用可變位置參數(shù)傳遞在定義函數(shù)的時(shí)候,有時(shí)候并不知道調(diào)用時(shí)傳入?yún)?shù)的數(shù)量,這時(shí)候就需要用到可變位置參數(shù)。使用可變位置參數(shù)時(shí),參數(shù)前面應(yīng)添加“*”?!纠?-22】定義一個(gè)通用的計(jì)算銀行存款的函數(shù),無(wú)論銀行有多少家,都能正確計(jì)算。(代碼位置:資源\第3章)3.3.2自定義函數(shù)643.3.2自定義函數(shù)65(5)使用可變關(guān)鍵字參數(shù)傳遞在定義函數(shù)的時(shí)候,如果需要提供任意數(shù)量的關(guān)鍵字(鍵值對(duì))類型參數(shù),就需要用到可變關(guān)鍵字參數(shù)。使用可變關(guān)鍵字參數(shù)時(shí),參數(shù)前面應(yīng)添加“**”?!纠?-23】定義一個(gè)通用的顯示各銀行存款金額并計(jì)算各銀行存款總額的函數(shù),無(wú)論存款銀行有多少家,都能正確顯示和計(jì)算。(代碼位置:資源\第3章)3.3.2自定義函數(shù)663.3.2自定義函數(shù)673.函數(shù)返回值前面介紹的函數(shù)返回值都是單個(gè)值,當(dāng)函數(shù)需要返回多個(gè)值的時(shí)候,return語(yǔ)句中就不能使用單個(gè)變量,而是使用列表、字典等變量。需要注意的是,當(dāng)函數(shù)體中沒(méi)有return語(yǔ)句時(shí),函數(shù)返回特殊的值None,該值代表“無(wú)”?!纠?-24】某公司根據(jù)工作年限制定了加薪分檔要求的規(guī)則:工齡大于5年加薪1000元,小于等于5年加薪500元。計(jì)算加薪后的工資。(代碼位置:資源\第3章)3.3.2自定義函數(shù)683.3.2自定義函數(shù)693.3.2自定義函數(shù)704.變量的作用域變量的作用域就是變量的有效范圍,即變量可以在哪個(gè)范圍以內(nèi)使用。變量的作用域由變量的定義位置決定,在不同位置定義的變量,它的作用域是不一樣的。這里只介紹兩種變量,局部變量和全局變量。(1)局部變量在函數(shù)內(nèi)部定義的變量,其作用域僅限于函數(shù)內(nèi)部,這樣的變量稱為局部變量。例如,前文函數(shù)中定義的變量都是局部變量。3.3.2自定義函數(shù)71【例3-25】使用例3-22驗(yàn)證在函數(shù)外部調(diào)用函數(shù)內(nèi)部定義的局部變量會(huì)出錯(cuò)。(代碼位置:資源\第3章)3.3.2自定義函數(shù)72(2)全局變量在函數(shù)外部定義的變量稱為全局變量。全局變量的作用域是整個(gè)程序,它既可以在各個(gè)函數(shù)的外部使用,也可以在各個(gè)函數(shù)的內(nèi)部使用。例如,例3-25中的bankAccount就是全局變量。由于全局變量和局部變量相當(dāng)于分布在不同工作表的單元格中,因此即使它們使用同一個(gè)變量名(相當(dāng)于不同工作表中的同一個(gè)地址的單元格),也是不同的變量,兩者互不干擾。由于有這個(gè)特性,如果全局變量和局部變量或不同函數(shù)間的局部變量具有同一種含義,它們就可以使用同一個(gè)變量名,這樣含義會(huì)更明確(不同單詞會(huì)造成一定的歧義)。例如,例3-25中的局部變量bankDeposit和全局變量bankAccount可以統(tǒng)一使用全局變量名bankAccount代表銀行存款,例3-24中的局部變量salaryDict和全局變量wagesDict可以統(tǒng)一使用局部變量名salaryDict代表員工工資字典。3.3.3lambda函數(shù)73lambda函數(shù)也稱為匿名函數(shù),通俗地說(shuō)就是沒(méi)有名字的函數(shù)。使用lambda函數(shù)的好處主要是:①不用起名字;②代碼簡(jiǎn)潔。其語(yǔ)法格式如下。lambda函數(shù)的輸入值是傳入?yún)?shù)列表的值,其輸出值(返回值)是根據(jù)表達(dá)式計(jì)算得到的值。lambda函數(shù)主要有以下兩種用法。1.將lambda函數(shù)賦值給一個(gè)變量,通過(guò)這個(gè)變量間接調(diào)用該lambda函數(shù)【例3-26】使用lambda函數(shù)做加法運(yùn)算。(代碼位置:資源\第3章)3.3.3lambda函數(shù)742.將lambda函數(shù)作為參數(shù)傳遞給其他函數(shù)大多數(shù)情況下,lambda函數(shù)只作為參數(shù)傳遞給其他函數(shù)。把lambda函數(shù)作為map()函數(shù)的參數(shù),然后對(duì)某個(gè)序列做相同的函數(shù)運(yùn)算是該函數(shù)的典型用法。下面先介紹map()函數(shù)。map()函數(shù)的語(yǔ)法格式如下。map()函數(shù)對(duì)可迭代對(duì)象中的每個(gè)值進(jìn)行相同的函數(shù)運(yùn)算,返回一個(gè)與傳入可迭代對(duì)象大小一樣的map對(duì)象(也稱為迭代器)。Python中的列表、元組、字典等都是可迭代對(duì)象。需要注意的是:map對(duì)象不能直接輸出,需要使用list()、tuple()等函數(shù)才能把它的值輸出。3.3.3lambda函數(shù)75(1)對(duì)一個(gè)可迭代對(duì)象的所有元素執(zhí)行相同的lambda函數(shù)運(yùn)算【例3-27】現(xiàn)有某公司的基本工資列表,將每個(gè)人的基本工資增加200元。(代碼位置:資源\第3章)3.3.3lambda函數(shù)76(2)對(duì)兩個(gè)可迭代對(duì)象索引相同的所有元素執(zhí)行相同的lambda函數(shù)運(yùn)算【例3-28】現(xiàn)有某公司的基本工資列表和獎(jiǎng)勵(lì)工資列表,計(jì)算總工資(總工資=基本工資+獎(jiǎng)勵(lì)工資)。(代碼位置:資源\第3章)3.3.4課堂實(shí)驗(yàn)——現(xiàn)金流折現(xiàn)模型(價(jià)值評(píng)估)77【實(shí)驗(yàn)內(nèi)容】未來(lái)現(xiàn)金流量現(xiàn)值公式如下。PV=Σ[第t年預(yù)計(jì)未來(lái)現(xiàn)金流量NCF/(1+折現(xiàn)率R)t]假設(shè)期數(shù)間隔為1年,折現(xiàn)率R為5%,現(xiàn)金流發(fā)生在年末。根據(jù)未來(lái)3期(-10000、8000、12000)和6期(-20000、-500、2000、10000、16000、30000)現(xiàn)金流量分別計(jì)算現(xiàn)值。(代碼位置:資源\第3章)【實(shí)驗(yàn)思路】①定義pv()函數(shù),使用可變位置參數(shù)傳遞未來(lái)多期(不定)現(xiàn)金流量;②調(diào)用pv()函數(shù)計(jì)算現(xiàn)值。模塊04.一個(gè)模塊就是一個(gè)Python程序文件。因此,前面章節(jié)中編寫的每個(gè)Python程序文件都可以作為模塊。3.4.1標(biāo)準(zhǔn)模塊79標(biāo)準(zhǔn)模塊也稱為內(nèi)置模塊,它是Python內(nèi)置標(biāo)準(zhǔn)庫(kù)中的模塊,也是Python的官方模塊,可直接導(dǎo)入程序供用戶使用。1.導(dǎo)入模塊模塊就像是工具包,要想使用模塊中的工具,如函數(shù),就需要導(dǎo)入這個(gè)模塊。Python提供了兩種導(dǎo)入模塊的方式:import導(dǎo)入和from…import…導(dǎo)入。(1)import導(dǎo)入使用import導(dǎo)入模塊的語(yǔ)法格式如下。①使用import可以一次性導(dǎo)入多個(gè)模塊,各模塊用英文逗號(hào)分隔。②[as別名]是給模塊起別名,別名一般是縮寫的,其目的是減少輸入,導(dǎo)入模塊以后就可以用別名代替模塊名。雖然[as別名]這部分是用“[]”括起來(lái)的,表示可以使用,也可以省略,但是在實(shí)際工作中,這部分都是使用的。3.4.1標(biāo)準(zhǔn)模塊80使用這種語(yǔ)法格式的語(yǔ)句會(huì)導(dǎo)入指定模塊中的所有成員(包括變量、函數(shù)、類等)。當(dāng)需要使用模塊中的成員時(shí),需用該模塊名(或別名)作為前綴,否則會(huì)報(bào)錯(cuò)。①在無(wú)別名的情況下使用模塊名.成員。②在有別名的情況下使用別名.成員。(2)from…import…導(dǎo)入使用from…import…導(dǎo)入模塊的語(yǔ)法格式如下。使用這種語(yǔ)法格式的語(yǔ)句只會(huì)導(dǎo)入模塊中指定的成員,而不是全部成員。同時(shí),當(dāng)在程序中使用該成員時(shí),無(wú)須附加任何前綴,直接使用該成員的成員名(或別名)即可。3.4.1標(biāo)準(zhǔn)模塊812.標(biāo)準(zhǔn)模塊的使用Python提供了豐富的標(biāo)準(zhǔn)模塊供用戶使用。下面介紹幾個(gè)常用標(biāo)準(zhǔn)模塊的使用方法。(1)datetime模塊datetime模塊是Python中專門用于處理日期和時(shí)間的模塊,其常用函數(shù)如表3-9所示。3.4.1標(biāo)準(zhǔn)模塊82【例3-29】datetime模塊中常用函數(shù)的用法。(代碼位置:資源\第3章)3.4.1標(biāo)準(zhǔn)模塊83(2)random模塊random模塊是Python中用于生成隨機(jī)數(shù)的模塊,其常用函數(shù)如表3-10所示?!纠?-30】random模塊中常用函數(shù)的用法。(代碼位置:資源\第3章)3.4.2第三方模塊84雖然Python的標(biāo)準(zhǔn)模塊提供了文本處理、系統(tǒng)管理、網(wǎng)絡(luò)處理等基礎(chǔ)功能,但是在實(shí)際工作中,這些功能遠(yuǎn)遠(yuǎn)不能滿足需求。針對(duì)這種情況,許多廠商開(kāi)發(fā)了眾多功能豐富、滿足實(shí)際需求的模塊,這些可免費(fèi)共享使用的模塊稱為第三方模塊。正是第三方模塊節(jié)省了大量重復(fù)編寫代碼的時(shí)間,才使得Python現(xiàn)今這么流行。3.4.2第三方模塊85在財(cái)務(wù)工作中,常用的第三方模塊如圖3-19所示。3.4.2第三方模塊861.NumPy模塊NumPy模塊主要用于多維數(shù)組和矩陣運(yùn)算,它是Python進(jìn)行高性能科學(xué)計(jì)算和數(shù)據(jù)分析的基礎(chǔ)模塊。它最重要的一個(gè)特點(diǎn)是其N維數(shù)組對(duì)象,該對(duì)象是一個(gè)快速且靈活的大數(shù)據(jù)集容器。利用這種數(shù)組對(duì)整塊數(shù)據(jù)執(zhí)行數(shù)學(xué)運(yùn)算,比使用Python自帶的數(shù)組以及列表執(zhí)行數(shù)學(xué)運(yùn)算效率高得多(無(wú)須進(jìn)行循環(huán)操作)。在使用Python進(jìn)行數(shù)據(jù)分析的過(guò)程中,大部分時(shí)候是不會(huì)直接使用NumPy模塊的,而是其他模塊要用到NumPy模塊,例如,pandas模塊是基于NumPy模塊的,也就是沒(méi)有NumPy模塊,pandas模塊就不能工作??梢哉f(shuō),NumPy模塊是整個(gè)Python數(shù)據(jù)分析工作的基石。2.pandas模塊pandas模塊是當(dāng)前最常用的數(shù)據(jù)處理與分析工具。它支持從CSV、JSON、SQL、Excel等各種文件中導(dǎo)入數(shù)據(jù),而且可以對(duì)各種數(shù)據(jù)進(jìn)行運(yùn)算操作,比如歸并、過(guò)濾、選擇,以及數(shù)據(jù)清洗和數(shù)據(jù)處理等。此外,pandas模塊還集成了Matplotlib模塊,它可以方便地進(jìn)行數(shù)據(jù)可視化,將數(shù)據(jù)以圖表的方式呈現(xiàn)出來(lái)。pandas模塊是本書的重點(diǎn)內(nèi)容,在第4章中會(huì)詳細(xì)介紹。3.4.2第三方模塊873.Matplotlib模塊Matp

溫馨提示

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

評(píng)論

0/150

提交評(píng)論