![Python程序設(shè)計(jì) 課件 第四章 函數(shù)_第1頁(yè)](http://file4.renrendoc.com/view8/M00/22/0E/wKhkGWcjTsmAEZSXAAPQpMZhCcY644.jpg)
![Python程序設(shè)計(jì) 課件 第四章 函數(shù)_第2頁(yè)](http://file4.renrendoc.com/view8/M00/22/0E/wKhkGWcjTsmAEZSXAAPQpMZhCcY6442.jpg)
![Python程序設(shè)計(jì) 課件 第四章 函數(shù)_第3頁(yè)](http://file4.renrendoc.com/view8/M00/22/0E/wKhkGWcjTsmAEZSXAAPQpMZhCcY6443.jpg)
![Python程序設(shè)計(jì) 課件 第四章 函數(shù)_第4頁(yè)](http://file4.renrendoc.com/view8/M00/22/0E/wKhkGWcjTsmAEZSXAAPQpMZhCcY6444.jpg)
![Python程序設(shè)計(jì) 課件 第四章 函數(shù)_第5頁(yè)](http://file4.renrendoc.com/view8/M00/22/0E/wKhkGWcjTsmAEZSXAAPQpMZhCcY6445.jpg)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第四章
函數(shù)Python程序設(shè)計(jì)01函數(shù)的基本使用02參數(shù)傳遞與變量作用域03本章回顧函數(shù)函數(shù)是可一次定義多次使用的代碼段。若把Python類比漢語(yǔ),函數(shù)相當(dāng)于典故等,能提高代碼可讀性和開(kāi)發(fā)效率。比如班級(jí)有40人,需按固定格式打印個(gè)人信息,常需此功能,用函數(shù)可定義一次后隨時(shí)調(diào)用。本章將介紹函數(shù)基本使用、參數(shù)傳遞、變量作用域等內(nèi)容。第4章函數(shù)4.1函數(shù)的基本使用4.1.1函數(shù)的定義與調(diào)用4.1.2函數(shù)的返回值4.1.3Python常用內(nèi)置函數(shù)4.1.4案例5:驗(yàn)證哥德巴赫猜想4.2參數(shù)傳遞與變量作用域4.2.1函數(shù)的參數(shù)傳遞4.2.2函數(shù)傳遞的參數(shù)分類4.2.3變量作用域4.2.4匿名函數(shù)與高階函數(shù)4.2.5案例6:計(jì)算某公司銷售員工的獎(jiǎng)金01函數(shù)的基本使用在計(jì)算機(jī)中,函數(shù)是可被引用的程序或代碼段,用于實(shí)現(xiàn)某種功能且可重復(fù)使用。其作用包括通過(guò)友好命名讓代碼易讀易調(diào)試、減少重復(fù)代碼使程序更短小且便于后續(xù)修改、將長(zhǎng)程序拆分為函數(shù)方便單獨(dú)調(diào)試后組裝。之前使用過(guò)的input()、print()、range()等是Python提供的標(biāo)準(zhǔn)內(nèi)置函數(shù)。而我們也可以自己定義函數(shù)并使用,本節(jié)將學(xué)習(xí)函數(shù)的定義和調(diào)用。函數(shù)的定義Python中函數(shù)的定義使用def關(guān)鍵字實(shí)現(xiàn),具體的語(yǔ)法如下:deffunctionname(parameters):functionbody參數(shù)描述functionname用于指定函數(shù)名稱,在調(diào)用函數(shù)時(shí)使用parameters【可選】用于指定函數(shù)參數(shù),如果不指定,則說(shuō)明該函數(shù)沒(méi)有參數(shù),在調(diào)用時(shí)也不用傳遞參數(shù);如有多個(gè)參數(shù),參數(shù)間使用逗號(hào)“,”分隔functionbody【可選】函數(shù)體,即在函數(shù)被調(diào)用時(shí),要執(zhí)行的功能代碼,如果想要定義一個(gè)什么都不干的函數(shù),可以使用pass語(yǔ)句占位;如果函數(shù)有返回值,可以使用return語(yǔ)句參數(shù)說(shuō)明如表4-1所示。函數(shù)的定義接下來(lái)我們定義一個(gè)打印個(gè)人信息的函數(shù),如下圖所示。上圖中,函數(shù)的名稱是showinfo,調(diào)用時(shí)即使用這個(gè)名字;小括號(hào)“()”中的name、sex和age是函數(shù)的參數(shù),用逗號(hào)“,”進(jìn)行分隔;冒號(hào)“:”后邊的兩句代碼是函數(shù)體,即功能代碼,這里就是使用格式化字符串來(lái)打印個(gè)人信息;此代碼沒(méi)有return語(yǔ)句,代表沒(méi)有返回值。由于此部分代碼只是函數(shù)定義,還沒(méi)有對(duì)其進(jìn)行調(diào)用,所以運(yùn)行此代碼沒(méi)有輸出。函數(shù)的調(diào)用函數(shù)的定義是通過(guò)參數(shù)和函數(shù)體決定函數(shù)能做什么,但函數(shù)并沒(méi)有被執(zhí)行。如果想要執(zhí)行該函數(shù)就需要調(diào)用函數(shù),如調(diào)用圖4-1中的函數(shù)showinfo的代碼為showinfo('張三','男',23),輸出結(jié)果就是格式化打印“張三”的姓名、性別、年齡信息。調(diào)用函數(shù)的語(yǔ)法格式為:functionname(parameters_value)functionname是要調(diào)用函數(shù)的函數(shù)名,parameters_value指的是需要傳遞的參數(shù)值,多個(gè)參數(shù)之間用逗號(hào)“,”分隔,如果定義的函數(shù)中有返回值,可以使用一個(gè)變量進(jìn)行接收。函數(shù)的定義與調(diào)用應(yīng)用舉例函數(shù)的定義與調(diào)用舉例如右圖所示。右圖中定義了一個(gè)獲取偶數(shù)的函數(shù),此函數(shù)體中有返回值,在調(diào)用時(shí)使用變量evenlist對(duì)其進(jìn)行接收,并將其打印出來(lái)。函數(shù)的定義與調(diào)用應(yīng)用舉例函數(shù)也是可以嵌套使用的,如右圖所示。函數(shù)的定義與調(diào)用應(yīng)用舉例函數(shù)的定義與調(diào)用應(yīng)用舉例在上頁(yè)代碼中將“案例1:計(jì)算體脂率”進(jìn)行改造,定義一個(gè)計(jì)算體脂率的函數(shù)count_bodyfat,在此函數(shù)中又定義了一個(gè)根據(jù)體脂率判斷體型的函數(shù)decide_health,此代碼的運(yùn)行結(jié)果如右圖所示。函數(shù)的定義與調(diào)用應(yīng)用舉例上頁(yè)代碼中還為函數(shù)添加了說(shuō)明文檔,函數(shù)的說(shuō)明文檔放在字符串中,通常位于函數(shù)內(nèi)部、所有代碼的最前面(如右圖),可以通過(guò)內(nèi)置的help()函數(shù)或__doc__屬性獲取說(shuō)明文檔的內(nèi)容,如下圖所示。函數(shù)的返回值在函數(shù)定義中,若需要獲取返回結(jié)果可使用return語(yǔ)句指定返回值。函數(shù)調(diào)用的參數(shù)傳遞解決向函數(shù)內(nèi)部輸入數(shù)據(jù)問(wèn)題,返回值解決向外部輸出數(shù)據(jù)問(wèn)題。當(dāng)函數(shù)中有return語(yǔ)句時(shí),執(zhí)行該語(yǔ)句會(huì)直接結(jié)束函數(shù)執(zhí)行,可簡(jiǎn)單理解為return語(yǔ)句用于退出函數(shù)。其語(yǔ)法格式為return[value],value為可選參數(shù),不指定則返回None,可一個(gè)或多個(gè)值,任意類型。return語(yǔ)句的應(yīng)用舉例見(jiàn)下頁(yè)。函數(shù)的返回值return語(yǔ)句的使用Python常用內(nèi)置函數(shù)我們?cè)谇懊?章已經(jīng)使用了很多Python的內(nèi)置函數(shù),最常用的就是在2.1.1中介紹的基本輸入輸出函數(shù)input()和print(),除此之外我們?cè)趯W(xué)習(xí)第2章的時(shí)候也用到了很多內(nèi)置函數(shù),如int()、list()、range()等。為了能夠讓大家更容易記憶常用的內(nèi)置函數(shù),這里按照功能將其分為數(shù)學(xué)運(yùn)算、序列相關(guān)、類型轉(zhuǎn)換、邏輯判斷和對(duì)象操作。其中類型轉(zhuǎn)換類在第2章已經(jīng)介紹過(guò),此處不再贅述。數(shù)學(xué)運(yùn)算數(shù)學(xué)運(yùn)算相關(guān)的常用內(nèi)置函數(shù)總結(jié)如表4-2所示。數(shù)學(xué)運(yùn)算數(shù)學(xué)運(yùn)算類的常用內(nèi)置函數(shù)使用舉例如【代碼4-4】所示。數(shù)學(xué)運(yùn)算序列相關(guān)序列相關(guān)的常用內(nèi)置函數(shù)總結(jié)如下圖所示。下圖中列舉的序列相關(guān)函數(shù)我們?cè)?.3中都使用過(guò),此處不再舉例說(shuō)明邏輯判斷邏輯判斷相關(guān)的常用內(nèi)置函數(shù)總結(jié)如表4-4所示。邏輯判斷邏輯判斷類的常用內(nèi)置函數(shù)使用舉例如下圖所示。對(duì)象操作對(duì)象操作類的常用內(nèi)置函數(shù)總結(jié)如下圖所示。上圖中列舉的對(duì)象操作相關(guān)函數(shù),都很簡(jiǎn)單且大部分函數(shù)在之前章節(jié)都使用過(guò),此處不再舉例說(shuō)明。案例【案例描述】哥德巴赫是一位德國(guó)數(shù)學(xué)家,1742年哥德巴赫在給歐拉的信中提出了以下猜想:任一個(gè)大于2的整數(shù)都可寫(xiě)成三個(gè)質(zhì)數(shù)之和。但是哥德巴赫自己無(wú)法證明它,于是就寫(xiě)信請(qǐng)教赫赫有名的大數(shù)學(xué)家歐拉幫忙證明,歐拉在回信中提到了另一個(gè)等價(jià)版本,即任一大于2的偶數(shù)都可寫(xiě)成兩個(gè)質(zhì)數(shù)之和,現(xiàn)在常說(shuō)的的哥德巴赫猜想指的是歐拉的版本。歐拉雖然提出了等價(jià)版本,但是他直到死也始終無(wú)法證明這個(gè)猜想?!景咐蟆吭O(shè)計(jì)一個(gè)程序用于驗(yàn)證哥德巴赫的猜想,從鍵盤(pán)隨意輸入一個(gè)大于2的偶數(shù),輸出其分解式,如果輸入的偶數(shù)找不到分解式,則代表哥德巴赫猜想不成立,如果隨意輸入的每個(gè)偶數(shù)都能有分解式,則認(rèn)為歌德巴赫猜想是不能證偽的。案例02參數(shù)傳遞與變量作用域上節(jié)我們學(xué)習(xí)了函數(shù)的定義、調(diào)用、返回值等函數(shù)的基礎(chǔ)知識(shí),掌握了這些知識(shí)之后,我們可以自定義一個(gè)函數(shù)并使用,但是如果想在開(kāi)發(fā)中熟練應(yīng)用函數(shù)或是能讀懂其他人寫(xiě)的函數(shù)相關(guān)代碼,還需要掌握參數(shù)傳遞和變量作用域的相關(guān)知識(shí)。形式參數(shù)與實(shí)際參數(shù)函數(shù)調(diào)用時(shí)的參數(shù)傳遞實(shí)現(xiàn)了從函數(shù)外部向函數(shù)內(nèi)部輸入數(shù)據(jù)的問(wèn)題,定義函數(shù)時(shí)函數(shù)名后括號(hào)中的參數(shù)為形式參數(shù),調(diào)用函數(shù)時(shí)函數(shù)名后括號(hào)中的為實(shí)際參數(shù),如下圖所示。在定義函數(shù)時(shí),函數(shù)的形式參數(shù)不代表任何具體的值,只有在函數(shù)調(diào)用時(shí),才會(huì)有實(shí)際參數(shù)傳給函數(shù)。參數(shù)傳遞的分類實(shí)際參數(shù)傳遞給形式參數(shù)時(shí),根據(jù)實(shí)際參數(shù)類型不同分為傳遞不可變對(duì)象和傳遞可變對(duì)象。傳遞不可變對(duì)象時(shí),參數(shù)傳遞后改變形式參數(shù)值,實(shí)際參數(shù)值不變;傳遞可變對(duì)象時(shí),參數(shù)傳遞后改變形式參數(shù)值,實(shí)際參數(shù)值也改變。在Python中,字符串、元組、數(shù)字類型是不可變對(duì)象,列表、字典是可變對(duì)象,關(guān)于參數(shù)傳遞的舉例見(jiàn)右圖。參數(shù)傳遞的分類上頁(yè)的運(yùn)行結(jié)果如下圖所示。參數(shù)傳遞的分類
從上頁(yè)的運(yùn)行結(jié)果可看出,不可變對(duì)象的參數(shù)傳遞過(guò)程中傳遞的只是對(duì)象的值,沒(méi)有影響對(duì)象本身,在執(zhí)行函數(shù)體過(guò)程中,會(huì)在內(nèi)存中生成一個(gè)新的對(duì)象,被調(diào)用后對(duì)象的內(nèi)容沒(méi)有改變;而可變對(duì)象的參數(shù)傳遞過(guò)程中傳遞的是引用,在執(zhí)行函數(shù)體過(guò)程中,沒(méi)有生成新對(duì)象,被調(diào)用后對(duì)象的內(nèi)容隨著形式參數(shù)的改變而改變。函數(shù)傳遞的參數(shù)分類在函數(shù)調(diào)用過(guò)程中根據(jù)傳遞的參數(shù)類型,可將參數(shù)分為位置參數(shù)、關(guān)鍵字參數(shù)、默認(rèn)參數(shù)、不定長(zhǎng)參數(shù)和強(qiáng)制關(guān)鍵字參數(shù)。1.位置參數(shù)位置參數(shù)也稱為必須參數(shù),就是必須以正確的順序傳入給函數(shù)。我們之前使用的參數(shù)傳遞均是位置參數(shù),位置參數(shù)需要確保兩點(diǎn),第一點(diǎn)是數(shù)量必須與定義時(shí)一致,第二點(diǎn)是位置必須與定義時(shí)一致。接下來(lái)以調(diào)用【代碼4-2】中定義的count_bodyfat函數(shù)為例,分別介紹一下數(shù)量與定義時(shí)不一致、位置與定義時(shí)不一致時(shí)會(huì)出現(xiàn)的情況。位置參數(shù)(1)參數(shù)數(shù)量與定義時(shí)不一致當(dāng)數(shù)量與定義時(shí)不一致時(shí),將出現(xiàn)TypeError錯(cuò)誤,如圖4-12所示,出現(xiàn)錯(cuò)誤的原因是缺少“height”和“weight”兩個(gè)參數(shù)。位置參數(shù)(2)參數(shù)位置與定義時(shí)不一致當(dāng)位置與定義時(shí)不一致時(shí),也將出現(xiàn)TypeError錯(cuò)誤,如圖4-13所示,出現(xiàn)錯(cuò)誤的原因是形式參數(shù)的類型與實(shí)際參數(shù)的類型不一致,并且在函數(shù)中,這兩種類型還不能正常轉(zhuǎn)換。位置參數(shù)但是有一種情況,就是在調(diào)用函數(shù)過(guò)程中,雖然指定的實(shí)際參數(shù)與形式參數(shù)的位置不一致,但是它們之間的數(shù)據(jù)類型一致,那么程序不會(huì)報(bào)錯(cuò),但是會(huì)出現(xiàn)得到的結(jié)果與實(shí)際不符的情況,如下圖所示。上圖中,年齡和身高參數(shù)調(diào)換了位置,程序可以正常運(yùn)行,但是計(jì)算出的體脂率是負(fù)數(shù),明顯不符合實(shí)際情況。關(guān)鍵字參數(shù)關(guān)鍵字參數(shù)是在調(diào)用函數(shù)時(shí)用形式參數(shù)的名字指定輸入?yún)?shù)。使用關(guān)鍵字參數(shù),函數(shù)調(diào)用時(shí)只需寫(xiě)正確參數(shù)名,無(wú)需考慮參數(shù)順序與聲明不一致的問(wèn)題,因?yàn)镻ython解釋器能根據(jù)參數(shù)名匹配參數(shù)值,使參數(shù)傳遞更靈活方便。以調(diào)用【代碼4-2】中定義的count_bodyfat函數(shù)為例理解關(guān)鍵字參數(shù),如下圖所示。上圖中,身高和年齡的位置是與定義函數(shù)時(shí)不一致的,但是此函數(shù)能正常運(yùn)行,且得到的結(jié)果是合理的。默認(rèn)參數(shù)如果在函數(shù)定義時(shí),直接指定了默認(rèn)值,那么在調(diào)用函數(shù)時(shí),即使沒(méi)有傳入這個(gè)參數(shù),程序也不會(huì)報(bào)錯(cuò)。需要注意的時(shí),在定義函數(shù)時(shí),默認(rèn)參數(shù)必須放在所有參數(shù)之后,不然會(huì)報(bào)錯(cuò),如下圖所示。默認(rèn)參數(shù)關(guān)于默認(rèn)參數(shù)的使用舉例如下圖所示。不定長(zhǎng)參數(shù)不定長(zhǎng)參數(shù)也叫可變參數(shù),即可傳入的實(shí)際參數(shù)可以是多個(gè)。不定長(zhǎng)參數(shù)有兩種形式,一種是加一個(gè)星號(hào)“*”以元組的形式傳入,還有一種是加兩個(gè)星號(hào)“**”以字典的形式傳入。不定長(zhǎng)參數(shù)*parameter一個(gè)星號(hào)“*”形式的參數(shù)是和元組結(jié)合起來(lái)一起使用的,表示接收任意多個(gè)實(shí)際參數(shù)并將其放入到一個(gè)元組中,使用舉例如右圖所示。不定長(zhǎng)參數(shù)上圖的運(yùn)行結(jié)果如下圖所示。強(qiáng)制關(guān)鍵字參數(shù)除了上述介紹的4種參數(shù)之外,函數(shù)傳遞過(guò)程中的參數(shù)還有一種強(qiáng)制關(guān)鍵字參數(shù),如果開(kāi)發(fā)過(guò)程中需要限制關(guān)鍵字參數(shù)的名字時(shí)則可以使用這種參數(shù)。強(qiáng)制關(guān)鍵字參數(shù)需要一個(gè)特殊分隔符“*”,后面的參數(shù)被強(qiáng)制設(shè)為關(guān)鍵字參數(shù)。在函數(shù)調(diào)用時(shí),分隔符“*”后面的參數(shù)一定要給出名字,否則會(huì)報(bào)SyntaxError錯(cuò)誤,如下圖1所示。變量作用域所謂變量的作用域就是變量的有效區(qū)域,即變量在該區(qū)域內(nèi)能被解釋器識(shí)別,超出該區(qū)域時(shí)訪問(wèn)會(huì)報(bào)錯(cuò)。變量的作用域由變量的定義位置決定,在不同位置定義的變量,它的作用域是不一樣的。本節(jié)我們主要介紹局部變量和全局變量。局部變量局部變量是指在函數(shù)內(nèi)部定義并使用的變量,它的作用域也僅限于函數(shù)內(nèi)部,出了函數(shù)再使用就會(huì)報(bào)錯(cuò)。如圖4-22所示,由于template是在showinfo()函數(shù)內(nèi)部定義的變量,在函數(shù)之外使用即會(huì)出現(xiàn)NameError錯(cuò)誤。局部變量需要注意的是函數(shù)參數(shù)也屬于局部變量,在函數(shù)外部使用會(huì)報(bào)錯(cuò),如下圖所示。全局變量全局變量是指既能在函數(shù)內(nèi)使用也能在函數(shù)外使用的變量。如下圖所示。全局變量需要注意的是如果想在函數(shù)內(nèi)修改函數(shù)外定義的變量,可以使用global關(guān)鍵字,舉例如下圖所示。全局變量下圖為分別調(diào)用demo1()和demo2()的結(jié)果。匿名函數(shù)與高階函數(shù)匿名函數(shù)就是沒(méi)有名字的函數(shù),與普通函數(shù)相比,匿名函數(shù)除了沒(méi)有名字外,功能也比較單一,不包括循環(huán)結(jié)構(gòu),沒(méi)有return語(yǔ)句,通常只是一個(gè)表達(dá)式。而高階函數(shù)就是允許把函數(shù)作為參數(shù)傳入到另一個(gè)函數(shù)中,還允許返回一個(gè)函數(shù),所謂的函數(shù)式編程就是指這種高度抽象的編程范式。在Python中,匿名函數(shù)常被使用在高階函數(shù)中。匿名函數(shù)的定義與使用在Python中,匿名函數(shù)又叫l(wèi)ambda表達(dá)式,使用lambda關(guān)鍵字來(lái)創(chuàng)建,其語(yǔ)法格式如下:參數(shù)說(shuō)明如下圖所示。匿名函數(shù)的定義與使用關(guān)于匿名函數(shù)的使用舉例如下圖所示。匿名函數(shù)的定義與使用上頁(yè)的運(yùn)行結(jié)果如下圖所示。在上頁(yè)中,分別使用變量result1、result2和result3來(lái)接收匿名函數(shù),方便后面對(duì)其進(jìn)行調(diào)用,而匿名函數(shù)最大的特點(diǎn)就是不用起名字,所以在實(shí)際代碼開(kāi)發(fā)中,類似上頁(yè)中單獨(dú)使用匿名函數(shù)的情況較少,匿名函數(shù)的意義是在高階函數(shù)中使用。Python內(nèi)置的高階函數(shù)Python中的sorted()、map()、filter()等內(nèi)置函數(shù)都是高階函數(shù)。我們首先來(lái)看之前接觸最多的sorted()函數(shù)。(1)sorted()函數(shù)的定義與使用sorted()函數(shù)用于對(duì)所有可迭代對(duì)象進(jìn)行排序操作,其語(yǔ)法格式如下:Python內(nèi)置的高階函數(shù)sorted()函數(shù)中的參數(shù)key可以使用匿名函數(shù),舉例如下圖所示。Python內(nèi)置的高階函數(shù)上頁(yè)的運(yùn)行結(jié)果如圖4-27所示。在上頁(yè)中,sorted()函數(shù)內(nèi)的參數(shù)key使用匿名函數(shù)來(lái)指定,意思是按照分?jǐn)?shù)進(jìn)行排序,參數(shù)reverse設(shè)置為T(mén)rue,意思是排序規(guī)則是降序。Python內(nèi)置的高階函數(shù)map()函數(shù)的定義與使用map()函數(shù)主要用于根據(jù)提供的函數(shù)對(duì)指定序列做映射,其語(yǔ)法格式如下:其中function是用于指定序列映射規(guī)則的函數(shù),iterable用來(lái)指定序列,可以是多個(gè)。簡(jiǎn)單理解map()函數(shù)就是對(duì)傳入的序列數(shù)據(jù)進(jìn)行逐項(xiàng)處理,針對(duì)序列的每一項(xiàng)數(shù)據(jù)都使用傳入的函數(shù)進(jìn)行操作,最后生成一個(gè)迭代對(duì)象。Python內(nèi)置的高階函數(shù)map()函數(shù)中的function可以使用匿名函數(shù),舉例如下圖所示。Python內(nèi)置的高階函數(shù)上頁(yè)的運(yùn)行結(jié)果如下圖所示。filter()函數(shù)的定義與使用filter()函數(shù)用于過(guò)濾序列,即過(guò)濾出符合條件的元素,返回一個(gè)迭代器對(duì)象,其語(yǔ)法格式如下:Python內(nèi)置的高階函數(shù)其中function用于指定判斷函數(shù),iterable用于指定序列,function可以使用匿名函數(shù),舉例如【代碼4-14】所示。案例【案例描述】某公司銷售員的年底獎(jiǎng)金和該銷售員年度銷售額強(qiáng)相關(guān),計(jì)算方法如下:年銷售額小于等于10萬(wàn)元時(shí),獎(jiǎng)金按照銷售額的2%計(jì)算。年銷售額在10萬(wàn)~20萬(wàn)之間(包含20萬(wàn))時(shí),小于10萬(wàn)元部分按2%提計(jì)獎(jiǎng)金,高于10萬(wàn)元部分,按5%提計(jì)獎(jiǎng)金。年銷售額在20萬(wàn)~50萬(wàn)之間時(shí),高于20萬(wàn)部分按8%提計(jì)獎(jiǎng)金。年銷售額在50萬(wàn)~100萬(wàn)之間時(shí),高于50萬(wàn)部分按10%提計(jì)獎(jiǎng)金。年銷售額大于100萬(wàn)元時(shí),高于100萬(wàn)元部分按照15%提計(jì)獎(jiǎng)金。【案例要求】設(shè)計(jì)一個(gè)函數(shù)用于計(jì)算該公司銷售員的獎(jiǎng)金,當(dāng)用戶輸入銷售金額時(shí),通過(guò)該函數(shù)可正確計(jì)算出獎(jiǎng)金金額并打印出來(lái)。案例案例我們以銷售額100萬(wàn)元時(shí)為例,看一下程序是怎樣運(yùn)行的,如右圖所示。1.用戶輸入100,程序接收到用戶輸入的數(shù)據(jù)。2.調(diào)用計(jì)算獎(jiǎng)金的函數(shù)count_bonus,將用戶輸入的數(shù)據(jù)做為參數(shù)傳入函數(shù)中,并用bonus來(lái)接收返回值。3.進(jìn)入函數(shù)count_bonus中,當(dāng)for循環(huán)中的i取值為0、1、2時(shí),if中的條件判斷表達(dá)式為False,程序走else里面的語(yǔ)句。4.當(dāng)i取值為3時(shí),sales的值為50,此時(shí)if中的條件判斷表達(dá)式為T(mén)rue,程序執(zhí)行if中的代碼,計(jì)算出獎(jiǎng)金值bonus為8.1,然后將sales賦值為0,執(zhí)行break語(yǔ)句退出循環(huán)。5.執(zhí)行語(yǔ)句“bonus+=sales*rates[-1]”,因此時(shí)sales為0,所以bonus仍然為8.1。6.函數(shù)執(zhí)行完畢,將程序的返回值賦值給bonus。7.使用print語(yǔ)句打印出獎(jiǎng)金金額8.1萬(wàn)元。04本章回顧1.定義函數(shù)的關(guān)鍵字是()。A.function B.def C.return D.define2.關(guān)于函數(shù)的定義與調(diào)用,以下描述錯(cuò)誤的是()。A.函數(shù)的定義是通過(guò)參數(shù)和函數(shù)體決定函數(shù)能做什么,但函數(shù)并沒(méi)有被執(zhí)行,如果想要執(zhí)行該函數(shù)就需要調(diào)用函數(shù)B.在函數(shù)定義時(shí),可以指定多個(gè)參數(shù),參數(shù)間使用逗號(hào)“,”分隔C.定義一個(gè)什么都不干的函
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 山西省太原市2024-2025學(xué)年九年級(jí)上學(xué)期期末語(yǔ)文試題(解析版)
- 房產(chǎn)證申請(qǐng)書(shū)范文
- DB13JT-城市橋下空間及保護(hù)區(qū)管理標(biāo)準(zhǔn)
- 扶貧住房申請(qǐng)書(shū)
- 工商核名申請(qǐng)書(shū)
- 2024-2025學(xué)年四川省眉山市仁壽縣高一上學(xué)期1月期末聯(lián)考物理試題(解析版)
- 購(gòu)物申請(qǐng)書(shū)范文
- 2022-2023學(xué)年河南省南陽(yáng)市六校高一上學(xué)期12月月考物理試題(解析版)
- 學(xué)生建檔立卡戶申請(qǐng)書(shū)
- 2024-2025學(xué)年重慶市高二上學(xué)期1月期末英語(yǔ)試題(解析版)
- 勞動(dòng)感悟800字作文30篇
- 尚書(shū)全文及譯文
- 華師大版初中數(shù)學(xué)中考總復(fù)習(xí)全套課件
- 動(dòng)物外科與產(chǎn)科
- 上下樓梯安全我知道安全教育課件
- 市級(jí)臨床重點(diǎn)??粕陥?bào)書(shū)
- 手術(shù)風(fēng)險(xiǎn)及醫(yī)療意外險(xiǎn)告知流程
- 綜合實(shí)踐活動(dòng)六年級(jí)下冊(cè) 飲料與健康課件 (共16張PPT)
- 《醫(yī)院重點(diǎn)專科建設(shè)專項(xiàng)資金管理辦法》
- 最新短視頻運(yùn)營(yíng)績(jī)效考核表KPI(優(yōu)選.)
- 設(shè)備基礎(chǔ)隔振設(shè)計(jì)探討
評(píng)論
0/150
提交評(píng)論