




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
項目五簡易銀行系統(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當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ù)的后面。【參考代碼】在函數(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是局部變量,不影響全局變量。最后,當主程序執(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é)果。【案例】定義一個匿名函數(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對象返回。可進一步通過列表或元組等形式查看該對象中包含的數(shù)據(jù)內(nèi)容。filter函數(shù)的形參func通常返回True或False。【案例】lambda與reducereduce函數(shù)定義格式為:reduce(func,sequence[,initial])【功能描述】其中,initial為可選參數(shù),表示初值,求和默認值為0,求積默認值為
1,也可顯式指定為其他值。【案例1】求和運算,分析以下程序,輸出運行結(jié)果。【分析】reduce函數(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,則提示錯誤;否則,增加賬戶余額,并打印存款和當前余額信息。withdraw函數(shù)實現(xiàn)了取款功能。同樣使用global關(guān)鍵字來修改money。若取款金額小于0或大于賬戶余額,則打印相應(yīng)的錯誤信息;否則,減少賬戶余額,并打印取款和當前余額信息。項目實施check函數(shù)用于查詢當前賬戶余額,并打印出來。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=
溫馨提示
- 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- DB31/T 979-2016臨床組織工程技術(shù)平臺基本要求
- DB31/T 952-2015蠟梅切花生產(chǎn)技術(shù)及質(zhì)量要求
- DB31/T 1328-2021黑色枝小蠹監(jiān)測與防治技術(shù)規(guī)程
- DB31/T 1307-2021粉塵爆炸隔爆系統(tǒng)應(yīng)用指南
- DB31/T 1206-2020疫苗冷鏈物流運作規(guī)范
- DB31/T 1148-2019水量計量差錯的退補水量核算方法
- DB31/T 1040-2017盆栽鳳梨生產(chǎn)技術(shù)規(guī)程
- DB31/ 832-2014鋁熱傳輸復(fù)合箔材單位產(chǎn)品能源消耗限額
- DB31/ 801-2014老年護理院安全衛(wèi)生要求
- DB31/ 508-2020中頻感應(yīng)電爐熔煉鐵水能源消耗限額
- 電氣工程創(chuàng)新項目總結(jié)范文
- 心臟射頻消融術(shù)護理查房
- 雨季三防測試題及答案
- 匯率風(fēng)險管理案例分析-深度研究
- 統(tǒng)編版(2024)七年級下冊《道德與法治》課本“活動課”參考答案
- 2025年呼吸內(nèi)鏡考試試題及答案
- 林海雪原考試題和答案
- T-ZSA 232-2024 特種巡邏機器人通.用技術(shù)要求
- 工貿(mào)企業(yè)安全生產(chǎn)臺賬資料
- 2025年浙江名校協(xié)作體高三語文2月聯(lián)考作文題目解析及范文:“向往”的“苦處”與“樂處”
- epc亮化合同范本
評論
0/150
提交評論