版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
課程單元教學設計課程名稱:程序設計基礎課程性質:?必修課□選修課學時學分:3學分56學時開課學期:2023學年第一學期教師姓名:陳建勇教師職稱:副教授授課班級:人工智能23-1和23-2所屬專業(yè)(教研室):人工智能技術應用開課部門:信息技術學院溫州科技職業(yè)學院教學督導處(診改辦)制二○二三年九月
《程序設計基礎》課程單元教學設計本單元標題:函數(shù)自定義和高級用法序號8授課班級人工智能23-2上課時間15周12月4日第1-2節(jié)15周12月6日第3-4節(jié)上課地點篤1-609篤1-220人工智能23-115周12月5日第5-8節(jié)篤1-412學情分析在上復雜數(shù)據(jù)類型-字典這一節(jié)內容時,學生實操過一個詞頻統(tǒng)計的案例,針對英文和中文的詞頻統(tǒng)計,為了避免代碼冗余,我們當時簡要的介紹了如何封裝一段代碼,本質上就是函數(shù)的自定義,通過封裝,學生也發(fā)現(xiàn)這樣的寫代碼效率更高.本次課,我們將系統(tǒng)的介紹有關于函數(shù)的自定義以及函數(shù)高級用法,明白函數(shù)的使用價值.教學目標能力(技能)目標知識目標情感與價值目標學會函數(shù)的自定義.掌握函數(shù)的高級用法.掌握函數(shù)自定義的語法結構.理解實參和形參.理解值傳遞和引用傳遞.通過函數(shù)自定義理解封裝的好處.2.宣傳工匠精神。重點難點及解決方法教學重點教學難點解決方法掌握函數(shù)自定義的語法結構.掌握函數(shù)中傳遞參數(shù)的三種類型.1.理解值傳遞和引用傳遞的區(qū)別.2.學會利用函數(shù)自定義解決實際問題.1.通過多媒體展示、動畫演示及播放程序設計方面的視頻.2.結合教師的講解,來突破本次課程的重點和難點。教學資源及教學用具1.參考書:崔曉軍,肖紅宇,python程序設計基礎,電子工業(yè)出版社,2023年1第1版。2.網(wǎng)絡教學資源:傳智播客網(wǎng)站:/3.教學用具:多媒體、筆記本(或臺式機)電腦課后教學反思
教學過程設計步驟與時間主要任務教師活動學生活動設計意圖與教學方法步驟一(2分鐘)課堂組織考勤課堂準備嚴肅課堂紀律步驟二(8分鐘)復習對學生匯報進行點評課前三分鐘匯報提升學生的表達能力步驟三(30分鐘)函數(shù)自定義和調用講解+實操演示邊學邊練課程思政;步驟四(20分鐘)參數(shù)值傳遞和引用傳遞講解+實操演示邊學邊練案例任務驅動步驟五(20分鐘)學生實踐練習講解+實操演示邊學邊練案例任務驅動步驟六(10分鐘)傳遞參數(shù)的三種類型任務說明邊學邊練情境教學步驟七(30分鐘)函數(shù)模塊的調用講解+實操演示邊學邊練案例任務驅動步驟八(30分鐘)結合循環(huán)模擬銀行存取款操作講解+實操演示邊學邊練案例任務驅動步驟九(10分鐘)小結并作業(yè)布置總結;作業(yè)布置課堂小結;學生記錄作業(yè)梳理知識點脈絡;作業(yè)練習鞏固授課詳細內容[步驟一]1、課堂組織利用超星學習通平臺,進行考勤結果通報,做好事假遲到同學的記錄。開啟KK錄像機,進行課程錄屏,作為課程教學資源,上傳超新學習通上,供學生課后回看再學習。[步驟二]2、復習回顧學生活動:利用課前三分鐘匯報,了解學生對上次課的集合和嵌套掌握情況,以便查漏補缺,了解學生對這塊知識的理解和實操情況。[步驟三]函數(shù)自定義和調用設計意圖:從生活中的案例出發(fā),讓學生體會有些重復性的工作,其實可以有專門的人或物來進行處理.教師活動:生活中有一些事情具有重復性:為了吃面條需要先制作面條;為了家里干凈,需要經(jīng)常進行衛(wèi)生打掃等,能否將這些重復性的活動由專人或專物來負責,我只需要用它即可,從而產(chǎn)生賣面條的店,打掃衛(wèi)生的機器人。有了他們的幫助,可以帶來很多好處,如節(jié)省時間成本?;氐轿覀兊木幊袒顒又?,有時候我們也會經(jīng)常遇到重復性的代碼操作,這個時間有沒有什么辦法可以提高我們的編程效率呢?就是我們今天要介紹的函數(shù)自定義的相關內容,也叫做封裝。教師講解:python已經(jīng)給我們提供了很多的函數(shù),這些函數(shù)把它稱為系統(tǒng)函數(shù)(內置函數(shù))。這些函數(shù)是官方已經(jīng)給我們自定義好的一些基本常見操作。下面以之前常見的len為例,說明封裝打來的好處。教師演示:前面學習了len()函數(shù),通過它可以直接獲得一個字符串的長度。s="helloworld"length=len(s)print(length)#輸出:11s="helloworld"length=0forcharins:length+=1print(length)#輸出:11如果不用封裝好的len函數(shù),則要想統(tǒng)計helloworld,我們需要寫如下代碼:從而可知,對于同一個問題,一個只需寫一行代碼,一個要寫3行代碼,按照時間就是金錢角度來看,函數(shù)自定義不僅代碼量少,而且能提升產(chǎn)生結果的效率。教師活動:首先來介紹一下函數(shù)自定義的基本語法結構。def函數(shù)名稱(參數(shù)):函數(shù)執(zhí)行語句return[expression]函數(shù)定義的幾個規(guī)則如下:(1)函數(shù)代碼塊以def關鍵詞開頭,后接函數(shù)標識符名稱和圓括號()。(2)任何傳入?yún)?shù)和自定義變量必須放在圓括號中間。(3)函數(shù)內容以冒號起始,并且縮進。(4)return[表達式]結束函數(shù),選擇性地返回一個值給調用方,不帶表達式的return相當于返回None。教師活動:下面舉一個具體例子:求兩個數(shù)的最大值來演示函數(shù)的自定義。defcalMax(a,b):'''函數(shù)的文檔注釋,求兩個數(shù)的最大值'''ifa>b:print("最大值為",a)returnaprint("最大值為",b)returnb學生活動:學生模仿并實操該自定義過程。等學生實操完之后,教師提出問題:我們定義了一個東西的目的是為了去使用它,那如何調用呢?教師活動:調用自定義函數(shù)的語法結構函數(shù)名稱(參數(shù))針對剛才自定義的函數(shù),調用如下defcalMax(a,b):'''函數(shù)的文檔注釋,求兩個數(shù)的最大值'''ifa>b:print("最大值為",a)returnaprint("最大值為",b)returnbnum1=int(input("請輸入一個數(shù)字:"))num2=int(input("請再輸入一個數(shù)字:"))calMax(num1,num2)學生活動:學生模仿實操,掌握函數(shù)的調用。課內學生拓展訓練:模仿剛才的求最大值過程,教師布置任務:寫一個計算長方形的面積自定義函數(shù),函數(shù)名自定。要求學生上臺來演示。defrectangle_area(length,width):returnlength*widthlength=float(input("請輸入長方形的長:"))width=float(input("請輸入長方形的寬:"))area=rectangle_area(length,width)print("長方形的面積為:",area)教師活動:下面對其中的return語句做進一步的介紹。return語句可以從Python函數(shù)中返回一個值,每個函數(shù)都要有一個返回值。如果沒有用return語句返回值,那么將得到一個None對象的結果,而None表示沒有任何值。在函數(shù)調用時可以將調用語句看作一個具體的值,將該值賦給一個變量。同時,return語句表示函數(shù)的結束,雖然在Python語言中可以在return語句后再添加其他執(zhí)行代碼,但return語句后同一范圍內的執(zhí)行代碼都不會被執(zhí)行。【示例4.4】首先定義一個獲取兩個數(shù)中的最大數(shù)的函數(shù),然后通過該函數(shù)分別獲取3個數(shù)、4個數(shù)的最大數(shù)。defcalMax(a,b):
'''獲取兩個數(shù)的最大數(shù)'''
ifa>b:
returna
returnb
print("return后的語句")#在return語句后的代碼都不會執(zhí)行
#調用
num=calMax(23,45)
print("calMax(23,45)結果為:",num)
print("calMax(56,11)結果為:",calMax(56,11))
print("6,9,13的最大值為",calMax(6,calMax(9,13)))
print("6,15,13,12的最大值為",calMax(calMax(6,15),calMax(13,12)))課程思政:宣傳工匠精神。[步驟四]參數(shù)值傳遞和引用傳遞教師活動:傳遞參數(shù)時,Python不允許開發(fā)者指定使用傳值還是傳引用。Python參數(shù)傳遞采用的是“傳對象引用”的方式。實際上,這種方式相當于傳值和傳引用的一種綜合。如果函數(shù)收到的是一個可變對象(如字典或者列表)的引用,就能修改對象的原始值—相當于通過“傳引用”來傳遞對象。如果函數(shù)收到的是一個不可變對象(如數(shù)字、字符串或者元組)的引用,就不能直接修改原始對象—相當于通過“傳值”來傳遞對象。在Python中,strings、tuples和numbers是不可更改的對象,而list、dict等則是可以修改的對象。為了區(qū)別這兩種傳遞方式,通過具體的例子來展示?!臼纠?.2】在一個函數(shù)中分別改變數(shù)字、字符串和元組的值,觀察這三個值是否改變。defchangeValue(num,string,my_tuple):num=5string="Trumple"my_tuple=(3,6)num=8string="Kitty"my_tuple=(4,8)changeValue(num,string,my_tuple)print(num,string,my_tuple)【示例4.3】定義一個修改字典或列表元素的函數(shù),修改后,觀察列表或字典對象是否被改變。學生活動:學生通過2個案例的對比,學會得出以下結論:1)通過對示例4.2進行分析可知,如果函數(shù)收到的是一個不可變對象(如數(shù)字、字符串或者元組)的引用,就不能直接修改原始對象,相當于通過“傳值”來傳遞對象。2)通過對示例4.3進行分析可知,如果函數(shù)收到的是一個可變對象(如字典或者列表)的引用,就能修改對象的原始值,相當于通過“傳引用”來傳遞對象。[步驟五]學生實踐練習。教師布置任務:定義一個接收4個參數(shù)的函數(shù),最后一個參數(shù)為可選的布爾型參數(shù),前3個參數(shù)為帶排序的數(shù)字。在不指定時排序為正序,指定時排序為倒序。教師不做具體實操演示,而是給學生提供解決思路。(1)將前3個參數(shù)放置在一個列表中。(2)判斷最后一個參數(shù)是否為指定,依據(jù)布爾類型來決定是否按正序排列該案例的代碼實現(xiàn)如下所示:defsort_numbers(num1,num2,num3,reverse=False):
#將前三個數(shù)字放入一個列表中
numbers=[num1,num2,num3]
#根據(jù)reverse參數(shù)的值決定排序順序
ifreverse:
numbers.sort(reverse=True)
else:
numbers.sort()
returnnumbers
print(f'排序結果為{sort_numbers(20,30,12)}')[步驟六]傳遞參數(shù)的三種類型。教師講解:下面對自定義函數(shù)時的參數(shù)做重點講解。第1種:傳遞可選參數(shù)。有時候,需要讓實參變成可選的,這樣使用函數(shù)的人就只需要在必要時才提供額外的信息,可以使用默認值來實現(xiàn)讓參數(shù)變成可選的。具體案例如下:【示例4.5】定義一個函數(shù),它接收3個參數(shù),其中第三個參數(shù)為可選參數(shù),默認值為空。deffunc_info(name,age,city=''):ifcity:information='姓名:'+name+',年齡:'+str(age)+',城市:'+cityelse:information='姓名:'+name+',年齡:'+str(age)returninformationinformation=func_info('張三',20)print(information)傳遞3個參數(shù),查看調用結果,代碼如下:information2=func_info('李四',19,'北京')print(information2)【注意】在定義可選參數(shù)函數(shù)的傳遞參數(shù)時,必須要將可選參數(shù)定義在參數(shù)列表的最后,否則會報錯。教師活動:下面講解第2種參數(shù)傳遞的情況:傳遞任意數(shù)量的參數(shù)。在預先不知道需要接收多少個實參時,使用“*args”來指定函數(shù)的形參,這時會讓Python創(chuàng)建一個名為args的空元組,并將接收到的所有值都封裝到這個元組中,即使該元組只有一個元素也如此。之后如果要獲取某個參數(shù)時,可以通過形參的位置來指定,這在編寫main()函數(shù)時非常重要?!臼纠?.6】定義一個函數(shù),通過不同的方式獲取函數(shù)中的參數(shù)deffunc_args(*args):returnargs在上述代碼中,定義了一個接收任意數(shù)量參數(shù)的函數(shù),并將接收到的參數(shù)返回。names=func_args('tom','jerry','cat','dog')print(names)這時可以使用Python遍歷的方式獲取每一個參數(shù)的值,代碼如下foriteminnames:print(item)學生活動:實操教師演示的代碼從中體會參數(shù)傳遞的不同。教師活動:下面講解第3種參數(shù)傳遞的類型:結合位置實參與任意實參。如果要讓函數(shù)接收不同類型的實參,必須在函數(shù)定義中將接收任意數(shù)量實參的形參放在參數(shù)列表中最后的位置,Python會先匹配位置實參和關鍵字實參,再將余下的實參都收集到最后一個形參中【示例4.7】定義一個接收單個實參和多個形參的函數(shù),它實現(xiàn)將實參與形參分別打印的效果。deffunc_arg_args(items_class,*itmes):print('函數(shù)的實參是:',items_class)print('函數(shù)的形參是:',itmes)func_arg_args('animal','cat','dog','rat')[步驟七]函數(shù)模塊的調用教師講解:函數(shù)的優(yōu)點之一是使用它們可將代碼塊與主程序分離,從而降低它們之間的耦合性。通過給函數(shù)指定描述名稱,可讓主程序更容易理解。還有一種更高級的用法是將函數(shù)儲存在被稱為模塊的獨立文件中,再將模塊導入主程序中,import語句允許在當前運行的程序文件中使用模塊中的代碼。通過將函數(shù)存儲在獨立的文件中,可以隱藏程序代碼的細節(jié),將重點放在程序的主要邏輯之上,而且,一旦將函數(shù)存儲在獨立的文件中后,可與其他開發(fā)者共享這些文件而不是整個程序?!臼纠?.9】(1)編譯一個my_func.py的文件,該文件內主要包含兩個函數(shù),分別是get_detail()函數(shù)和say_hello()函數(shù)defget_detail(arg,*args):print('輸入的類別是:',arg)foriteminargs:print('-',item)defsay_hello(name):print('Hello,',name.title())(2)在my_func.py文件所在的目錄內再新建一個use_func.py的函數(shù),然后使用import語句將my_func模塊導入,并嘗試調用my_func中定義的函數(shù),代碼如下:importmy_funcmy_func.get_detail('animals','cat','dog','rat')my_func.say_hello('tom')(3)改寫use_func.py,實現(xiàn)導入特定的函數(shù),代碼如下:frommy_funcimportget_detailget_detail('animals','cat','dog','rat')在上述代碼中,在導入函數(shù)模塊時,使用了“from模塊名import函數(shù)名”的方式導入了模塊中的函數(shù),在使用函數(shù)時就無須指定該函數(shù)的模塊,直接使用函數(shù)名完成函數(shù)的調用(4)可以使用as來對模塊起別名,如使用語句“import模塊名as別名”來實現(xiàn)。例如重寫use_func.py,代碼如下:importmy_funcasff.get_detail('animals','bird','fish','lion')f.say_hello('tom')學生活動:學生在觀看教師演示的時候,需要自己動手去實操方能掌握這種函數(shù)模塊調用方式,這種模式在python數(shù)據(jù)分析中將會經(jīng)常用到。[步驟八]結合循環(huán)模擬銀行存取款操作教師活動:給學生布置存取款的任務需求說明,并展示運行效果。需求說明:模擬銀行賬戶存取款及查看余額功能,分別定義函數(shù)實現(xiàn)銀行賬戶存款、取款及查看余額功能??梢允褂脜?shù)和返回值進行數(shù)據(jù)傳遞。初步設定賬戶的余額為10000元教師在該案例上扮演的角色是引導者,與學生一起探討解決的實現(xiàn)思路。給出其中一種解決思路的方案(1)將賬戶信息(用戶名和余額)保存在一個字典的對象中。(2)定義3個函數(shù),分別用于實現(xiàn)存款、取款及查看余額的功能該案例的實現(xiàn)代碼如下所示'''
4.2節(jié)綜合實訓:銀行存取款
'''
defwithDrawal(account):
money=int(input("請輸入取款的金額:"))
ifaccount['balance']<money:
print("余額不足,取款失敗")
else:
account['balance']=account['balance']-money
print("取款成功
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024試劑生產(chǎn)與銷售代理合作合同范本3篇
- 2024版工地吊車租賃合同2篇
- 二零二四年店鋪租賃合同范本(個體戶專用)
- 二零二四年南京二手房買賣合同附環(huán)保檢測服務協(xié)議3篇
- 2024離婚協(xié)議公證格式范本模板
- 2025年度私人房產(chǎn)投資咨詢與風險評估合同3篇
- 二零二五版農(nóng)業(yè)機械承包與種植服務合同3篇
- 二零二四年定制化軟件功能測試服務合同3篇
- 2025年度煤礦企業(yè)安全生產(chǎn)管理人員勞動合同示范4篇
- 二零二五年度股權代持合同違約責任與賠償規(guī)定3篇
- 搭竹架合同范本
- Neo4j介紹及實現(xiàn)原理
- 銳途管理人員測評試題目的
- 焊接材料-DIN-8555-標準
- 工程索賠真實案例范本
- 重癥醫(yī)學科運用PDCA循環(huán)降低ICU失禁性皮炎發(fā)生率品管圈QCC持續(xù)質量改進成果匯報
- 個人股權證明書
- 醫(yī)院運送工作介紹
- 重癥患者的容量管理
- 學習游戲對中小學生學業(yè)成績的影響
- 小學四年級上冊遞等式計算100題及答案
評論
0/150
提交評論