版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
Python程序設(shè)計第5章函數(shù)與模塊【教學(xué)目標】
學(xué)習(xí)內(nèi)容函數(shù)定義函數(shù)參數(shù)的傳遞函數(shù)的返回值變量的作用域常用函數(shù)模塊、模塊包常用內(nèi)置模塊(類庫)介紹技能目標會函數(shù)的定義及其使用方法能理解變量的作用域能對常用函數(shù)使用會模塊和模塊包的使用方法能對常用內(nèi)置模塊使用任務(wù)一編寫黨員信息管理系統(tǒng)
黨員信息管理系統(tǒng)可以對黨員的基本信息進行管理,規(guī)范基層黨支部的建設(shè),提高了信息化管理水平。
本次的任務(wù)是使用Python開發(fā)黨員信息管理系統(tǒng)V1.0,實現(xiàn)顯示黨員信息和添加黨員信息。【提示】(1)使用函數(shù)來封裝每個功能:打印主菜單、顯示黨員信息、添加黨員信息。(2)使用二維列表來保存黨員信息,黨員的信息包括編號、姓名、入黨時間。(3)根據(jù)實際需求,將保存黨員信息的列表作為參數(shù)傳入到函數(shù)中。5.1函數(shù)定義
函數(shù)是有組織的、可重復(fù)使用的代碼塊。它用于執(zhí)行單個相關(guān)操作,可以提高應(yīng)用的模塊性和代碼的重復(fù)利用率。5.1函數(shù)定義5.1.1內(nèi)置的標準函數(shù)及使用
內(nèi)置函數(shù)是安裝Python時自帶的、開發(fā)者可以直接使用的基本函數(shù)。Python中有很多內(nèi)置函數(shù),這些函數(shù)就是一個小程序,它們接收輸入、處理輸入,并產(chǎn)生輸出。5.1函數(shù)定義5.1.2用戶自定義函數(shù)及調(diào)用
Python不僅含有可以直接使用內(nèi)置函數(shù),也允許開發(fā)者自定義函數(shù),自定義函數(shù)的過程也可以理解為創(chuàng)建一個具有某種功能的方法。如果要使用自定義函數(shù),則需調(diào)用自定義函數(shù)。函數(shù)的定義格式如下。def函數(shù)名([形參列表]):
函數(shù)體
[return表達式]函數(shù)的調(diào)用格式如下。函數(shù)名([實參列表])實例一函數(shù)的定義和調(diào)用例子,實現(xiàn)兩數(shù)的和。defmy_add(a,b): #定義有返回值函數(shù)my_add()return(a+b)
#函數(shù)體defmy_print():
#定義無返回值函數(shù)my_print()print("helloPython") #函數(shù)體c=my_add(11,22) #調(diào)用有返回值函數(shù)my_add()print(c) #輸出返的值my_print() #調(diào)用無返回值函數(shù)my_print()5.2函數(shù)參數(shù)的傳遞
參數(shù)列表為空的函數(shù)稱為無參函數(shù)。如果函數(shù)不需要從外部傳遞數(shù)據(jù)到函數(shù)中就可以使用無參函數(shù)。
需要在調(diào)用函數(shù)時向函數(shù)內(nèi)傳遞數(shù)據(jù),此時定義的函數(shù)就是有參函數(shù)。
在Python中,函數(shù)的參數(shù)在定義時,一般有位置參數(shù)、默認參數(shù)、關(guān)鍵字參數(shù)、不定長參數(shù)等。5.2函數(shù)參數(shù)的傳遞5.2.1位置參數(shù)
函數(shù)定義可以包含一個形參列表,而函數(shù)調(diào)用時則通過傳遞實參列表,以允許函數(shù)體中的代碼引用這些參數(shù)變量。
定義函數(shù)時聲明的參數(shù),即形式參數(shù),簡稱形參;調(diào)用函數(shù)時,提供函數(shù)需要的參數(shù)的值,即實際參數(shù),簡稱實參。
實際參數(shù)值必須按默認位置順序依次傳遞給形式參數(shù)。如果參數(shù)個數(shù)不對,則出現(xiàn)語法錯誤。位置參數(shù)例子,實現(xiàn)比較兩個數(shù)大小,并輸結(jié)果。defmy_compare(a,b):ifa>b:print(a,">",b)elifa==b:print(a,"=b",b)else:print(a,"<",b)my_compare(1,2)x=11;y=8my_compare(x,y)my_compare(1)程序輸出結(jié)果:1<211>8Traceback(mostrecentcalllast):File"C:/Users/Administrator/Desktop/5-2.py",line8,in<module>my_compare(1)TypeError:my_compare()missing1requiredpositionalargument:'b'5.2函數(shù)參數(shù)的傳遞5.2.2默認參數(shù)
Python允許在定義函數(shù)時給參數(shù)設(shè)置默認值,這樣的參數(shù)稱為默認參數(shù)。
給參數(shù)添加默認值的方法是在定義函數(shù)時使用“=”給參數(shù)賦值,賦值號右側(cè)即為參數(shù)的默認值。設(shè)置了默認值的參數(shù),在調(diào)用時可以不給這個參數(shù)顯式賦值,此時參數(shù)值就是它的默認值;如果在調(diào)用時給這個參數(shù)賦值,則默認值不生效。defbabble(words,times=1):
print(words*times)babble(“Hello”)#結(jié)果Hellobabble(“Hello”,3)#結(jié)果lloHelloHello5.2函數(shù)參數(shù)的傳遞5.2.3關(guān)鍵字參數(shù)
函數(shù)調(diào)用時,可通過名稱(關(guān)鍵字)指定傳入的參數(shù),例如my_func(a=1,b=2)或my_func(b=2,a=1)。按關(guān)鍵字指定傳入的參數(shù)稱為關(guān)鍵字參數(shù)。使用關(guān)鍵字參數(shù)具有三個優(yōu)點:參數(shù)按名稱意義明確;傳遞的參數(shù)與順序無關(guān);如果有多個可選參數(shù),可選擇指定某個參數(shù)值。關(guān)鍵字參數(shù)示例,驗證三種調(diào)用方式是否等價,如根據(jù)本金b,年利率r,年數(shù)n,計算最終收益v的函數(shù),公式v=b(1+r)n。defgetValue(b,r,n=5):v=b*((1+r)**n)print(format(v,'.2f'))getValue(1000,0.05)getValue(b=1000,r=0.05)getValue(r=0.05,b=1000)程序輸出結(jié)果:1276.281276.281276.285.2函數(shù)參數(shù)的傳遞5.2.4不定長參數(shù)
在定義函數(shù)時,允許聲明帶星的參數(shù),如deffunc(*args),則表明調(diào)用本函數(shù)時允許向函數(shù)傳遞可變數(shù)量的實參。調(diào)用函數(shù)時,帶一個星號時,則從“*”后所有的參數(shù)被收集為一個元組;帶兩個星號時,則從“**”后所有的參數(shù)被收集為一個字典。可變參數(shù)示例1。defmy_sum(a,b,*c):total=a+bforninc:total=total+nreturntotalprint(my_sum(1,2))print(my_sum(1,2,3,4,5))print(my_sum(1,2,3,4,5,6,7))可變參數(shù)示例2。defmy_sum(a,b,*c,**d):total=a+bforninc:total=total+nforkeyind:total=total+d[key]returntotalprint(my_sum(1,2))print(my_sum(1,2,3,4,5))print(my_sum(1,2,3,4,5,male=6,female=7))5.3函數(shù)的返回值
函數(shù)可以返回值,并且返回的值可以是任意數(shù)據(jù)類型,即在函數(shù)體中使用return語句從函數(shù)返回一個值,并終止跳出函數(shù),如果需要返回多個值,則可以返回一個元組。deffunc():
return1,2,3a,b,c=func()print(a,b,c)
#結(jié)果(1,2,3)實例六設(shè)計求若干數(shù)中最大值函數(shù),如輸入三個數(shù),輸出最大數(shù)。求若干數(shù)中最大值函數(shù)的方法一般如下。(1)最大值的初值設(shè)為一個比較小的數(shù),或者取第一個數(shù)為最大值的初值。(2)利用循環(huán),將每個數(shù)與最大值比較,若此數(shù)大于最大值,則將此數(shù)設(shè)置為最大值。defmy_max(a,b,*c):#求最大值max_value=aifmax_value<b:max_value=bforninc:ifmax_value<n:max_value=nreturnmax_valuedefmy_main():x=int(input("請輸入第一個數(shù):"))y=int(input("請輸入第二個數(shù):"))z=int(input("請輸入第三個數(shù):"))max1=my_max(x,y,z)print("最大數(shù)是:",max1)my_main()5.4變量的作用域(1)局部作用域:局部作用域一般是聲明在函數(shù)內(nèi)部的變量。>>>deffunc():
x=10
#函數(shù)內(nèi)的局部變量x>>>print(x)
#x是局部變量,不能在函數(shù)func()外被訪問(2)嵌套作用域:嵌套作用域和局部作用域是相對的,嵌套作用域相對于更上的層的函數(shù)而言也是局部作用域,嵌套作用域與局部作用域的區(qū)別在于對一個函數(shù)而言,局部作用域是定義在此函數(shù)內(nèi)部的局部,而嵌套作用域是定義在此函數(shù)的上一層函數(shù)的局部。(3)全局作用域:全局作用域一般是在函數(shù)外部聲明的變量,被為全局變量。全局變量的適用范圍是整個.py文件。(4)內(nèi)置作用域:系統(tǒng)中的內(nèi)置模塊所定義的變量,它包含了Python的各種預(yù)定義變量和函數(shù)。下面的程序中包含了4種作用域。a=int(2.6) #內(nèi)置作用域a_count=0 #全局作用城defouter():
b_count=1
#局部作用域definner():
c_count=2
#嵌套作用域5.4變量的作用域5.4.1global關(guān)鍵字
當(dāng)作用域外的變量與作用域內(nèi)的變量名稱相同時,以“本地”優(yōu)先為原則,此時外部的變量會被屏蔽。5.4.2nonlocal關(guān)鍵字
當(dāng)作用域外的變量與作用域內(nèi)的變量名稱相同時,以“本地”優(yōu)先為原則,此時外部的變量會被屏蔽。實例七global關(guān)鍵字的使用。defe_count():num=10definner():nonlocalnum #nonlocal關(guān)鍵字聲明num=100print(num)inner()print(num)e_count()5.5常用函數(shù)5.5.1lambda函數(shù)
lambda函數(shù)又被稱為匿名函數(shù),它沒有復(fù)雜的函數(shù)定義格式,僅由一行代碼構(gòu)成,其基本格式如下。result=lambda[argl,arg2,arg3,…,argN]:expression
其中,result用于接收lambda函數(shù)的結(jié)果,[argl,arg2,arg3,…,argN]指的是可選參數(shù),用于指定要傳遞的參數(shù)列表,參數(shù)間使用“,”分隔。expression為必選參數(shù),它是一個表達式,用于描述函數(shù)的功能,如果函數(shù)有參數(shù),那么將在這個表達式中使用。如使用1ambda函數(shù)求兩數(shù)加和。實例八使用普通函數(shù)與lambda函數(shù)計算圓的面積。#普通函數(shù)importmathdefarea(r):result=math.pi*r*rreturnresultr=3print("使用普通函數(shù)計算圓面積是:",area(r))#lambda函數(shù)areal=lambdar:math.pi*r*rprint("使用lambda函數(shù)計算圓面積是:",area(r))5.5常用函數(shù)5.5.2zip()函數(shù)
zip()函數(shù)是Python的一個內(nèi)置函數(shù),它接受一系列可迭代的對象作為參數(shù),將對象中對應(yīng)的元素打包成一個個tuple(元組),然后返回由這些tuple組成的list(列表)。其應(yīng)用形式為:zip([iterable,...])。若傳入?yún)?shù)的長度不等,則返回list的長度和參數(shù)中長度最短的對象相同。>>>x=zip()>>>print(list(x))輸出結(jié)果為:[]從結(jié)果可以看出zip()函數(shù)在沒有參數(shù)時運作的方式。>>>x=[1,2,3]>>>x=zip(x)>>>print(list(x))輸出結(jié)果為:[(1,),(2,),(3,)]從結(jié)果可以看出zip()函數(shù)在只有一個參數(shù)時運作的方式。下面看看有多個參數(shù)的情況。>>>x=[1,2,3]>>>y=[4,5,6]>>>xy=zip(x,y)>>>foriinxy:>>>print(i,end=")輸出結(jié)果為:(1,4)(2,5)(3,6)可見,zip()函數(shù)可以將幾個列表中的元素,按次序組合成一個元組。如果將多個列表傳入zip()函數(shù)中,也可以執(zhí)行相同的操作,例如。>>>x=[1,2,3]>>>y=[4,5,6]>>>z=[7,8,9]>>>xyz=zip(x,y,z)>>>print(list(xyz))輸出結(jié)果為:[(1,4.7),(2.5,8),(3,6.9)]當(dāng)兩個列表的長度不一樣時,操作如下。>>>x=[1,2,3]>>>y=[4,5,6,7]>>>xy=zip(x,y)>>>print(list(xy))輸出結(jié)果為:[(1,4),(2,5),(3,6)]從這個結(jié)果可以看出zip()函數(shù)的長度處理方式?!救蝿?wù)實現(xiàn)】任務(wù)二為公益事業(yè)做小貢獻
中國福利彩票發(fā)行的目的是團結(jié)各界熱心社會福利事業(yè)的人士,發(fā)揚社會主義人道主義精神,籌集社會福利資金,興辦殘疾人、老年人、孤兒等福利事業(yè)和幫助有困難的人,具有鮮明的公益性。雙色球是中國福利彩票中的一種。
本次的任務(wù)是使用Python編寫雙色球中獎程序,其中利用Python內(nèi)置random模塊隨機生成某一期的雙色球中獎號碼。【提示】(1)根據(jù)雙色球規(guī)則:6位不重復(fù)的藍球,藍球的選號范圍:1~33,則生成藍球號碼時使用隨機數(shù)模塊,號碼范圍1~33,生成藍球號碼時要驗證新生成的號碼與已生成的號碼是否重復(fù),如果重復(fù)需重新生成,可以使用列表的append()方法保存藍球號碼,及用if語句判斷元素是否重復(fù)。(2)根據(jù)雙色球規(guī)則:1位紅球,紅球選號范圍:1~16,則生成紅球號碼時使用隨機數(shù)模塊,號碼范圍:1~16。(3)根據(jù)雙色球規(guī)則:藍球依從小到大的順序排列,則利用列表的sort()方法實現(xiàn)。5.6模塊在程序開發(fā)過程中,開發(fā)人員不會將所有的代碼都放到一個源程序文件中,而是將功能相近的類或函數(shù)放到一起,這樣代碼結(jié)構(gòu)清晰,管理維護也方便,那么在Python中使用模塊來管理實現(xiàn),也即是我們之前所編寫的Python文件就是一個模塊,其擴展名是.py。在模塊中可以定義函數(shù)、類和變量等可執(zhí)行的代碼。別的程序可以導(dǎo)入模塊,以使用該模塊中相應(yīng)的方法。5.6模塊5.6.1創(chuàng)建模塊在Python中,模塊的創(chuàng)建是以文件的方式來表示模塊,一個模塊就是一個以.py為擴展名的文件,文件的名字就是模塊的名字,格式為“模塊名.py”。如將兩個數(shù)求和的函數(shù)程序文件保存在文件中,并命名為my_Add.py,就可以將其看作是一個模塊,代碼如下。defmy_Sum(a,b):returna+b5.6模塊5.6.2導(dǎo)入模塊
創(chuàng)建模塊后,為了在別的程序中使用該模塊中的變量、函數(shù)或類等,需要先導(dǎo)入該模塊??墒褂胕mport或from語句導(dǎo)入模塊,該導(dǎo)入語句可以在程序中的任意位置使用,基本格式如下。import模塊名稱import模塊名稱as新名稱from模塊名稱import導(dǎo)入的對象名稱from模塊名稱import導(dǎo)入的對象名稱as新名稱from模塊名稱import*5.6模塊5.6.3模塊屬性
在模塊中,有一些內(nèi)置屬性用于完成特定的任務(wù),即使是自定義創(chuàng)建的模塊,也會包含這些內(nèi)置屬性。利用dir()函數(shù)可以查看模塊中的屬性。5.6模塊5.6.4導(dǎo)入模塊搜索路徑在導(dǎo)入模塊時,Python會依次執(zhí)行下列3個步驟。(1)搜索需要導(dǎo)入的模塊文件。(2)必要時編譯模塊文件。(3)執(zhí)行模塊文件。5.7模塊包5.7.1包的基本結(jié)構(gòu)在編寫程序的過程中,會創(chuàng)建許多的模塊,為了防止各模塊間名字的重復(fù),也為了將某些功能相近的模塊組織在同一個目錄下,就需要運用包來管理。包可以簡單理解為文件夾,導(dǎo)入使用包的方式跟使用模塊類似,但需要注意的是,當(dāng)把文件夾當(dāng)作包使用時,文件夾中需要包含__init__.py文件,主要是為了避免將文件夾名當(dāng)作普通的字符串。在__init__.py文件中,可以編寫一些初始化代碼,當(dāng)包被導(dǎo)入時,__init__.py文件會自動執(zhí)行,當(dāng)然__init__.py也可以為空。。
Python中包、模塊、函數(shù)、類和屬性之間的關(guān)系如圖5-2所示函數(shù)類屬性模塊1包函數(shù)類屬性模塊25.7.2導(dǎo)入包5.8常用內(nèi)置模塊介紹
Python語言的語法接近自然語言,因此在各個領(lǐng)域都有十分廣泛的應(yīng)用。同時,因為Python語言的開源性,開發(fā)了很多開源的第三方模塊。其中一些使用場景廣泛的模塊被集成到了Python中,稱為內(nèi)置模塊,其他未集成到Python中的模塊稱為第三方模塊(庫)。5.8常用內(nèi)置模塊介紹5.8.1繪圖工具:turtle庫1.turtle庫的基本概念
turtle庫(也稱海龜繪圖庫)提供了基本繪圖功能,是Python語言中一個很流行的繪制圖像的函數(shù)庫,想象一只小烏龜,在一個橫軸為x、縱軸為y的坐標系原點(0,0)位置開始,根據(jù)一組函數(shù)指令的控制,在這個平面坐標系中移動,從而在它爬行的路徑上繪制圖形。5.8常用內(nèi)置模塊介紹5.8.1繪圖工具:turtle庫2.turtle繪圖的基本知識點(1)畫布(canvas)
畫布指turtle用于繪圖的區(qū)域,可以設(shè)置它的大小和初始位置。如設(shè)置畫布大小turtle.screensize(canvwidth=None,canvheight=None,bg=None),(2)畫筆
畫筆的狀態(tài)指在畫布上,默認有一個坐標原點為畫布中心的坐標軸,坐標原點上有一只面朝x軸正方向小烏龜。坐標原點(位置),面朝x軸正方向(方向),turtle繪圖中,就是使用位置方向描述小烏龜(畫筆)的狀態(tài)。5.8常用內(nèi)置模塊介紹5.8.1繪圖工具:turtle庫3.命令介紹樣式turtle.circle(radius,extent=None,steps=None)描述:以給定半徑畫圓參數(shù):radius指半徑,半徑的正(負),表示圓心在畫筆的左邊(右邊)畫圓;extent指弧度;steps指半徑為radius的圓的內(nèi)切正多邊形,多邊形邊數(shù)為steps。示例:circle(50) #整圓circle(50,steps=3) #三角形circle(120,180) #半圓實例九利用turtle繪圖一個五角星。importturtle #導(dǎo)入turtle模塊中的函數(shù)turtle.color("red","yellow")#設(shè)置畫筆顏色為red,填充顏色為yellowturtle.pensize(5) #設(shè)置畫筆的寬度為5像素turtle.hideturtle() #隱藏畫筆的turtle形狀turtle.begin_fill()#開始填充whileTrue:turtle.forward(300) #畫筆前進300像素turtle.right(144)#畫筆方向向右旋轉(zhuǎn)144度ifabs(turtle.pos())<1: #檢查當(dāng)前坐標breakturtle.end_fill() #結(jié)束填充turtle.speed(2) #設(shè)置畫筆移動速度2turtle.penup()#提起筆移動,不繪制圖形,用于另起一個地方繪制turtle.goto(-150,-130) #將畫筆移動到坐標為x,y的位置turtle.color("green")#設(shè)置畫筆顏色#寫文本Python,文本字體名為Arial,大小為30和font為normalturtle.write("Python",font=("Arial",30,"normal"))turtle.mainloop()#開始事件循環(huán)。5.8常用內(nèi)置模塊介紹5.8.2隨機數(shù)工具:random庫1.random庫概述
random庫提供了隨機數(shù)生成函數(shù),其模塊文件為Python安裝目錄下的Lib\random.py。各種程序設(shè)計語言中幾乎都提供了隨機數(shù)生成功能。程序設(shè)計語言通過隨機數(shù)生成器來獲得隨機數(shù)。5.8常用內(nèi)置模塊介紹5.8.2隨機數(shù)工具:random庫2.random庫方法(1)random()方法
random()方法用于返回隨機生成的一個實數(shù),隨機數(shù)取值在[0,1)范圍內(nèi)。(2)randrange()方法
randrange()方法用于返回指定范圍內(nèi)按某一步長遞增集合中的一個隨機數(shù),用法如下所示。
random.randrange(start,stop,step)
其中,start是指定范圍內(nèi)的開始值,包含在范圍內(nèi),stop是指定范圍內(nèi)的結(jié)束值,但不包含在范圍內(nèi),step是步長,步長默認值為1。5.8常用內(nèi)置模塊介紹5.8.2隨機數(shù)工具:random庫2.random庫方法(3)uniform()方法
溫馨提示
- 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)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度養(yǎng)老服務(wù)業(yè)招標文件編制與養(yǎng)老服務(wù)標準合同3篇
- 二零二五版E管材國際環(huán)境友好采購合同3篇
- 2025年度環(huán)保型包裝材料研發(fā)與市場銷售合同3篇
- 2025年度綠色有機大米直供采購合同3篇
- 2025年無證房買賣合同范本解讀與實施手冊6篇
- 二零二五年度裝配式建筑構(gòu)件安裝質(zhì)量保修合同3篇
- 現(xiàn)代文學(xué)史自考知識點:郭沫若的作品
- 二零二四年體育場館高空作業(yè)腳手架勞務(wù)分包合同2篇
- 2024版煙酒零售購銷協(xié)議樣本一
- 2025年度新型環(huán)保儲藏室設(shè)施買賣合同協(xié)議書3篇
- GB/T 12914-2008紙和紙板抗張強度的測定
- GB/T 1185-2006光學(xué)零件表面疵病
- ps6000自動化系統(tǒng)用戶操作及問題處理培訓(xùn)
- 家庭教養(yǎng)方式問卷(含評分標準)
- 城市軌道交通安全管理課件(完整版)
- 線纜包覆擠塑模設(shè)計和原理
- TSG ZF001-2006 安全閥安全技術(shù)監(jiān)察規(guī)程
- 部編版二年級語文下冊《蜘蛛開店》
- 鍋爐升降平臺管理
- 200m3╱h凈化水處理站設(shè)計方案
- 個體化健康教育記錄表格模板1
評論
0/150
提交評論