《Python程序設(shè)計基礎(chǔ)》課件-第6章函數(shù)課件_第1頁
《Python程序設(shè)計基礎(chǔ)》課件-第6章函數(shù)課件_第2頁
《Python程序設(shè)計基礎(chǔ)》課件-第6章函數(shù)課件_第3頁
《Python程序設(shè)計基礎(chǔ)》課件-第6章函數(shù)課件_第4頁
《Python程序設(shè)計基礎(chǔ)》課件-第6章函數(shù)課件_第5頁
已閱讀5頁,還剩63頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

目錄CONTENT01020304函數(shù)的基本使用函數(shù)的參數(shù)傳遞遞歸函數(shù)函數(shù)與模塊化設(shè)計05內(nèi)置函數(shù)06綜合實例01函數(shù)的基本使用函數(shù)是指一段可以直接被另一段程序或代碼調(diào)用的程序或代碼。

MORETHENTEMPLATE函數(shù),也叫做子程序,是指一段可以直接被另一段程序或代碼調(diào)用的程序或代碼。大程序由一個主函數(shù)和若干個函數(shù)構(gòu)成。通過函數(shù)的調(diào)用完成整個程序的功能。同一個函數(shù)可以被一個或多個函數(shù)調(diào)用任意多次。浙江財經(jīng)大學(xué)東方學(xué)院信息分院36.1.1函數(shù)的定義

MORETHENTEMPLATE函數(shù)代碼塊以

def

關(guān)鍵詞開頭,后接函數(shù)標(biāo)識符名稱(簡稱函數(shù)名)和圓括號()。任何傳入?yún)?shù)和自變量必須放在圓括號中間。圓括號之間可以用于定義參數(shù)。函數(shù)的第一行語句可以選擇性地使用文檔字符串—用于存放函數(shù)說明。函數(shù)內(nèi)容以冒號起始,并且縮進。return[表達式]

結(jié)束函數(shù),選擇性地返回一個值給調(diào)用方。不帶表達式的return相當(dāng)于返回None。浙江財經(jīng)大學(xué)東方學(xué)院信息分院4函數(shù)的定義規(guī)則def<函數(shù)名>(<參數(shù)列表>):

<函數(shù)體>return<返回值>

MORETHENTEMPLATE函數(shù)名為max的定義,a、b是函數(shù)的兩個輸入?yún)?shù)函數(shù)體的功能是返回a,b兩個參數(shù)中較大那個數(shù)返回值通過return返回。浙江財經(jīng)大學(xué)東方學(xué)院信息分院5函數(shù)實例max定義

MORETHENTEMPLATE函數(shù)的使用必須遵循先定義,后調(diào)用原則沒有事先定義函數(shù),而直接引用函數(shù)名,就相當(dāng)于在引用一個不存在的變量名函數(shù)定義階段,只檢測函數(shù)體的語法,不執(zhí)行函數(shù)體代碼浙江財經(jīng)大學(xué)東方學(xué)院信息分院6函數(shù)定義注意事項

MORETHENTEMPLATE調(diào)用程序在函數(shù)處暫停。實參的值賦值給形參。轉(zhuǎn)到函數(shù)入口處,并執(zhí)行該函數(shù)的函數(shù)體代碼函數(shù)調(diào)用結(jié)束,把函數(shù)的返回值帶到函數(shù)調(diào)用處,程序同時返回到調(diào)用處繼續(xù)執(zhí)行后續(xù)代碼。浙江財經(jīng)大學(xué)東方學(xué)院信息分院76.1.2函數(shù)的調(diào)用過程defmax(a,b):

ifa>b:returnaelse:returnbBignum1=max(1,2)print(bignum1)

MORETHENTEMPLATE主程序執(zhí)行到第1行代碼處暫停把實參1賦值給形參a,實參2賦值給形參b執(zhí)行函數(shù)max的函數(shù)體,函數(shù)執(zhí)行結(jié)束把執(zhí)行結(jié)果2帶回到主程序調(diào)用處,并賦值給變量bignum1此時執(zhí)行完主程序的第1行代碼,接下去繼續(xù)執(zhí)行后續(xù)代碼。浙江財經(jīng)大學(xué)東方學(xué)院信息分院8max函數(shù)的調(diào)用過程defmax(a,b):

ifa>b:returnaelse:returnb#主程序從此開始Bignum1=max(1,2)print(bignum1)浙江財經(jīng)大學(xué)東方學(xué)院信息分院91bignum1=max(1,2)2print(bignum1)3num1=eval(input(“請輸入第1個數(shù)”))4num2=eval(input(“請輸入第2個數(shù)”))5bignum2=max(num1,num2)6print(bignum2)defmax(a,b):ifa>b:returnaelse:returnbdefmax(a,b):ifa>b:returnaelse:returnba=1b=2a=num1b=num2

MORETHENTEMPLATElambda函數(shù),又叫匿名函數(shù),是指不需要聲明的函數(shù)。頻率非常高,使用起來非常靈活、巧妙。一種特殊的函數(shù)定義形式浙江財經(jīng)大學(xué)東方學(xué)院信息分院106.1.3lambda函數(shù)

MORETHENTEMPLATE匿名函數(shù)用關(guān)鍵字lambda定義。冒號前是參數(shù),可以有多個,用逗號隔開。冒號右邊的為表達式,調(diào)用時該表達式計算結(jié)果即為函數(shù)執(zhí)行結(jié)果lambda函數(shù)返回值是一個函數(shù)的地址,也就是函數(shù)對象。浙江財經(jīng)大學(xué)東方學(xué)院信息分院11lambda函數(shù)定義語法lambda[arg1[,arg2,...argn]]:expression

MORETHENTEMPLATE浙江財經(jīng)大學(xué)東方學(xué)院信息分院12lambda函數(shù)示例>>>>>>mysum=lambdax,y:x+y>>>mysum(1,2)3>>>type(mysum)<class'function'>>>>#用函數(shù)定義defmysum(x,y):returnx+y

mysum(1,2)#結(jié)果為3

MORETHENTEMPLATElambda只是一個表達式,函數(shù)體比def簡單很多。lambda的執(zhí)行體是一個表達式,而不是一個代碼塊。lambda函數(shù)擁有自己的命名空間,且不能訪問參數(shù)列表之外的參數(shù)。浙江財經(jīng)大學(xué)東方學(xué)院信息分院13lambda函數(shù)特點02函數(shù)的參數(shù)傳遞函數(shù)可以定義可選參數(shù)、使用參數(shù)的位置或名稱傳遞參數(shù)值,根據(jù)函數(shù)中變量的不同作用域有不同的函數(shù)返回值形式。1,35926778%Python提供了十分靈活參數(shù)傳送方式,允許使用可選參數(shù)和可變參數(shù)。在調(diào)用一個過程時,可以向過程傳送可選的參數(shù)或者任意數(shù)量的參數(shù)。浙江財經(jīng)大學(xué)東方學(xué)院信息分院156.2.1可選參數(shù)和可變數(shù)量參數(shù)可選參數(shù),又稱默認(rèn)參數(shù),是指在函數(shù)定義時聲明了默認(rèn)值的參數(shù),在函數(shù)調(diào)用時可以選擇不指定部分實參,而直接接受其默認(rèn)值。默認(rèn)參數(shù)通過=定義默認(rèn)值浙江財經(jīng)大學(xué)東方學(xué)院信息分院16可選參數(shù)>>>defscale(a,ratio=2):...returna*ratio>>>scale(2)4>>>scale(2,1.1)2.2>>>函數(shù)scale在定義時指定了ratio是一個默認(rèn)參數(shù),默認(rèn)值為2。用scale(2)進行函數(shù)調(diào)用時,只有一個實參2賦值給形參a,ratio默認(rèn)為2,因此結(jié)果為4;用scale(2,1.1)進行函數(shù)調(diào)用時,此時形參ratio也被賦值為1.1,因此結(jié)果為2.2。浙江財經(jīng)大學(xué)東方學(xué)院信息分院17可選參數(shù)示例>>>defscale(a,ratio=2):...returna*ratio>>>scale(2)4>>>scale(2,1.1)2.2>>>在定義函數(shù)時,可以為部分或者全部形參指定默認(rèn)值。有默認(rèn)值的參數(shù)必須放在沒有默認(rèn)值的所有參數(shù)之后。默認(rèn)值必須是確定的常量值。浙江財經(jīng)大學(xué)東方學(xué)院信息分院18可選參數(shù)使用注意點>>>defscale(a,ratio=2):...returna*ratio>>>scale(2)4>>>scale(2,1.1)2.2>>>可變參數(shù),在函數(shù)調(diào)用的時候參數(shù)個數(shù)不一定。適合情形:在函數(shù)定義時無法確定函數(shù)個數(shù)情形,甚至在運行到之前參數(shù)的數(shù)目也是未知的可變參數(shù)通過*指定可變參數(shù)是一個tuple對象浙江財經(jīng)大學(xué)東方學(xué)院信息分院19可變參數(shù)>>>defmysum(a,*b):...s=a;...fornuminb:...s=s+num...returns...>>>mysum(1,2)3>>>mysum(1,2,3)6>>>在示例中,形參b定義成可變參數(shù)。通過mysum(1,2,3)調(diào)用函數(shù)時,實參2,3組合成一個tuple對象再傳遞給b變量。浙江財經(jīng)大學(xué)東方學(xué)院信息分院20可變參數(shù)示例>>>defmysum(a,*b):...s=a;...fornuminb:...s=s+num...returns...>>>mysum(1,2)3>>>mysum(1,2,3)6>>>函數(shù)定義時參數(shù)列表只能有一個可變參數(shù)??勺儏?shù)必須在參數(shù)列表最后位置。浙江財經(jīng)大學(xué)東方學(xué)院信息分院21可變參數(shù)使用注意事項>>>defmysum(a,*b):...s=a;...fornuminb:...s=s+num...returns...>>>mysum(1,2)3>>>mysum(1,2,3)6>>>1,35926778%調(diào)用者和函數(shù)之間對參數(shù)的理解要求一致。Python提供參數(shù)的位置和名稱傳遞。浙江財經(jīng)大學(xué)東方學(xué)院信息分院226.2.2參數(shù)的位置和名稱傳遞實參默認(rèn)是通過從左到右的位置順序傳遞給形參。浙江財經(jīng)大學(xué)東方學(xué)院信息分院23位置傳遞#定義了兩個形參a,bdefmysum(a,b):returna+b#按位置轉(zhuǎn)遞,a=1,b=2mysum(1,2)調(diào)用時指定形參和實參的確定關(guān)系。浙江財經(jīng)大學(xué)東方學(xué)院信息分院24名稱傳遞#定義了兩個形參a,bdefmysum(a,b):returna+b#按名稱轉(zhuǎn)遞,a=1,b=2mysum(b=2,a=1)

03函數(shù)與模塊化設(shè)計模塊化設(shè)計的思路其實就是分而治之的思想,把一個項目,分成不同的模塊。

MORETHENTEMPLATE模塊化設(shè)計的思路分而治之,把一個項目分成不同的模塊。每個模塊完成一個小的功能。模塊化設(shè)計的優(yōu)點減低問題的難度實現(xiàn)分工協(xié)作,提高效率簡化后期維護、管理、移植浙江財經(jīng)大學(xué)東方學(xué)院信息分院26模塊化設(shè)計的思路及優(yōu)點浙江財經(jīng)大學(xué)東方學(xué)院信息分院27模塊化設(shè)計的要求每個模塊會對應(yīng)到一組組函數(shù)上,合理劃分函數(shù)十分重要。模塊化設(shè)計的具體要求:緊內(nèi)聚:盡可能合理劃分功能塊,功能塊內(nèi)部耦合緊密;松耦合:模塊間關(guān)系盡可能簡單,功能塊之間耦合度低。04遞歸函數(shù)遞歸是指在函數(shù)的定義中使用函數(shù)自身的方法遞歸是指在函數(shù)的定義中使用函數(shù)自身的方法。包含了兩個意思:遞:遞歸問題必須可以分解為若干個規(guī)模較小,與原問題形式相同的子問題,這些子問題可以用相同的解題思路來解決;歸:這些問題的演化過程是一個從大到小,由近及遠(yuǎn)的過程,并且會有一個明確的終點(臨界點),一旦到達了這個臨界點,就不用再往更小、更遠(yuǎn)的地方走下去。最后,從這個臨界點開始,原路返回到原點,原問題解決。浙江財經(jīng)大學(xué)東方學(xué)院信息分院296.4.1遞歸的定義浙江財經(jīng)大學(xué)東方學(xué)院信息分院30遞歸示例:斐波拉契數(shù)列觀察一下斐波拉契數(shù)列的規(guī)律:0,1,1,2,3,5,8,13,21,34,55,89……數(shù)列中除了最前面兩個數(shù)為0,1外,第三個數(shù)開始其值是為前面兩個數(shù)的和。實際上這個序列可以給出其遞歸的定義;浙江財經(jīng)大學(xué)東方學(xué)院信息分院31斐波拉契數(shù)列遞歸函數(shù)實現(xiàn)deffib(x):

ifx<2:return0ifx==0else1

returnfib(x-1)+fib(x-2)#當(dāng)x>2時,開始遞歸調(diào)用fib()函數(shù)print(fib(4))浙江財經(jīng)大學(xué)東方學(xué)院信息分院321x=0#輸入4deffib(x):ifx<2:return0ifx==0else1returnfib(x-1)+fib(x-2)#遞:調(diào)用fib(3)和fib(2)#歸:結(jié)果為3#輸入3deffib(x):ifx<2:return0ifx==0else1returnfib(x-1)+fib(x-2)#遞:調(diào)用fib(2)和fib(1)#歸:結(jié)果為2#輸入2deffib(x):ifx<2:return0ifx==0else1returnfib(x-1)+fib(x-2)#遞:調(diào)用fib(1)和fib(0)#歸:結(jié)果為1#輸入1deffib(x):ifx<2:return0ifx==0else1returnfib(x-1)+fib(x-2)#遞:無需#歸:結(jié)果為1#輸入0deffib(x):ifx<2:return0ifx==0else1returnfib(x-1)+fib(x-2)#遞:無需#歸:結(jié)果為0x=3x=2x=2x=1011x=11205內(nèi)置函數(shù)Python原始安裝后解釋器中自帶安裝的函數(shù)叫內(nèi)置函數(shù),這些函數(shù)基本都是使用頻率比較頻繁或者元操作根據(jù)內(nèi)置函數(shù)其操作的對象和運算的類型不同,可以把Python內(nèi)置函數(shù)分為數(shù)學(xué)運算(當(dāng)然除了加減乘除)、邏輯操作、集合操作、基本IO操作,反射操作,字符串操作等。浙江財經(jīng)大學(xué)東方學(xué)院信息分院34內(nèi)置函數(shù)浙江財經(jīng)大學(xué)東方學(xué)院信息分院35數(shù)據(jù)運算類內(nèi)置函數(shù)函數(shù)功能介紹要求abs(x)返回數(shù)的絕對值①參數(shù)可以是整型,也可以是復(fù)數(shù)②若參數(shù)是負(fù)數(shù),則返回負(fù)數(shù)的模掌握complex([real[,imag]])創(chuàng)建一個復(fù)數(shù)掌握divmod(a,b)分別取商和余數(shù)注意:整型、浮點型都可以掌握float([x])將一個字符串或數(shù)轉(zhuǎn)換為浮點數(shù)。如果無參數(shù)將返回0.0掌握int([x[,base]])

將一個字符轉(zhuǎn)換為int類型,base表示進制掌握long([x[,base]])

將一個字符轉(zhuǎn)換為long類型pow(x,y[,z])

返回x的y次冪掌握range([start],stop[,step])

產(chǎn)生一個序列,默認(rèn)從0開始掌握round(x[,n])

四舍五入掌握sum(iterable[,start])

對集合求和掌握oct(x)將一個數(shù)字轉(zhuǎn)化為8進制掌握hex(x)將整數(shù)x轉(zhuǎn)換為16進制字符串掌握chr(i)返回整數(shù)i對應(yīng)的ASCII字符掌握bin(x)將整數(shù)x轉(zhuǎn)換為二進制字符串掌握bool([x])將x轉(zhuǎn)換為Boolean類型掌握浙江財經(jīng)大學(xué)東方學(xué)院信息分院36集合操作類內(nèi)置函數(shù)函數(shù)功能介紹要求basestring()str和unicode的超類

不能直接調(diào)用,可以用作isinstance判斷format(value[,format_spec])格式化輸出字符串格式化的參數(shù)順序從0開始,如“Iam{0},Ilike{1}”unichr(i)返回給定int類型的unicodeenumerate(sequence[,start=0])返回一個可枚舉的對象,該對象的next()方法將返回一個tupleiter(o[,sentinel])生成一個對象的迭代器,第二個參數(shù)表示分隔符max(iterable[,args...][key])

返回集合中的最大值掌握min(iterable[,args...][key])返回集合中的最小值掌握dict([arg])創(chuàng)建數(shù)據(jù)字典掌握list([iterable])

將一個集合類轉(zhuǎn)換為另外一個集合類掌握浙江財經(jīng)大學(xué)東方學(xué)院信息分院37集合操作類內(nèi)置函數(shù)續(xù)函數(shù)功能介紹要求set()set對象實例化掌握frozenset([iterable])產(chǎn)生一個不可變的setstr([object])

轉(zhuǎn)換為string類型sorted(iterable[,cmp[,key[,reverse]]])

隊集合排序掌握tuple([iterable])

生成一個tuple類型xrange([start],stop[,step])

xrange()函數(shù)與range()類似,但xrnage()并不創(chuàng)建列表,而是返回一個xrange對象,它的行為與列表相似,但是只在需要時才計算列表值,當(dāng)列表很大時,這個特性能為我們節(jié)省內(nèi)存浙江財經(jīng)大學(xué)東方學(xué)院信息分院38邏輯判斷類內(nèi)置函數(shù)函數(shù)功能介紹要求all(iterable)如果可迭代對象中的所有項均為true,則返回True掌握any(iterable)如果可迭代對象中的任何項為true,則返回True。掌握cmp(x,y)如果x<y,返回負(fù)數(shù);x==y,返回0;x>y,返回正數(shù)浙江財經(jīng)大學(xué)東方學(xué)院信息分院39反射類內(nèi)置函數(shù)函數(shù)功能介紹要求callable(object)檢查對象object是否可調(diào)用①類是可以被調(diào)用的②實例是不可以被調(diào)用的,除非類中聲明了__call__方法classmethod()把方法轉(zhuǎn)換為類方法。compile(source,filename,mode[,flags[,dont_inherit]])將source編譯為代碼對象。代碼對象能夠通過exec語句來執(zhí)行或者eval()進行求值。①參數(shù)source:字符串或者AST(AbstractSyntaxTrees)對象。②參數(shù)filename:代碼文件名稱,如果不是從文件讀取代碼則傳遞一些可辨認(rèn)的值。③參數(shù)model:指定編譯代碼的種類??梢灾付椤甧xec’,’eval’,’single’。④參數(shù)flag和dont_inherit:這兩個參數(shù)暫不介紹dir([object])返回指定對象的屬性和方法的列表。①不帶參數(shù)時,返回當(dāng)前范圍內(nèi)的變量、方法和定義的類型列表;②帶參數(shù)時,返回參數(shù)的屬性、方法列表。delattr(object,name)刪除object對象名為name的屬性浙江財經(jīng)大學(xué)東方學(xué)院信息分院40反射類內(nèi)置函數(shù)續(xù)一函數(shù)功能介紹要求eval(expression[,globals[,locals]])計算表達式expression的值execfile(filename[,globals[,locals]])用法類似exec(),不同的是execfile的參數(shù)filename為文件名,而exec的參數(shù)為字符串。filter(function,iterable)使用過濾器函數(shù)排除可迭代對象中的數(shù)據(jù)項。等價于[itemforiteminiterableiffunction(item)]getattr(object,name[,defalut])獲取一個類的屬性globals()返回一個描述當(dāng)前全局符號表的字典hasattr(object,name)判斷對象object是否包含名為name的特性hash(object)如果對象object為哈希表類型,返回對象object的哈希值掌握id(object)返回對象的唯一標(biāo)識掌握isinstance(object,classinfo)判斷object是否是class的實例浙江財經(jīng)大學(xué)東方學(xué)院信息分院41反射類內(nèi)置函數(shù)續(xù)二函數(shù)功能介紹要求issubclass(class,classinfo)判斷是否是子類len(s)

返回集合長度掌握locals()

返回當(dāng)前的變量列表map(function,iterable,...)

遍歷每個元素,執(zhí)行function操作memoryview(obj)

返回一個內(nèi)存鏡像類型的對象next(iterator[,default])

返回可迭代對象中的下一項object()

基類property([fget[,fset[,fdel[,doc]]]])

獲取、設(shè)置、刪除屬性。浙江財經(jīng)大學(xué)東方學(xué)院信息分院42反射類內(nèi)置函數(shù)續(xù)三函數(shù)功能介紹要求reduce(function,iterable[,initializer])

合并操作,從第一個開始是前兩個參數(shù),然后是前兩個的結(jié)果與第三個合并進行處理,以此類推reload(module)

重新加載模塊setattr(object,name,value)設(shè)置屬性值repr(object)

將一個對象變幻為可打印的格式slice(start,end,slide)創(chuàng)建slice對象用于切片staticmethod把方法轉(zhuǎn)換為靜態(tài)方法。super(type[,object-or-type])

返回表示父類的對象。type(object)返回該object的類型vars([object])

返回對象的變量,若無參數(shù)與dict()方法類似浙江財經(jīng)大學(xué)東方學(xué)院信息分院43反射類內(nèi)置函數(shù)續(xù)四函數(shù)功能介紹要求vars([object])

返回對象的變量,若無參數(shù)與dict()方法類似bytearray([source[,encoding[,errors]]])返回一個byte數(shù)組①如果source為整數(shù),則返回一個長度為source的初始化數(shù)組;②如果source為字符串,則按照指定的encoding將字符串轉(zhuǎn)換為字節(jié)序列;③如果source為可迭代類型,則元素必須為[0,255]中的整數(shù);④如果source為與buffer接口一致的對象,則此對象也可以被用于初始化bytearray.zip([iterable,...])

實在是沒有看懂,只是看到了矩陣的變幻方面掌握浙江財經(jīng)大學(xué)東方學(xué)院信息分院44IO操作內(nèi)置函數(shù)函數(shù)功能介紹要求input([prompt])

獲取用戶輸入推薦使用raw_input,因為該函數(shù)將不會捕獲用戶的錯誤輸入掌握open(name[,mode[,buffering]])

打開文件掌握print打印函數(shù)掌握raw_input([prompt])

設(shè)置輸入,輸入都是作為字符串處理浙江財經(jīng)大學(xué)東方學(xué)院信息分院45常用內(nèi)置函數(shù)示例之hash#hash的作用:生成哈希碼,用作比較對象是否一致print(hash('12sdfdsaf3123123sdfasdfasdfasdfasdfasdfasdfasdfasfasfdasdf'))print(hash('12sdfdsaf31231asdfasdfsadfsadfasdfasdf23'))name='alex'print(hash(name))print(hash(name))print('--->before',hash(name))name='sb'print('=-=>after',hash(name))1982976672864959982-2006403263-2006403263--->before-2006403263=-=>after805524431浙江財經(jīng)大學(xué)東方學(xué)院信息分院46常用內(nèi)置函數(shù)示例之zip#ZIP將對象逐一配對print(list(zip(('a','n','c'),(1,2,3))))print(list(zip(('a','n','c'),(1,2,3,4))))print(list(zip(('a','n','c','d'),(1,2,3))))[('a',1),('n',2),('c',3)][('a',1),('n',2),('c',3)][('a',1),('n',2),('c',3)]浙江財經(jīng)大學(xué)東方學(xué)院信息分院47常用內(nèi)置函數(shù)示例之reversed#reversed反轉(zhuǎn)l=[1,2,3,4]print(list(reversed(l)))print(l)[4,3,2,1][1,2,3,4]浙江財經(jīng)大學(xué)東方學(xué)院信息分院48常用內(nèi)置函數(shù)示例之set#set轉(zhuǎn)化為集合print(set('hello')){'l','e','o','h'}浙江財經(jīng)大學(xué)東方學(xué)院信息分院49常用內(nèi)置函數(shù)示例之sortedl=[3,2,1,5,7]print(sorted(l))#排序[1,2,3,5,7]06程序的調(diào)試(函數(shù)的跟蹤進入)函數(shù)相關(guān)的調(diào)試功能stepinto:單步執(zhí)行,遇到子函數(shù)就進入并且繼續(xù)單步執(zhí)行(簡而言之,進入子函數(shù));stepover:在單步執(zhí)行時,在函數(shù)內(nèi)遇到子函數(shù)時不會進入子函數(shù)內(nèi)單步執(zhí)行,而是將子函數(shù)整個執(zhí)行完再停止,也就是把子函數(shù)整個作為一步。stepout:當(dāng)單步執(zhí)行到子函數(shù)內(nèi)時,用stepout就可以執(zhí)行完子函數(shù)余下部分,并返回到上一層函數(shù)。浙江財經(jīng)大學(xué)東方學(xué)院信息分院51內(nèi)置函數(shù)浙江財經(jīng)大學(xué)東方學(xué)院信息分院52浙江財經(jīng)大學(xué)東方學(xué)院信息分院53Stepover現(xiàn)象浙江財經(jīng)大學(xué)東方學(xué)院信息分院54Stepin現(xiàn)象浙江財經(jīng)大學(xué)東方學(xué)院信息分院55Stepout現(xiàn)象07綜合實例采用模塊化編程重新設(shè)計《學(xué)生成績排名系統(tǒng)》項目。浙江財經(jīng)大學(xué)東方學(xué)院信息分院57綜合實例思路根據(jù)功能分析及模塊化設(shè)計的要求,把該項目分解成五個子模塊成績輸入模塊完成全班成績的輸入并保存在列表中;成績排名模塊完成總成績的計算,變按總成績排名,結(jié)果也在列表中;成績統(tǒng)計模塊完成班級成績中每門課的最高分、最低分、平均分的統(tǒng)計;排名輸出模塊,輸出班級成績排名結(jié)果;統(tǒng)計輸出模塊輸出班級成績統(tǒng)計結(jié)果;浙江財經(jīng)大學(xué)東方學(xué)院信息分院58綜合實例思路學(xué)生成績排名系統(tǒng)成績輸入模塊成績排名模塊排名輸出模塊成績統(tǒng)計模塊統(tǒng)計輸出模塊浙江財經(jīng)大學(xué)東方學(xué)院信息分院59綜合實例代碼實現(xiàn)(成績輸入模塊)#輸入班級所有成績,結(jié)果返回成績列表defInputChengJi(): lsCJ=[] whileTrue: line=input() ls=line.split(",") iflen(line)==0: returnlsCJ eliflen(ls)!=5: print("最后一行成績有誤,請重新輸入改行??!") else: ls[2]=eval(ls[2]) ls[3]=eval(ls[3]) ls[4]=eval(ls[4]) lsCJ.append(ls)浙江財經(jīng)大學(xué)東方學(xué)院信息分院60綜合實例代碼實現(xiàn)(成績排名模塊)#輸入成績列表,結(jié)果返回按總成績排序后的成績列表defRankChengJi(lsCJ): forlineinlsCJ: score=line[2]+line[3]+line[4] line.append(score) lsCjRank=lsCJ.copy() lsCjRank.sort(key=lambdax:x[5],reverse=True) returnlsCjRank浙江財經(jīng)大學(xué)東方學(xué)院信息分院61綜合實例代碼實現(xiàn)(排名輸出模塊)#輸入排序后的班級成績列表defOutpuRankChengJi(lsCjRank): heads=["學(xué)號","姓名","操作系統(tǒng)","數(shù)據(jù)結(jié)構(gòu)","數(shù)據(jù)庫原理","排名"] print(heads[0].center(12-len(heads[0]))+heads[1].center(12-len(heads[1]))+\ heads[2].center(12-len(heads[2]))+heads[3].center(12-len(heads[3]))+\ heads[4].center(12-len(heads[4]))+heads[5].center(12-len(heads[5]))) rank=1 forlineinlsCjRank: print(line[0].center(12)+line[1].center(12-len(line[1]))+\str(line[2]).center(12)+str(line[3]).center(12)+\str(line[4]).center(12,"")+str(rank).center(12,"")) rank=rank+1浙江財經(jīng)大學(xué)東方學(xué)院信息分院62綜合實例代碼實現(xiàn)(成績輸入模塊)#輸入班級所有成績,結(jié)果返回成績列表defInputChengJi(): lsCJ=[] whileTrue: line=input() ls=line.split(",") iflen(line)==0: returnlsCJ eliflen(ls)!=5: print("最后一行成績有誤,請重新輸入改行?。?) else: ls[2]=eval(ls[2]) ls[3]=eval(ls[3]) ls[4]=eval(ls[4]) lsCJ.append(ls)浙江財經(jīng)大學(xué)東方學(xué)院信息分院63綜合實例代碼實現(xiàn)(成績輸入模塊)#輸入班

溫馨提示

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

評論

0/150

提交評論