版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、計(jì)算機(jī)編程導(dǎo)論 課程建設(shè)組 編著2012.91第5章函數(shù)的設(shè)計(jì)和使用5.1 問題的引入5.2 函數(shù)基礎(chǔ)知識(shí)5.2.1 函數(shù)的概念及定義5.2.2 形參和實(shí)參5.2.3 局部變量和全局變量5.2.4 global語(yǔ)句5.2.5 默認(rèn)參數(shù)值5.2.6 關(guān)鍵參數(shù)5.2.7 return語(yǔ)句5.3 函數(shù)基礎(chǔ)知識(shí)的應(yīng)用25.1 問題的引入【問題5-1】計(jì)算三個(gè)圓的面積和周長(zhǎng),這三個(gè)圓的半徑分別為2,3,4。分析:按照已學(xué)過的知識(shí),解決該問題的程序如下: a=2 area_a=3.14*a*a perimeter_a=3.14*2*a print(半徑為2的圓的面積為:, area_a)半徑為2的圓的面積
2、為: 12.56 print(半徑為2的圓的周長(zhǎng)為:, perimeter_a)半徑為2的圓的周長(zhǎng)為: 12.56(重復(fù)這些代碼)3 這三段基本相同的代碼是否能夠只寫一次呢? 對(duì)于這樣的問題,我們可以使用函數(shù)來解決,使計(jì)算圓面積和周長(zhǎng)的這段代碼得以重用。45.2 函數(shù)基礎(chǔ)知識(shí)5.2.1 函數(shù)的定義函數(shù)定義格式如下:def 函數(shù)名(參數(shù)):(函數(shù)體)函數(shù)定義格式如下:def 函數(shù)名(參數(shù)):(函數(shù)體)函數(shù)定義格式如下:def 函數(shù)名(參數(shù)):(函數(shù)體)5【問題5-2】 定義一個(gè)輸出函數(shù),打印出Hello World!。 開始調(diào)用函數(shù)sayHello()結(jié)束框圖: 程序:#Ques5_2.pyde
3、f sayHello( ): #函數(shù)定義printHello World! #函數(shù)體sayHello( ) #函數(shù)調(diào)用程序運(yùn)行結(jié)果:Hello World!同學(xué)們會(huì)定義函數(shù)了嗎?65.2.2 形參和實(shí)參 在定義函數(shù)時(shí),函數(shù)名后面括號(hào)中的變量稱為形參 在調(diào)用函數(shù)時(shí),可以通過參數(shù)將一些值傳遞給函數(shù)處理,這些在調(diào)用函數(shù)時(shí)提供給函數(shù)的值稱為實(shí)參?!締栴}5-3】 5.1節(jié)中的問題用函數(shù)調(diào)用的辦法來編寫程序。程序:# Ques5_3.pydef circle(r):area=3.14*r*rperimeter=2*3.14*rprint(半徑為,r,的圓面積為:, area)print(半徑為,r,的圓周
4、長(zhǎng)為:, perimeter)circle(2) #函數(shù)調(diào)用circle(3) #函數(shù)調(diào)用circle(4) #函數(shù)調(diào)用7參數(shù)傳遞示意圖大路小路8【問題5-4】 編寫函數(shù),實(shí)現(xiàn)比較兩個(gè)數(shù)的大小,并輸出其中較大的數(shù),并調(diào)用函數(shù)。程序: #Ques5_4.pydef printMax(a, b):if ab:pirnt(a, is the max)else:print(b, is the max)printMax(3, 4) #傳遞兩個(gè)實(shí)數(shù)實(shí)參x=5y=7printMax(x, y) #傳遞兩個(gè)變量實(shí)參思考:如果不在函數(shù)內(nèi)輸出較大數(shù),修改函數(shù)使之返回較大數(shù)? 程序運(yùn)行結(jié)果:4 is the max
5、7 is the max95.2.3 局部變量和全局變量在函數(shù)內(nèi)定義的變量只在函數(shù)內(nèi)起作用,是局部變量。在函數(shù)外定義的變量在定義下方的所有代碼中都起作用,是全局變量。變量起作用的范圍稱為變量的作用域。在函數(shù)內(nèi)定義的變量,與函數(shù)外具有相同名稱的其他變量沒有關(guān)系,即變量名稱對(duì)于函數(shù)來說是局部的。10【問題5-5】 使用局部變量程序:#Ques_5.pydef func(x):print(x is, x)x=2print(changed local x to, x)x=50func(x)print(x is still, x)程序運(yùn)行結(jié)果:x is 50changed local x to 2x i
6、s still 5011 程序:#Exp1_1.pyimport mathx1, y1=eval(input(x1, y1=)x2, y2=eval(input(x2, y2=)d=math.sqrt(x2-x1)*2+(y2-y1)*2)print(d=, d) 程序:#Exp1_1.pyimport mathx1, y1=eval(input(x1, y1=)x2, y2=eval(input(x2, y2=)d=math.sqrt(x2-x1)*2+(y2-y1)*2)print(d=, d) 格式如下:global 變量名1,變量名2,變量名nglobal語(yǔ)句有兩種作用,分別說明如下。
7、1. global語(yǔ)句申明的變量是函數(shù)外已定義的全局變量,則可在函數(shù)內(nèi)對(duì)函數(shù)外定義的全局變量賦值。如果需要在函數(shù)內(nèi)部為一個(gè)定義在函數(shù)外的變量賦值,那么就用global申明一下。 2.global語(yǔ)句申明的變量是函數(shù)內(nèi)定義的變量,則該變量將變?yōu)槿肿兞?輸入及程序運(yùn)行結(jié)果:x1,y1=1, 2x2,y2=5, 3.4d= 4.237924020083418 5.2.4 global語(yǔ)句12【問題5-6】 在函數(shù)內(nèi)使用外部定義的全局變量。程序:# Ques5_6.pydef func( ):global x #為了對(duì)全局變量x賦值print(x is, x)x=2print(changed loc
8、al x to, x)x=50func( )print(value of x is, x)程序運(yùn)行結(jié)果:x is 50changed local x to 2value of x is 213【補(bǔ)充例子1_5】 理解全局變量和局部變量14#variable_1.pyx=5def fun1(): print(x) #可以使用全局變量 fun1()print(x)15#variable_2.pyx=5def fun1(): print(x) x=0 #解釋器認(rèn)為在函數(shù)范圍內(nèi)先使用變量#然后才定義。異常!fun1()print(x)16#variable_3.pyx=5def fun1(): x=0
9、 #定義了一個(gè)局部變量x,與全局變量x無關(guān) print(x) fun1()print(x)17#variable_4.pyx=5def fun1(): print(x) #要在函數(shù)內(nèi)對(duì)全局變量賦值必須用global特別說明 #有趣的是global語(yǔ)句可以放在函數(shù)內(nèi)的任何位置 global x x=0 fun1()print(x)18#variable_5.pyx=5def fun1(): print(x) global y y=9 #用global申明一個(gè)新變量y然后再定義, #則y是全局變量fun1()print(x,y)195.2.5 默認(rèn)參數(shù)值【問題5-7】 使用默認(rèn)參數(shù)值。程序:# Q
10、ues5_8.pydef say(message, times =1):print(message * times)say(Hello)say(World, 5)程序運(yùn)行結(jié)果:HelloWorldWorldWorldWorldWorld如果在調(diào)用函數(shù)時(shí)不為這些參數(shù)提供值,那么這些參數(shù)就使用默認(rèn)值,如果在調(diào)用的時(shí)候有實(shí)參,則將實(shí)參的值傳遞個(gè)形參。205.2.6 關(guān)鍵參數(shù)關(guān)鍵參數(shù)有兩個(gè)優(yōu)點(diǎn):一,不需按照形式參數(shù)的順序傳實(shí)參,調(diào)用函數(shù)變得更加簡(jiǎn)單。二、假設(shè)其他參數(shù)都有默認(rèn)值,可以只給需要的那些參數(shù)賦值?!締栴}5-8】 使用關(guān)鍵參數(shù)程序:# Ques5_8.py def func(a, b=5, c=
11、10):print(a is, a, and b is, b, and c is, c)func(3, 7)func(25, c=24) #說出本次調(diào)用的關(guān)鍵參數(shù)名func(c=50, a=100) ) #說出本次調(diào)用的關(guān)鍵參數(shù)名程序運(yùn)行結(jié)果:a is 3 and b is 7 and c is 10a is 25 and b is 5 and c is 24a is 100 and b is 5 and c is 50215.2.7 return語(yǔ)句return語(yǔ)句用來從一個(gè)函數(shù)返回,即跳出函數(shù),也可用return語(yǔ)句從函數(shù)返回一個(gè)值?!締栴}5-9】 用return語(yǔ)句返回值。程序:# Qu
12、es5_9.pydef maximum(x, y):if xy:return xelse:return yprint(maximum(2, 3)程序運(yùn)行結(jié)果:3225.3 函數(shù)基礎(chǔ)知識(shí)的應(yīng)用【例5-1】 編寫函數(shù),計(jì)算矩形的周長(zhǎng)和面積。程序:# Exp5_1.pydef rectangle(x, y):area=x*yperimeter=2*(x+y)print(矩形的面積為:, area)print(矩形的周長(zhǎng)為:, perimeter)a=input(請(qǐng)輸入矩形的長(zhǎng):)b=input(請(qǐng)輸入矩形的寬:)rectangle(eval(a), eval(b)輸入及程序運(yùn)行結(jié)果:請(qǐng)輸入矩形的長(zhǎng):
13、4請(qǐng)輸入矩形的寬:2矩形的面積為: 8矩形的周長(zhǎng)為: 1223【例5-2】 編寫函數(shù),判斷一個(gè)年份是否為閏年,主程序中輸入一個(gè)年份,調(diào)用函數(shù)進(jìn)行判斷。分析:閏年的定義是年份數(shù)能被4整除但不能被100整除,或者年份數(shù)能被400整除。#Exp5_2.pydef run(x):if (x%4=0 and x%100!=0) or (x%400=0):print(Y)else:print(N)a=input(請(qǐng)輸入一個(gè)年份:)run(int(a)輸入及程序運(yùn)行結(jié)果:請(qǐng)輸入一個(gè)年份:2000Y24【例5-3】 編寫函數(shù),判斷一個(gè)數(shù)是否為水仙花數(shù),主程序中輸入一個(gè)數(shù),調(diào)用函數(shù)進(jìn)行判斷。程序:# Exp5_3.pydef flower(x):a=int(x/100)b=int(x-a*100)/10)c=x-a*100-b*10if a*a*a
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 安全法律法規(guī)真題及答案解析
- 2025年食品安全管理員考試試題庫(kù)卷及答案
- 2025年嵌入式系統(tǒng)考題及答案條件
- 高頻北美統(tǒng)計(jì)學(xué)面試試題及答案
- ABB(中國(guó))校招面試題及答案
- 船廠入職考試題目及答案
- 北京市通州區(qū)中西醫(yī)結(jié)合醫(yī)院2026年畢業(yè)生招聘參考題庫(kù)必考題
- 南昌大學(xué)附屬口腔醫(yī)院2026年高層次人才招聘(3)備考題庫(kù)附答案
- 四川能投高縣綜合能源有限公司2025年招聘工作人員考試備考題庫(kù)附答案
- 招23人!2025年久治縣公安局面向社會(huì)公開招聘警務(wù)輔助人員參考題庫(kù)附答案
- DB1331∕T 109-2025 雄安新區(qū)建設(shè)工程抗震設(shè)防標(biāo)準(zhǔn)
- 2025年度麻醉科主任述職報(bào)告
- Scratch講座課件教學(xué)課件
- 2025年度安全生產(chǎn)工作述職報(bào)告
- 2025年全國(guó)碩士研究生考試《管理類聯(lián)考綜合能力》試題及答案
- 護(hù)理質(zhì)量管理質(zhì)控方案2026
- 《低碳醫(yī)院評(píng)價(jià)指南》(T-SHWSHQ 14-2025)
- 馬的文化介紹
- 二年級(jí)數(shù)學(xué)計(jì)算題專項(xiàng)練習(xí)1000題匯編集錦
- AI技術(shù)在人力資源管理中的實(shí)際應(yīng)用案例分享
- 急診預(yù)檢分診課件教學(xué)
評(píng)論
0/150
提交評(píng)論