版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第6章函數(shù)《Python程序開(kāi)發(fā)案例教程(第2版))》學(xué)習(xí)目標(biāo)/Target掌握函數(shù)的定義和調(diào)用,能夠在程序中定義和調(diào)用函數(shù)掌握參數(shù)的傳遞方式,能夠通過(guò)多種方式向函數(shù)內(nèi)部傳遞數(shù)據(jù)熟悉變量作用域,能夠區(qū)分程序中的全局變量和局部變量學(xué)習(xí)目標(biāo)/Target掌握遞歸函數(shù)的使用,能夠運(yùn)用遞歸函數(shù)解決階乘的問(wèn)題掌握匿名函數(shù)的使用,能夠運(yùn)用匿名函數(shù)簡(jiǎn)化簡(jiǎn)單函數(shù)的定義熟悉常用的內(nèi)置函數(shù),能夠使用chr()函數(shù)返回單個(gè)Unicode字符的碼值章節(jié)概述/Summary在開(kāi)發(fā)程序時(shí)有些功能的邏輯十分相似或完全相同,只要使用這個(gè)功能,就需要在相應(yīng)的位置執(zhí)行相似或者重復(fù)的代碼塊。如果一個(gè)代碼塊存在問(wèn)題,那么所有的代碼塊都要同步修改。這不僅會(huì)讓程序存在大量重復(fù)的代碼塊,而且增加了代碼的維護(hù)成本。函數(shù)的出現(xiàn)便解決了這些問(wèn)題,它會(huì)將相似或重復(fù)的代碼封裝成特定功能的代碼塊,實(shí)現(xiàn)代碼模塊化,使整個(gè)程序的結(jié)構(gòu)變得清晰。本章將對(duì)函數(shù)相關(guān)的知識(shí)進(jìn)行詳細(xì)講解。目錄/Contents01函數(shù)的定義與調(diào)用02函數(shù)的參數(shù)傳遞03變量作用域04函數(shù)的特殊形式05常用的內(nèi)置函數(shù)函數(shù)的定義與調(diào)用6.1
先定一個(gè)小目標(biāo)!掌握函數(shù)的定義,能夠在程序中定義函數(shù)6.1.1函數(shù)的定義與調(diào)用函數(shù)的定義6.1.1函數(shù)的定義與調(diào)用在Python中,函數(shù)是一種組織好的、可重復(fù)使用的代碼段,用于實(shí)現(xiàn)特定的功能或操作。函數(shù)可以被視為有名字的一段代碼,這段代碼是提前定義好以實(shí)現(xiàn)特定的功能,當(dāng)程序的某個(gè)地方需要使用這個(gè)功能時(shí),就可以通過(guò)名字調(diào)用這個(gè)函數(shù)。函數(shù)的定義6.1.1函數(shù)的定義與調(diào)用函數(shù)主要分為兩種,分別是內(nèi)置函數(shù)和自定義函數(shù),內(nèi)置函數(shù)指的是Python標(biāo)準(zhǔn)庫(kù)提供的函數(shù),比如print()、input()等,這些函數(shù)已經(jīng)預(yù)先定義好,能夠直接在程序中使用;自定義函數(shù)指的是用戶(hù)自己編寫(xiě)的函數(shù)。無(wú)論是哪種函數(shù),它們的定義和調(diào)用方式都是一樣的。函數(shù)的定義Python中使用關(guān)鍵字def定義函數(shù),其語(yǔ)法格式如下:def函數(shù)名([參數(shù)列表]):["""文檔字符串"""]
函數(shù)體[return語(yǔ)句]標(biāo)記函數(shù)的開(kāi)始接收傳入函數(shù)中的數(shù)據(jù)函數(shù)的唯一標(biāo)識(shí)說(shuō)明函數(shù)功能的字符串函數(shù)功能的具體代碼標(biāo)志函數(shù)的結(jié)束defshow_weather():print("*"*13)print("日期:4月8日")print("溫度:14~28℃")print("空氣狀況:良")print("*"*13)定義函數(shù)的語(yǔ)法格式定義函數(shù)的示例6.1.1函數(shù)的定義與調(diào)用為了增加函數(shù)的靈活性,使上述函數(shù)能夠顯示更多日期的天氣狀況,這里可以為函數(shù)加入?yún)?shù)列表,通過(guò)改變參數(shù)的值來(lái)適應(yīng)不同的需求。將函數(shù)名稱(chēng)修改為modify_weather,在函數(shù)名稱(chēng)的括號(hào)里面加入?yún)?shù)列表,具體代碼如下。defmodify_weather(today,temp,air_quality):print("*"*13)print(f"日期:{today}")print(f"溫度:{temp}")print(f"空氣狀況:{air_quality}")print("*"*13)6.1.1函數(shù)的定義與調(diào)用函數(shù)的定義
先定一個(gè)小目標(biāo)!6.1.2函數(shù)的調(diào)用掌握函數(shù)的調(diào)用,能夠在程序中調(diào)用函數(shù)函數(shù)的調(diào)用6.1.2函數(shù)的調(diào)用函數(shù)在定義完成后不會(huì)立刻執(zhí)行,直到被程序調(diào)用時(shí)才會(huì)執(zhí)行。函數(shù)名([參數(shù)列表])語(yǔ)法格式modify_weather('7月5日','23~40℃','優(yōu)')
先定一個(gè)小目標(biāo)!根據(jù)任務(wù)分析實(shí)現(xiàn)實(shí)例1:計(jì)算器6.1.3實(shí)例1:計(jì)算器在手機(jī)、電腦和平板電腦等設(shè)備中加入了計(jì)算器工具,計(jì)算器是一種執(zhí)行數(shù)學(xué)運(yùn)算的工具,可以大大簡(jiǎn)化數(shù)字計(jì)算的過(guò)程,它不僅能執(zhí)行基本的算術(shù)運(yùn)算,比如加減乘除,還能處理更復(fù)雜的計(jì)算,如指數(shù)、對(duì)數(shù)、三角函數(shù)等。本實(shí)例要求編寫(xiě)計(jì)算器程序,實(shí)現(xiàn)計(jì)算器的四則運(yùn)算功能。6.1.3實(shí)例1:計(jì)算器定義用于實(shí)現(xiàn)計(jì)算器功能的函數(shù),并接收兩個(gè)參數(shù)。在定義的函數(shù)內(nèi)接收要使用的運(yùn)算符號(hào)。判斷用戶(hù)輸入的運(yùn)算符號(hào),并執(zhí)行相應(yīng)的計(jì)算功能。定義兩個(gè)變量接收要計(jì)算的數(shù)字。調(diào)用定義的函數(shù),并將要計(jì)算的數(shù)字作為參數(shù)傳入。實(shí)現(xiàn)思路6.1.3實(shí)例1:計(jì)算器在Chapter06項(xiàng)目中創(chuàng)建01_calc.py文件。在01_calc.py中編寫(xiě)代碼。運(yùn)行01_calc.py文件。實(shí)現(xiàn)步驟6.1.3實(shí)例1:計(jì)算器函數(shù)的參數(shù)傳遞6.2
先定一個(gè)小目標(biāo)!掌握參數(shù)的傳遞方式,能夠通過(guò)位置參數(shù)傳遞的方式向函數(shù)內(nèi)部傳遞數(shù)據(jù)6.2.1位置參數(shù)傳遞位置參數(shù)傳遞調(diào)用函數(shù)時(shí),解釋器默認(rèn)會(huì)將函數(shù)的實(shí)參按照位置順序依次傳遞給形式參數(shù),即將第1個(gè)實(shí)參傳遞給第1個(gè)形參,將第2個(gè)實(shí)參傳遞給第2個(gè)形參,以此類(lèi)推。需要注意的是,實(shí)參必須和定義函數(shù)時(shí)形參的數(shù)量和位置保持一致,否則解釋器運(yùn)行會(huì)出現(xiàn)異常信息,或者錯(cuò)誤匹配實(shí)參與形參。6.2.1位置參數(shù)傳遞定義一個(gè)計(jì)算兩數(shù)之商的函數(shù)division(),具體代碼如下。defdivision(num_one,num_two):print(num_one)print(num_two)print(num_one/num_two)division(6,2)#6被傳遞給形參num_one,2被傳遞給形參num_two
6.2.1位置參數(shù)傳遞位置參數(shù)傳遞
先定一個(gè)小目標(biāo)!掌握參數(shù)的傳遞方式,能夠通過(guò)關(guān)鍵字參數(shù)傳遞的方式向函數(shù)內(nèi)部傳遞數(shù)據(jù)6.2.2關(guān)鍵字參數(shù)傳遞關(guān)鍵字參數(shù)傳遞如果函數(shù)定義中有多個(gè)參數(shù),記住每個(gè)參數(shù)的位置及其含義并不是一件容易的事,此時(shí)可以采用關(guān)鍵字參數(shù)進(jìn)行傳遞。關(guān)鍵字參數(shù)傳遞指的是函數(shù)調(diào)用時(shí)通過(guò)“形參=實(shí)參”的格式將實(shí)參與形參相關(guān)聯(lián),根據(jù)形參的名稱(chēng)進(jìn)行參數(shù)傳遞。6.2.2關(guān)鍵字參數(shù)傳遞假設(shè)當(dāng)前有一個(gè)函數(shù)info(),該函數(shù)包含3個(gè)形參,具體代碼如下。definfo(name,age,address):print(f'姓名:{name}')print(f'年齡:{age}')print(f'地址:{address}')#"小婷"被傳遞給形參name,23被傳遞給形參age,"山東"被傳遞給形參addressinfo(name="小婷",age=23,address="山東")6.2.2關(guān)鍵字參數(shù)傳遞關(guān)鍵字參數(shù)傳遞
先定一個(gè)小目標(biāo)!掌握參數(shù)的傳遞方式,能夠通過(guò)默認(rèn)參數(shù)傳遞的方式向函數(shù)內(nèi)部傳遞數(shù)據(jù)6.2.3默認(rèn)參數(shù)傳遞默認(rèn)參數(shù)傳遞定義函數(shù)時(shí)可以指定形參的默認(rèn)值,調(diào)用函數(shù)時(shí)可以選擇是否給帶有默認(rèn)值的形參傳值。若沒(méi)有給帶有默認(rèn)值的形參傳值,直接使用參數(shù)的默認(rèn)值;若給帶有默認(rèn)值的形參傳值,則使用實(shí)參的值覆蓋默認(rèn)值。6.2.3默認(rèn)參數(shù)傳遞定義一個(gè)有參數(shù)ip與port的函數(shù)connect(),為形參port指定默認(rèn)值3306,示例代碼如下。defconnect(ip,port=3306):print(f"連接地址為:{ip}")print(f"連接端口號(hào)為:{port}")print("連接成功")connect('127.0.0.1') #第一種,形參port使用默認(rèn)值3306connect(ip='127.0.0.1',port=8080) #第二種,形參使用傳入值80806.2.3默認(rèn)參數(shù)傳遞默認(rèn)參數(shù)傳遞
先定一個(gè)小目標(biāo)!掌握參數(shù)的傳遞方式,能夠通過(guò)參數(shù)打包傳遞的方式向函數(shù)內(nèi)部傳遞數(shù)據(jù)6.2.4參數(shù)打包傳遞參數(shù)打包傳遞參數(shù)打包傳遞是指將多個(gè)實(shí)參打包成一個(gè)元組或字典,然后將元組或字典傳遞給函數(shù)的形參,這樣做可以一次性傳遞多個(gè)實(shí)參,而不需要再逐個(gè)傳遞。如果想打包傳遞參數(shù),則可以在定義函數(shù)時(shí)添加以符號(hào)“*”或“**”標(biāo)識(shí)的形參*args和**kwargs,如果形參的前面加上符號(hào)“*”,那么它可以接收以元組形式打包的多個(gè)實(shí)參;如果形參的前面加上符號(hào)“**”,那么它可以接收以字典形式打包的多個(gè)實(shí)參。6.2.4參數(shù)打包傳遞6.2.4參數(shù)打包傳遞參數(shù)打包傳遞參數(shù)*args參數(shù)**kwargsdeftest(*args):print(args)#多個(gè)實(shí)參會(huì)在打包后被傳遞給形參test(11,22,33,44,55)定義一個(gè)形參為*args的函數(shù)。deftest(**kwargs):print(kwargs)#調(diào)用test()函數(shù)時(shí)傳入多個(gè)關(guān)聯(lián)了形參的實(shí)參test(a=11,b=22,c=33,d=44,e=55)定義一個(gè)形參為**kwargs的函數(shù)。參數(shù)打包傳遞值得一提的是,args和kwargs只是在函數(shù)定義中約定俗稱(chēng)的名稱(chēng),可以使用其他名稱(chēng),但符號(hào)“*”或“**”是必需的。另外,若函數(shù)定義的參數(shù)列表中同時(shí)包含帶默認(rèn)值的形參、帶符號(hào)“*”或“**”的形參與其他形參,則需要將帶符號(hào)“*”或“**”的形參放在末尾。6.2.4參數(shù)打包傳遞
先定一個(gè)小目標(biāo)!掌握參數(shù)的傳遞方式,能夠通過(guò)參數(shù)解包傳遞的方式向函數(shù)內(nèi)部傳遞數(shù)據(jù)6.2.5參數(shù)解包傳遞參數(shù)解包傳遞如果函數(shù)在調(diào)用時(shí)接收的實(shí)參是元組,那么可以使用“*”將元組拆分成多個(gè)值,并將每個(gè)值按照位置參數(shù)傳遞的方式賦值給形參;如果函數(shù)在調(diào)用時(shí)接收的實(shí)參是字典,那么可以使用“**”將字典拆分成多個(gè)鍵值對(duì),并將每個(gè)值按照關(guān)鍵字參數(shù)傳遞的方式賦值給與鍵名稱(chēng)對(duì)應(yīng)的形參。6.2.5參數(shù)解包傳遞使用“*”對(duì)該元組執(zhí)行解包使用“**”對(duì)該字典執(zhí)行解包deftest(a,b,c,d,e):print(a,b,c,d,e)nums=(11,22,33,44,55)#使用“*”對(duì)該元組執(zhí)行解包操作test(*nums)定義一個(gè)形參為*args的函數(shù)。deftest(a,b,c,d,e):print(a,b,c,d,e)nums={"a":11,"b":22,"c":33,"d":44,"e":55}#使用“**”對(duì)該字典執(zhí)行解包test(**nums)定義一個(gè)形參為**kwargs的函數(shù)。6.2.5參數(shù)解包傳遞參數(shù)解包傳遞
先定一個(gè)小目標(biāo)!根據(jù)任務(wù)分析實(shí)現(xiàn)實(shí)例2:商品折扣計(jì)算6.2.6實(shí)例2:商品折扣計(jì)算為了提高店鋪的成交量,某店鋪在經(jīng)營(yíng)五周年期間推出了優(yōu)惠活動(dòng),具體活動(dòng)要求如下:(1)購(gòu)買(mǎi)滿(mǎn)300元打九折。(2)用戶(hù)辦理會(huì)員卡可繼續(xù)享受額外折扣九五折。(3)用戶(hù)掃描二維碼加入店鋪粉絲群可繼續(xù)享受任意一種折扣方式:①百分比折扣(percentage),具體折扣值為九八折;②固定金額折扣(amount),具體折扣值為10元。假設(shè)小明在這家店鋪購(gòu)買(mǎi)了329元的商品,他同時(shí)辦理了會(huì)員卡并加入了粉絲群,選擇了額外的百分比折扣。本實(shí)例要求編寫(xiě)程序,使用函數(shù)計(jì)算商品的折扣價(jià)格,并根據(jù)店員輸入的商品價(jià)格、折扣率、額外折扣率、額外折扣類(lèi)型和值計(jì)算折扣后的價(jià)格。6.2.6實(shí)例2:商品折扣計(jì)算使用列表保存價(jià)格信息。定義空列表用于保存用戶(hù)選購(gòu)商品的價(jià)格。接收輸入的最大價(jià)格和最小價(jià)格。從價(jià)格列表中獲取每個(gè)商品價(jià)格。判斷商品價(jià)格區(qū)間。將商品價(jià)格進(jìn)行排序。實(shí)現(xiàn)思路6.2.6實(shí)例2:商品折扣計(jì)算在Chapter06項(xiàng)目中創(chuàng)建06_discount.py文件。在06_discount.py中編寫(xiě)代碼。運(yùn)行06_discount.py文件。實(shí)現(xiàn)步驟6.2.6實(shí)例2:商品折扣計(jì)算變量作用域6.3
先定一個(gè)小目標(biāo)!熟悉變量作用域,能夠區(qū)分程序中的局部變量6.3.1局部變量局部變量局部變量是在函數(shù)內(nèi)定義的變量,只在定義它的函數(shù)內(nèi)生效。例如,在函數(shù)use_var()中定義一個(gè)局部變量name,分別在函數(shù)內(nèi)部與函數(shù)外部訪(fǎng)問(wèn)局部變量name,示例代碼如下。defuse_var():name='欲窮千里目,更上一層樓'#局部變量print(name)#在函數(shù)內(nèi)部訪(fǎng)問(wèn)局部變量use_var()print(name)#在函數(shù)外部訪(fǎng)問(wèn)局部變量6.3.1局部變量程序在調(diào)用函數(shù)use_var()時(shí),成功輸出了局部變量name的值;程序在函數(shù)use_var()后訪(fǎng)問(wèn)局部變量name,出現(xiàn)錯(cuò)誤信息,說(shuō)明局部變量不能在函數(shù)外部使用。由此可知,局部變量只在函數(shù)內(nèi)部有效。
先定一個(gè)小目標(biāo)!熟悉變量作用域,能夠區(qū)分程序中的局部變量6.3.2全局變量全局變量全局變量是在函數(shù)外部定義的變量,它在程序中任何位置都可以被訪(fǎng)問(wèn)。例如,定義一個(gè)全局變量count,分別在函數(shù)use_var()內(nèi)部與函數(shù)use_var()外部訪(fǎng)問(wèn)全局變量count,示例代碼如下。count=10#全局變量defuse_var():print(count)#在函數(shù)內(nèi)部訪(fǎng)問(wèn)全局變量use_var()print(count)#在函數(shù)外部訪(fǎng)問(wèn)局部變量6.3.2全局變量全局變量函數(shù)中只能訪(fǎng)問(wèn)全局變量,但不能修改全局變量。若要在函數(shù)內(nèi)部修改全局變量的值,需先在函數(shù)內(nèi)使用關(guān)鍵字global進(jìn)行聲明,具體格式為“global全局變量名”。在use_var()函數(shù)中先使用關(guān)鍵字global聲明全局變量,再修改全局變量的值,示例代碼如下。count=10defuse_var():globalcount#聲明全局變量count+=10#修改全局變量print(count)use_var()6.3.2全局變量
先定一個(gè)小目標(biāo)!根據(jù)任務(wù)分析實(shí)現(xiàn)實(shí)例3:學(xué)生信息管理系統(tǒng)6.3.3實(shí)例3:學(xué)生信息管理系統(tǒng)學(xué)生信息管理系統(tǒng)是用于管理學(xué)生信息的管理軟件,它具備學(xué)生信息的查找、修改、增加和刪除功能,利用該系統(tǒng)可實(shí)現(xiàn)學(xué)生信息管理的電子化,提高信息管理效率。學(xué)生信息管理系統(tǒng)的功能菜單如圖所示。6.3.3實(shí)例3:學(xué)生信息管理系統(tǒng)學(xué)生信息管理系統(tǒng)包含5個(gè)功能,每個(gè)功能都對(duì)應(yīng)一個(gè)序號(hào),用戶(hù)可以選擇序號(hào)執(zhí)行相應(yīng)的操作,具體如下。(1)添加學(xué)生信息:用戶(hù)按照系統(tǒng)提示依次輸入學(xué)生的姓名、性別和手機(jī)號(hào),輸入完成后會(huì)收到系統(tǒng)提示“添加成功!”的信息。(2)刪除學(xué)生信息:用戶(hù)按照系統(tǒng)提示輸入學(xué)生對(duì)應(yīng)序號(hào),輸入完成后會(huì)收到系統(tǒng)提示“刪除成功!”的信息。(3)修改學(xué)生信息:用戶(hù)按照系統(tǒng)提示先輸入待修改學(xué)生的序號(hào),再依次輸入修改后的學(xué)生姓名、性別和手機(jī)號(hào)。若學(xué)生信息管理系統(tǒng)中還沒(méi)有添加過(guò)學(xué)生信息,提示“學(xué)生信息表為空”。(4)顯示所有學(xué)生信息:系統(tǒng)按照固定格式輸出所有學(xué)生信息。(5)退出系統(tǒng):退出學(xué)生信息管理系統(tǒng)。本實(shí)例要求編寫(xiě)程序,運(yùn)用函數(shù)的知識(shí)實(shí)現(xiàn)具有上述功能的學(xué)生信息管理系統(tǒng)。6.3.3實(shí)例3:學(xué)生信息管理系統(tǒng)使用列表保存價(jià)格信息。定義空列表用于保存用戶(hù)選購(gòu)商品的價(jià)格。接收輸入的最大價(jià)格和最小價(jià)格。從價(jià)格列表中獲取每個(gè)商品價(jià)格。判斷商品價(jià)格區(qū)間。將商品價(jià)格進(jìn)行排序。實(shí)現(xiàn)思路6.3.3實(shí)例3:學(xué)生信息管理系統(tǒng)在Chapter06項(xiàng)目中創(chuàng)建03_stu_manage.py文件。在03_stu_manage.py中編寫(xiě)代碼。運(yùn)行03_stu_manage.py文件。實(shí)現(xiàn)步驟6.3.3實(shí)例3:學(xué)生信息管理系統(tǒng)函數(shù)的特殊形式6.4
先定一個(gè)小目標(biāo)!掌握匿名函數(shù)的使用,能夠運(yùn)用匿名函數(shù)簡(jiǎn)化簡(jiǎn)單函數(shù)的定義6.4.1匿名函數(shù)匿名函數(shù)6.4.1匿名函數(shù)匿名函數(shù)顧名思義指的是沒(méi)有名稱(chēng)的函數(shù),它的函數(shù)體只能是單個(gè)表達(dá)式。Python中使用關(guān)鍵字lambda定義匿名函數(shù)。lambda[arg1[,arg2,.....argn]]:expression語(yǔ)法格式[arg1[,arg2,.....argn]]:表示匿名函數(shù)的參數(shù)。expression:是一個(gè)表達(dá)式。匿名函數(shù)6.4.1匿名函數(shù)VS普通函數(shù)普通函數(shù)需要使用函數(shù)名進(jìn)行標(biāo)識(shí)普通函數(shù)的函數(shù)體中可以有多條語(yǔ)句普通函數(shù)可以實(shí)現(xiàn)比較復(fù)雜的功能普通函數(shù)可以被其它程序使用匿名函數(shù)不需要使用函數(shù)名進(jìn)行標(biāo)識(shí)匿名函數(shù)的函數(shù)體只能是一個(gè)表達(dá)式匿名函數(shù)只能實(shí)現(xiàn)比較單一的功能匿名函數(shù)不能被其它程序使用匿名函數(shù)area=lambdaa,h:(a*h)*0.5print(area(3,4))為了方便使用匿名函數(shù),應(yīng)使用變量記錄這個(gè)函數(shù),此時(shí)變量名可以作為匿名函數(shù)的臨時(shí)名稱(chēng)來(lái)調(diào)用函數(shù),示例代碼如下。匿名函數(shù)6.4.1匿名函數(shù)
先定一個(gè)小目標(biāo)!根據(jù)任務(wù)分析實(shí)現(xiàn)實(shí)例4:商品銷(xiāo)量排序6.4.2實(shí)例4:商品銷(xiāo)量排序某電商平臺(tái)統(tǒng)計(jì)了近一周內(nèi)華為手機(jī)的銷(xiāo)量情況,具體如表所示。6.4.2實(shí)例4:商品銷(xiāo)量排序名稱(chēng)價(jià)格/元銷(xiāo)量華為P604887.0210華為Mate40EPro4699.090華為nova10青春版1698.0102華為P50Pro3897.088華為暢享999.0152本實(shí)例要求編寫(xiě)程序,使用字典保存每部手機(jī)的基本信息,使用列表保存所有手機(jī)的基本信息,使用匿名函數(shù)定義排序規(guī)則,實(shí)現(xiàn)按銷(xiāo)量對(duì)所有手機(jī)信息進(jìn)行降序排序的功能。使用列表保存價(jià)格信息。定義空列表用于保存用戶(hù)選購(gòu)商品的價(jià)格。接收輸入的最大價(jià)格和最小價(jià)格。從價(jià)格列表中獲取每個(gè)商品價(jià)格。判斷商品價(jià)格區(qū)間。將商品價(jià)格進(jìn)行排序。實(shí)現(xiàn)思路6.4.2實(shí)例4:商品銷(xiāo)量排序在Chapter06項(xiàng)目中創(chuàng)建04_sales_ranking.py文件。在04_sales_ranking.py中編寫(xiě)代碼。運(yùn)行04_sales_ranking.py文件。實(shí)現(xiàn)步驟6.4.2實(shí)例4:商品銷(xiāo)量排序
先定一個(gè)小目標(biāo)!掌握匿名函數(shù)的使用,能夠運(yùn)用匿名函數(shù)簡(jiǎn)化簡(jiǎn)單函數(shù)的定義6.4.3遞歸函數(shù)遞歸函數(shù)6.4.3遞歸函數(shù)遞歸是一個(gè)函數(shù)過(guò)程在定義或說(shuō)明中直接或間接調(diào)用自身的一種方法,它通常把一個(gè)大型的復(fù)雜問(wèn)題層層轉(zhuǎn)化為一個(gè)與原問(wèn)題相似,但規(guī)模較小的問(wèn)題進(jìn)行求解。如果一個(gè)函數(shù)中調(diào)用了函數(shù)本身,這個(gè)函數(shù)就是遞歸函數(shù)。遞歸函數(shù)6.4.3遞歸函數(shù)一、遞歸公式遞歸公式是遞歸求解過(guò)程中的歸納項(xiàng),用于處理原問(wèn)題以及與原問(wèn)題規(guī)律相同的子問(wèn)題。二、邊界條件邊界條件即終止條件,用于終止遞歸。遞歸函數(shù)6.4.3遞歸函數(shù)deffactorial(num):ifnum==1:return1else:returnnum*factorial(num-1)求階乘的遞歸函數(shù)階乘遞歸過(guò)程
先定一個(gè)小目標(biāo)!根據(jù)任務(wù)分析實(shí)現(xiàn)實(shí)例5:失之毫厘,謬以千里6.4.5實(shí)例5:失之毫厘,謬以千里6.4.5實(shí)例5:失之毫厘,謬以千里下面以計(jì)算1.0和1.1的100次方為例,帶領(lǐng)大家親身感受到小錯(cuò)誤的嚴(yán)重性。
我們無(wú)論是在生活還是在工作中,都應(yīng)該對(duì)早期發(fā)現(xiàn)的小錯(cuò)誤引起重視,絕不能放任不管,我們只有保持縝密、嚴(yán)謹(jǐn)?shù)膽B(tài)度,不斷地迭代,才能收獲預(yù)期的結(jié)果。本實(shí)例要求編寫(xiě)程序,通過(guò)計(jì)算1.0和1.1的100次方的差來(lái)驗(yàn)證“失之毫厘,謬以千里”的道理。使用列表保存價(jià)格信息。定義空列表用于保存用戶(hù)選購(gòu)商品的價(jià)格。接收輸入的最大價(jià)格和最小價(jià)格。從價(jià)格列表中獲取每個(gè)商品價(jià)格。判斷商品價(jià)格區(qū)間。將商品價(jià)格進(jìn)行排序。實(shí)現(xiàn)思路6.4.5實(shí)例5:失之毫厘,謬以千里在Chapter06項(xiàng)目中創(chuàng)建05_recursion.py文件。在05_recursion.py中編寫(xiě)代碼。運(yùn)行05_recursion.py文件。實(shí)現(xiàn)步驟6.4.5實(shí)例5:失之毫厘,謬以千里常用的內(nèi)置函數(shù)6.5
先定一個(gè)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 藝術(shù)品展覽租賃承包合同
- 2024年版:建筑工程施工分包協(xié)議書(shū)模板
- 醫(yī)療衛(wèi)生經(jīng)費(fèi)管理規(guī)范
- 品牌故事講述櫥窗施工合同
- 2024年度電商企業(yè)文化建設(shè)與推廣合同6篇
- 珠寶加工工廠房屋租賃合同
- 教育培訓(xùn)機(jī)構(gòu)土地租賃協(xié)議
- 設(shè)備典當(dāng)合同樣本
- 醫(yī)療服務(wù)科醫(yī)生勞動(dòng)合同
- 食品安全監(jiān)管投標(biāo)管理辦法
- 沈陽(yáng)職業(yè)技術(shù)學(xué)院?jiǎn)握小堵殬I(yè)技能測(cè)試》參考試題庫(kù)(含答案)
- 高等數(shù)學(xué)課件第一章函數(shù)與極限
- 黃石市黃石港區(qū)2023-2024學(xué)年八年級(jí)上學(xué)期期末數(shù)學(xué)測(cè)評(píng)卷(含答案)
- 朗格罕斯細(xì)胞組織細(xì)胞增生癥課件
- 納米技術(shù)在光電領(lǐng)域的應(yīng)用
- 人工智能與區(qū)塊鏈的融合之路
- 船舶與海洋工程導(dǎo)論(船舶設(shè)計(jì)與建造)期末單元測(cè)試與答案
- 宮腔鏡可行性報(bào)告
- 預(yù)付式消費(fèi)監(jiān)管服務(wù)平臺(tái)建設(shè)方案
- 醫(yī)院放射診療輻射防護(hù)培訓(xùn)手冊(cè)
- 2024年應(yīng)急管理部宣傳教育中心招考聘用筆試歷年難、易錯(cuò)考點(diǎn)試題后附答案帶解析
評(píng)論
0/150
提交評(píng)論