Python基礎(chǔ)教程第3章_第1頁
Python基礎(chǔ)教程第3章_第2頁
Python基礎(chǔ)教程第3章_第3頁
Python基礎(chǔ)教程第3章_第4頁
Python基礎(chǔ)教程第3章_第5頁
已閱讀5頁,還剩56頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

Python程序設(shè)計教程授課教師:職務(wù):第1頁,共61頁。第3章Python函數(shù)課程描述函數(shù)(function)由若干條語句組成,用于實現(xiàn)特定的功能。函數(shù)包含函數(shù)名、若干參數(shù)和返回值。一旦定義了函數(shù),就可以在程序中需要實現(xiàn)該功能的位置調(diào)用該函數(shù),給程序員共享代碼帶來了很大方便。在Python語言中,除了提供豐富的系統(tǒng)函數(shù)(本書前面已經(jīng)介紹了一下常用的系統(tǒng)函數(shù))外,還允許用戶創(chuàng)建和使用自定義函數(shù)。第2頁,共61頁。本章知識點3.1聲明和調(diào)用函數(shù)3.2參數(shù)和返回值3.3Python內(nèi)置函數(shù)第3頁,共61頁。3.1聲明和調(diào)用函數(shù)3.1.1自定義函數(shù)3.1.2調(diào)用函數(shù)3.1.3變量的作用域3.1.4在調(diào)試窗口中查看變量的值第4頁,共61頁。3.1.1自定義函數(shù)可以使用def關(guān)鍵字來創(chuàng)建Python自定義函數(shù),其基本語法結(jié)構(gòu)如下:def函數(shù)名(參數(shù)列表):

函數(shù)體參數(shù)列表可以為空,即沒有參數(shù);也可以包含多個參數(shù),參數(shù)之間使用逗號(,)分隔。函數(shù)體可以是一條語句,也可以由一組語句組成。第5頁,共61頁。【例3-1】

創(chuàng)建一個非常簡單的函數(shù)PrintWelcome,它的功能是打印字符串“歡迎使用Python”,代碼如下:defPrintWelcome(): print("歡迎使用Python");第6頁,共61頁?!纠?-2】定義函數(shù)PrintString(),通過參數(shù)決定要打印的內(nèi)容。defPrintString(str): print(str);變量str是函數(shù)的參數(shù)。在函數(shù)體中,參數(shù)可以像其他變量一樣被使用??梢栽诤瘮?shù)中定義多個參數(shù),參數(shù)之間使用逗號分隔。第7頁,共61頁?!纠?-3】定義一個函數(shù)sum(),用于計算并打印兩個參數(shù)之和。函數(shù)sum()包含兩個參數(shù)。參數(shù)num1和num2,代碼如下:defsum(num1,num2): print(num1+num2);第8頁,共61頁。3.1.2調(diào)用函數(shù)可以直接使用函數(shù)名來調(diào)用函數(shù),無論是系統(tǒng)函數(shù)還是自定義函數(shù),調(diào)用函數(shù)的方法都是一致的。第9頁,共61頁?!纠?-4】defPrintWelcome(): print("歡迎使用Python");PrintWelcome();第10頁,共61頁。【例3-5】defPrintString(str): print(str);PrintString("傳遞參數(shù)");第11頁,共61頁?!纠?-6】defsum(num1,num2): print(num1+num2);sum(1,3);第12頁,共61頁。3.1.3變量的作用域在函數(shù)中也可以定義變量,在函數(shù)中定義的變量被稱為局部變量。局部變量只在定義它的函數(shù)內(nèi)部有效,在函數(shù)體之外,即使使用同名的變量,也會被看作是另一個變量。相應(yīng)地,在函數(shù)體之外定義的變量是全局變量。全局變量在定義后的代碼中都有效,包括它后面定義的函數(shù)體內(nèi)。如果局部變量和全局變量同名,則在定義局部變量的函數(shù)中,只有局部變量是有效的。第13頁,共61頁?!纠?-7】a=100; #全局變量defsetNumber(): a=10; #局部變量

print(a); #打印局部變量asetNumber();print(a); #打印全局變量$a第14頁,共61頁。3.1.4在調(diào)試窗口中查看變量的值1.設(shè)置斷點2.單步調(diào)試第15頁,共61頁。1.設(shè)置斷點斷點是調(diào)試器的功能之一,可以讓程序中斷在需要的地方,從而方便對其進(jìn)行分析。用鼠標(biāo)右擊要設(shè)置斷點的程序行,在快捷菜單里選擇SetBreakpont菜單項,會在當(dāng)前行設(shè)置斷點,該行代碼會顯示黃色背景。第16頁,共61頁。2.單步調(diào)試設(shè)置斷點后,運行程序,可以停在斷點處,然后一條語句一條語句的單步運行。單步調(diào)試可以看到程序的運行過程,同時可以查看在某一時刻某個變量的值。下面介紹在IDLE中單步調(diào)試程序的方法。例如在IDLE中打開例3-7.py,然后在菜單中選擇Run/PythonShell,打開PythonShell窗口。在PythonShell的菜單中,選擇Debug/Debugger,PythonShell窗口中會出現(xiàn)下面文字,[DEBUGON]同時打開DebugControl窗口第17頁,共61頁。程序停留在第1行第18頁,共61頁。程序停留在斷點處第19頁,共61頁。3.2參數(shù)和返回值3.2.1在函數(shù)中傳遞參數(shù)3.2.2函數(shù)的返回值第20頁,共61頁。3.2.1在函數(shù)中傳遞參數(shù)1.普通參數(shù)Python實行按值傳遞參數(shù)。值傳遞指調(diào)用函數(shù)時將常量或變量的值(通常稱其為實參)傳遞給函數(shù)的參數(shù)(通常稱其為形參)。值傳遞的特點是實參與形參分別存儲在各自的內(nèi)存空間中,是兩個不相關(guān)的獨立變量。因此,在函數(shù)內(nèi)部改變形參的值時,實參的值一般是不會改變的。6.1.2小節(jié)介紹的實例都屬于按值傳遞參數(shù)的情況。第21頁,共61頁。【例3-8】在函數(shù)中按值傳遞參數(shù)的例子deffunc(num): num+=1;a=10func(a);print(a);第22頁,共61頁?!纠?-9】分別打印形參和實參的地址deffunc(num):print("形參num的地址",id(num))a=10func(a);print("實參a的地址",id(a));運行結(jié)果如下:形參num的地址1557053600實參a的地址1557053600第23頁,共61頁。2.列表和字典參數(shù)【例3-10】使用列表作為函數(shù)參數(shù)的例子。defsum(list): total=0; forxinrange(len(list)): print(list[x],"+"); total+=list[x]; print("=",total);list=[15,25,35,65]sum(list);第24頁,共61頁。運行結(jié)果15+25+35+65+=140第25頁,共61頁。【例3-11】使用字典作為函數(shù)參數(shù)的例子defprint_dict(dict): for(k,v)indict.items(): print"dict[%s]="%k,vdict={"a":"apple","b":"banana","g":"grape","o":"orange"}print_dict(dict);第26頁,共61頁。運行結(jié)果dict[o]=orangedict[g]=grapedict[a]=appledict[b]=banana第27頁,共61頁?!纠?-12】在函數(shù)中修改列表參數(shù)的例子defswap(list):temp=list[0]list[0]=list[1]list[1]=templist=[1,2]print(list)swap(list)print(list)第28頁,共61頁。運行結(jié)果[1,2][2,1]第29頁,共61頁?!纠?-13】在函數(shù)中修改字典參數(shù)的例子defchangeA(dict):dict['a']=1

d={'a':10,'b':20,'c':30}changeA(d)print(d)第30頁,共61頁。運行結(jié)果{'c':30,'a':1,'b':20}第31頁,共61頁。3.參數(shù)的默認(rèn)值在Python中,可以為函數(shù)的參數(shù)設(shè)置默認(rèn)值??梢栽诙x函數(shù)時,直接在參數(shù)后面使用“=”為其設(shè)置默認(rèn)值。在調(diào)用函數(shù)時可以不指定擁有默認(rèn)值的參數(shù)的值,此時在函數(shù)體中以默認(rèn)值作為該參數(shù)第32頁,共61頁?!纠?-14】設(shè)置參數(shù)默認(rèn)值的例子defsay(message,times=1):print(message*times)say('hello')say('Python',3)函數(shù)say()有2個參數(shù):message和times。其中times的默認(rèn)值為1。運行結(jié)果如下:helloPythonPythonPython第33頁,共61頁?!纠?-15】deffunc1(a=1,b,c=10): d=a+b*c;func(10,20,30)第34頁,共61頁?!纠?-15】的運行結(jié)果第35頁,共61頁。4.可變長參數(shù)Python還支持可變長度的參數(shù)列表。可變長參數(shù)可以是元祖或字典。當(dāng)參數(shù)以*開頭時,表示可變長參數(shù)將被視為一個元祖,格式如下:deffunc(*t):在func()函數(shù)中t被視為一個元祖,使用t[index]獲取每一個可變長參數(shù)??梢允褂萌我舛鄠€實參調(diào)用func()函數(shù),例如:func(1,2,3,4)第36頁,共61頁。【例3-16】以元祖為可變長參數(shù)的實例deffunc1(*t):print("可變長參數(shù)數(shù)量如下:")print(len(t))print("依次為:")forxinrange(len(t)):print(t[x]);func1(1,2,3,4);運行結(jié)果如下:可變長參數(shù)數(shù)量如下:4依次為:1234第37頁,共61頁?!纠?-17】使用可變長參數(shù)計算任意個指定數(shù)字之和defsum(*t):sum=0;forxinrange(len(t)):print(str(t[x])+"+");sum+=t[x];print("="+str(sum));sum(1,2);sum(1,2,3,4);sum(11,22,33,44,55);第38頁,共61頁。結(jié)果如下1+2+3+4+=1011+22+33+44+55+=1651+2+3+4+=10第39頁,共61頁?!纠?-18】defsum(*t):sum=0;forxinrange(len(t)):print(str(t[x])+"+");sum+=t[x];iflen(t)>0:print("="+str(sum));sum();第40頁,共61頁。【例3-19】defsum(**t):print(t);

sum(a=1,b=2,c=3);運行結(jié)果如下:{'a':1,'c':3,'b':2}第41頁,共61頁。3.2.2函數(shù)的返回值對【例3-6】中的sum()函數(shù)進(jìn)行改造,通過函數(shù)的返回值返回相加的結(jié)果,代碼如下:defsum(num1,num2): returnnum1+num2;print(sum(1,3));運行結(jié)果為4。第42頁,共61頁。【例3-21】deffilter_even(list):list1=[];foriinrange(len(list)):iflist[i]%2==0:list1.append(list[i])i-=1;returnlist1;list=[1,2,3,4,5,6,7,8,9,10]list2=filter_even(list)print(list2);第43頁,共61頁。3.3Python內(nèi)置函數(shù)3.3.1數(shù)學(xué)運算函數(shù)3.3.2字符串處理函數(shù)3.3.3其他常用內(nèi)置函數(shù)第44頁,共61頁。3.3.1數(shù)學(xué)運算函數(shù)函數(shù)原型具體說明abs()abs(x)返回

x的絕對值pow()pow(x,y)返回x的y次冪Round()round(x[,n])返回浮點數(shù)x的四舍五入值,參數(shù)n指定保留的小數(shù)位數(shù)divmod()divmod(a,b)

返回a除以b的商和余數(shù),返回一個元組。例如divmod(a,b)返回

(a/b,a%b)第45頁,共61頁?!纠?-22】print(abs(-1));print(round(80.23456,2))print(pow(2,3))print(divmod(8,3));運行結(jié)果如下:180.238(2,2)第46頁,共61頁。3.3.2字符串處理函數(shù)1.字符串中字符大小寫的變換函數(shù)原型具體說明lower()str.lower()將字符串str中的字母轉(zhuǎn)換為小寫字母upper()str.upper()將字符串str中的字母轉(zhuǎn)換為大寫字母swapcase()str.swapcase()將字符串str中的字母大小寫互換capitalize()str.capitalize()將字符串str中的首字母大寫title()str.title()將字符串str中的首字母大寫,其余為小寫第47頁,共61頁?!纠?-23】str1="helloworld";str2="HELLOWORLD";str3="Helloworld";print(str1.upper());print(str2.lower());print(str3.swapcase())print(str3.swapcase())print(str1.capitalize());print(str2.title());第48頁,共61頁。運行結(jié)果HELLOWORLDhelloworldhELLOWORLDhELLOWORLDHelloworldHelloWorld第49頁,共61頁。2.指定輸出字符串時的對齊方式函數(shù)原型具體說明ljust()str.ljust(width,[fillchar])左對齊輸出字符串str,總寬度為參數(shù)width,不足部分以參數(shù)fillchar指定的字符填充,默認(rèn)使用空格填充rjust()str.rjust(width,[fillchar])右對齊輸出字符串str,總寬度為參數(shù)width,不足部分以參數(shù)fillchar指定的字符填充,默認(rèn)使用空格填充center()str.center(width,[fillchar])居中對齊輸出字符串str,總寬度為參數(shù)width,不足部分以參數(shù)fillchar指定的字符填充,默認(rèn)使用空格填充zfill()str.zfill(width)將字符串str變成width長,并且右對齊,不足部分用0補足第50頁,共61頁?!纠?-24】str1="helloworld";print(str1.ljust(30,"*"));print(str1.rjust(30,"*"));print(str1.center(30,"*"))print(str1.zfill(30))運行結(jié)果如下:helloworld**************************************helloworld*********helloworld**********0000000000000000000helloworld第51頁,共61頁。3.搜索和替換函數(shù)原型具體說明find()str.find(substr,[start,[end]])返回字符串str中出現(xiàn)子串substr的第一個字母的位置,如果str中沒有substr,則返回-1。搜索范圍從start至endindex()str.index(substr,[start,[end]])與find()函數(shù)相同,只是在str中沒有substr時,index()函數(shù)會返回一個運行時錯誤rfind()str.rfind(substr,[start,[end]])返回從右側(cè)算起,字符串str中出現(xiàn)子串substr的第一個字母的位置,如果str中沒有substr,則返回-1。搜索范圍從start至endrindex()str.rindex(substr,[start,[end]])與rfind()函數(shù)相同,只是在str中沒有substr時,rindex()函數(shù)會返回一個運行時錯誤count()str.count(substr,[start,[end]])計算substr在str中出現(xiàn)的次數(shù)。統(tǒng)計范圍從start至endreplace()str.replace(oldstr,newstr,[count])把str中的oldstr替換為newstr,count為替換次數(shù)strip()str.strip([chars])把字符串str中前后chars中有的字符全部去掉。如果不指定參數(shù)chars,則會去掉空白符(包括'\n','\r','\t'和'')lstrip()str.lstrip([chars])把字符串str中前面包含的chars中有的字符全部去掉。如果不指定參數(shù)chars,則會去掉空白符(包括'\n','\r','\t'和'')rstrip()str.rstrip([chars])把字符串str中前面包含的chars中有的字符全部去掉。如果不指定參數(shù)chars,則會去掉空白符(包括'\n','\r','\t'和'')expandtabs()str.expandtabs([tabsize])把字符串str中的tab字符替換為空格,每個tab替換為tabsize個空格,默認(rèn)是8個

第52頁,共61頁?!纠?-25】str1="helloworldPython";list1=str1.split("");print(list1);str1="helloworld\nPython";list1=str1.splitlines();print(list1);list1=["hello","world","Python"]str1="#"print(str1.join(list1))運行結(jié)果如下:['hello','world','Python']['helloworld','Python']hello#world#Python第53頁,共61頁。5.字符串判斷相關(guān)函數(shù)原型具體說明startswith()str.startswith(substr)判斷str是否以substr開頭endswith()str.endswith(substr)判斷str是否以substr為結(jié)尾isalnum()str.isalnum()判斷str是否全為字母或數(shù)字isalpha()str.isalpha()判斷str是否全為字母isdigit()str.isdigit()判斷str是否全為數(shù)字islower()str.islower()判斷str是否全為小寫字母isupper()str.isupper()判斷str是否全為大寫字母第54頁,共61頁?!纠?-27】tr='pythonStringfunction'print(str+".startwith('t')的結(jié)果")print(str.startswith('t'))print(str+".endwith('d')的結(jié)果")print(str.endswith('d'))print(str+".isalnum()的結(jié)果")print(str.isalnum())str='pythonStringfunction'print(str+".isalnum()的結(jié)果")print(str.isalnum())print(str+".isalpha()的結(jié)果")print(str.isalpha())print(str+".isupper()的結(jié)果")print(str.isupper())print(str+".islower()的結(jié)果"

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論