yhon程序的控制結(jié)構(gòu)_第1頁(yè)
yhon程序的控制結(jié)構(gòu)_第2頁(yè)
yhon程序的控制結(jié)構(gòu)_第3頁(yè)
yhon程序的控制結(jié)構(gòu)_第4頁(yè)
yhon程序的控制結(jié)構(gòu)_第5頁(yè)
已閱讀5頁(yè),還剩60頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

Python語(yǔ)言程序設(shè)計(jì)第4章

程序的控制結(jié)構(gòu)程序的基本結(jié)構(gòu)程序的流程圖程序流程圖用一系列圖形、流程線和文字說(shuō)明描述程序的基本操作和控制流程,它是程序分析和過(guò)程描述的最基本方式。流程圖的基本元素包括7種程序的流程圖程序流程圖示例:由連接點(diǎn)A連接的一個(gè)程序

程序的基本結(jié)構(gòu)順序結(jié)構(gòu)是程序的基礎(chǔ),但單一的順序結(jié)構(gòu)不可能解決所有問(wèn)題。程序由三種基本結(jié)構(gòu)組成:順序結(jié)構(gòu)分支結(jié)構(gòu)循環(huán)結(jié)構(gòu)這些基本結(jié)構(gòu)都有一個(gè)入口和一個(gè)出口。任何程序都由這三種基本結(jié)構(gòu)組合而成程序的基本結(jié)構(gòu)順序結(jié)構(gòu)是程序按照線性順序依次執(zhí)行的一種運(yùn)行方式,其中語(yǔ)句塊1S1和語(yǔ)句塊S2表示一個(gè)或一組順序執(zhí)行的語(yǔ)句程序的基本結(jié)構(gòu)分支結(jié)構(gòu)是程序根據(jù)條件判斷結(jié)果而選擇不同向前執(zhí)行路徑的一種運(yùn)行方式,包括單分支結(jié)構(gòu)和二分支結(jié)構(gòu)。由二分支結(jié)構(gòu)會(huì)組合形成多分支結(jié)構(gòu)程序的基本結(jié)構(gòu)循環(huán)結(jié)構(gòu)是程序根據(jù)條件判斷結(jié)果向后反復(fù)執(zhí)行的一種運(yùn)行方式,根據(jù)循環(huán)體觸發(fā)條件不同,包括條件循環(huán)和遍歷循環(huán)結(jié)構(gòu)程序的基本結(jié)構(gòu)實(shí)例對(duì)于一個(gè)計(jì)算問(wèn)題,可以用IPO描述、流程圖描述或者直接以Python代碼方式描述微實(shí)例4.1:圓面積和周長(zhǎng)的計(jì)算。輸入:圓半徑R處理:圓面積:S=π*R*R圓周長(zhǎng):L=2*π*R輸出:圓面積S、周長(zhǎng)L

1234R=eval(input("請(qǐng)輸入圓半徑:"))S=3.1415*R*RL=2*3.1415*Rprint("面積和周長(zhǎng):",S,L)問(wèn)題IPO描述

Python代碼描述

程序序的的基基本本結(jié)結(jié)構(gòu)構(gòu)實(shí)實(shí)例例微實(shí)實(shí)例例4.2:實(shí)實(shí)數(shù)數(shù)絕絕對(duì)對(duì)值值的的計(jì)計(jì)算算。。1234R=eval(input("輸入實(shí)數(shù):"))if(R<0):R=-Rprint("絕對(duì)值",R)(a)問(wèn)題題IPO描述述(b)流程程圖圖描描述述(c)Python代碼碼描描述述程序序的的基基本本結(jié)結(jié)構(gòu)構(gòu)實(shí)實(shí)例例微實(shí)實(shí)例例4.3:整整數(shù)數(shù)累累加加。。輸入入::正正整整數(shù)數(shù)R處理理::S=1+2+3+……+R輸出出::輸輸出出S123456R=eval(input("請(qǐng)輸入正整數(shù):"))i,S=0,0while(i<=R):S=S+ii=i+1print("累加求和",S)(a)問(wèn)題題IPO描述述(b)流程程圖圖描描述述(c)Python代碼碼描描述述程序序的的基基本本結(jié)結(jié)構(gòu)構(gòu)實(shí)實(shí)例例IPO描描述述主主要要用用于于區(qū)區(qū)分分程程序序的的輸輸入入輸輸出出關(guān)關(guān)系系,,重重點(diǎn)點(diǎn)在在于于結(jié)結(jié)構(gòu)構(gòu)劃劃分分,算法法主要要采采用用自自然然語(yǔ)語(yǔ)言言描描述述流程程圖圖描描述述側(cè)側(cè)重重于于描描述述算算法法的的具具體體流流程程關(guān)關(guān)系系,,流流程程圖圖的的結(jié)結(jié)構(gòu)構(gòu)化化關(guān)關(guān)系系相相比比自自然然語(yǔ)語(yǔ)言言描描述述更更進(jìn)進(jìn)一一步步,,有有助助于于闡闡述述算算法法的的具具體體操操作作過(guò)過(guò)程程Python代碼碼描描述述是是最最終終的的程程序序產(chǎn)產(chǎn)出出,,最最為為細(xì)細(xì)致致。。程序序的的分分支支結(jié)結(jié)構(gòu)構(gòu)單分分支支結(jié)結(jié)構(gòu)構(gòu):if語(yǔ)句句Python中if語(yǔ)句句的的語(yǔ)語(yǔ)法法格格式式如如下下::if<條件件>:語(yǔ)句句塊塊語(yǔ)句句塊塊是是if條件件滿(mǎn)滿(mǎn)足足后后執(zhí)執(zhí)行行的的一一個(gè)個(gè)或或多多個(gè)個(gè)語(yǔ)語(yǔ)句句序序列列語(yǔ)句句塊塊中中語(yǔ)語(yǔ)句句通通過(guò)過(guò)與與if所在在行行形形成成縮縮進(jìn)進(jìn)表表達(dá)達(dá)包包含含關(guān)關(guān)系系if語(yǔ)句句首首先先評(píng)評(píng)估估<條件件>的結(jié)結(jié)果果值值,,如如果果結(jié)結(jié)果果為為T(mén)rue,則則執(zhí)執(zhí)行行語(yǔ)語(yǔ)句句塊塊里里的的語(yǔ)語(yǔ)句句序序列列,,然然后后控控制制轉(zhuǎn)轉(zhuǎn)向向程程序序的的下下一一條條語(yǔ)語(yǔ)句句。。如如果果結(jié)結(jié)果果為為False,語(yǔ)語(yǔ)句句塊塊里里的的語(yǔ)語(yǔ)句句會(huì)會(huì)被被跳跳過(guò)過(guò)。。布爾爾類(lèi)類(lèi)型型(bool)TrueFlasebool函數(shù)數(shù):bool(2)>>>A=1>2>>>type(A)數(shù)字字非非零零為為T(mén)rue字符符串串為為T(mén)rue,空字符符串為False關(guān)系運(yùn)算算符if語(yǔ)中<條件>部分可以以使用任任何能夠夠產(chǎn)生True或False的語(yǔ)句形成判斷斷條件最最常見(jiàn)的的方式是是采用關(guān)關(guān)系操作作符Python語(yǔ)言共有有6個(gè)關(guān)系操操作符操作符數(shù)學(xué)符號(hào)操作符含義<

<

小于<=≤小于等于>=≥大于等于>

>

大于===等于!=不等于邏輯操作作符(notandor)優(yōu)先級(jí)是是not>and>or邏輯操作作符and和or也稱(chēng)作短短路操作作符(short-circuitlogic):它們們的參數(shù)數(shù)從左向向右解析析,一旦旦結(jié)果可可以確定定就停止止。例如如,如果果A和C為真而B(niǎo)為假,AandBandC不會(huì)解析析C3and4,4and33or4(3),4or3(4)單分支結(jié)結(jié)構(gòu):if語(yǔ)句if語(yǔ)句的控控制流程程圖if語(yǔ)句中語(yǔ)語(yǔ)句塊執(zhí)執(zhí)行與否否依賴(lài)于于條件判判斷。但但無(wú)論什什么情況況,控制制都會(huì)轉(zhuǎn)轉(zhuǎn)到if語(yǔ)句后與與該語(yǔ)句句同級(jí)別別的下一一條語(yǔ)句句單分支結(jié)結(jié)構(gòu):if語(yǔ)句微實(shí)例4.4:PM2.5空氣質(zhì)量量提醒((1)輸入:接接收外部部輸入PM2.5值處理:ifPM2.5值>=75,打印空空氣污染染警告if35<=PM2.5值<75,打印空空氣污染染警告ifPM2.5值<35,打印空空氣質(zhì)量量?jī)?yōu),建建議戶(hù)外外運(yùn)動(dòng)輸出:打打印空氣氣質(zhì)量提提醒微實(shí)例4.4m4.4PM25Warning.py

1234567PM=eval(input("請(qǐng)輸入PM2.5數(shù)值:"))if0<=PM<35:print("空氣優(yōu)質(zhì),快去戶(hù)外運(yùn)動(dòng)!")if35<=PM<75:print("空氣良好,適度戶(hù)外活動(dòng)!")if75<=PM:print("空氣污染,請(qǐng)小心!")

二分支結(jié)構(gòu)構(gòu):if-else語(yǔ)句Python中if-else語(yǔ)句用來(lái)來(lái)形成二二分支結(jié)結(jié)構(gòu),語(yǔ)語(yǔ)法格式式如下::if<條件>:<語(yǔ)句塊1>else:<語(yǔ)句塊2><語(yǔ)句塊塊1>是是在if條件滿(mǎn)滿(mǎn)足后執(zhí)執(zhí)行的一一個(gè)或多多個(gè)語(yǔ)句句序列<語(yǔ)句塊塊2>是是if條條件不滿(mǎn)滿(mǎn)足后執(zhí)執(zhí)行的語(yǔ)語(yǔ)句序列列二分支語(yǔ)語(yǔ)句用于于區(qū)分<條件>的兩種種可能True或者False,分分別形成成執(zhí)行路路徑二分支結(jié)構(gòu)構(gòu):if-else語(yǔ)句微實(shí)例4.5:PM2.5空氣質(zhì)量量提醒((2)微實(shí)例4.5m4.5PM25Warning.py

12345PM=eval(input("請(qǐng)輸入PM2.5數(shù)值:"))ifPM>=75:print("空氣存在污染,請(qǐng)小心!")else:

print("空氣沒(méi)有污染,可以開(kāi)展戶(hù)外運(yùn)動(dòng)!")

二分支結(jié)構(gòu)構(gòu):if-else語(yǔ)句二分支結(jié)結(jié)構(gòu)還有有一種更更簡(jiǎn)潔的的表達(dá)方方式,適適合通過(guò)過(guò)判斷返返回特定定值,語(yǔ)語(yǔ)法格式式如下::<表達(dá)式1>if<條件>else<表達(dá)式2>

12PM=eval(input("請(qǐng)輸入PM2.5數(shù)值:"))print("空氣{}污染!".format("存在"ifPM>=75else"沒(méi)有"))

二分支結(jié)構(gòu)構(gòu):if-else語(yǔ)句>>>count=2>>>countifcount!=0else"不存在"2>>>count=0>>>countifcount!=0else"不存在""不存在"if…else的緊湊湊結(jié)構(gòu)非非常適合合對(duì)特殊殊值處理理的情況況,如下下:多分支結(jié)結(jié)構(gòu):if-elif-else語(yǔ)句Python的的if-elif-else描述多多分支結(jié)結(jié)構(gòu),語(yǔ)語(yǔ)句格式式如下:if<條件1>:<語(yǔ)句塊1>elif<條件2>:<語(yǔ)句塊2>...else:<語(yǔ)句塊N>多分支結(jié)結(jié)構(gòu):if-elif-else語(yǔ)句多分支結(jié)結(jié)構(gòu)是二二分支結(jié)結(jié)構(gòu)的擴(kuò)擴(kuò)展,這這種形式式通常用用于設(shè)置置同一個(gè)個(gè)判斷條條件的多多條執(zhí)行行路徑。。Python依依次評(píng)估估尋找第第一個(gè)結(jié)結(jié)果為T(mén)rue的條件件,執(zhí)行行該條件件下的語(yǔ)語(yǔ)句塊,,同時(shí)結(jié)束后跳過(guò)整個(gè)個(gè)if-elif-else結(jié)構(gòu),執(zhí)執(zhí)行后面面的語(yǔ)句句。如果果沒(méi)有任任何條件件成立,,else下面的語(yǔ)語(yǔ)句塊被被執(zhí)行。。else子句是可可選的多分支結(jié)結(jié)構(gòu):if-elif-else語(yǔ)句微實(shí)例4.4通過(guò)多條條獨(dú)立的的if語(yǔ)句對(duì)同同一個(gè)變變量PM進(jìn)行判斷斷,這種種情況更更適合多多分支結(jié)結(jié)構(gòu),改改造后的的代碼如如下

1234567PM=eval(input("請(qǐng)輸入PM2.5數(shù)值:"))if0<=PM<35:print("空氣優(yōu)質(zhì),快去戶(hù)外運(yùn)動(dòng)!")elif35<=PM<75:print("空氣良好,適度戶(hù)外活動(dòng)!")else:print("空氣污染,請(qǐng)小心!")

身體質(zhì)量量指數(shù)BMIBMI的的定義如如下:BMI=體重(kg)÷身高2(m2)例如,一一個(gè)人身身高1.75米、體重重75公斤,他他的BMI值為24.49身體質(zhì)量量指數(shù)BMI分類(lèi)國(guó)際BMI值(kg/m2)國(guó)內(nèi)BMI值(kg/m2)偏瘦<18.5<18.5正常18.5~2518.5~24偏胖25~3024~28肥胖>=30>=28編寫(xiě)一個(gè)個(gè)根據(jù)體體重和身身高計(jì)算算BMI值的程程序,并并同時(shí)輸輸出國(guó)際際和國(guó)內(nèi)內(nèi)的BMI指標(biāo)標(biāo)建議值值身體質(zhì)量量指數(shù)BMI實(shí)例代碼5.1e5.1CalBMI.py

12

345678910111213141516171819202122#e5.1CalBMI.pyheight,weight=eval(input("請(qǐng)輸入身高(米)和體重\(公斤)[逗號(hào)隔開(kāi)]:"))bmi=weight/pow(height,2)print("BMI數(shù)值為:{:.2f}".format(bmi))wto,dom="",""ifbmi<18.5:#WTO標(biāo)準(zhǔn)wto="偏瘦"elifbmi<25:#18.5<=bmi<25wto="正常"elifbmi<30:#25<=bmi<30wto="偏胖"else:wto="肥胖"ifbmi<18.5:#我國(guó)衛(wèi)生部標(biāo)準(zhǔn)dom="偏瘦"elifbmi<24:#18.5<=bmi<24dom="正常"elifbmi<28:#24<=bmi<28dom="偏胖"else:dom="肥胖"print("BMI指標(biāo)為:國(guó)際'{0}',國(guó)內(nèi)'{1}'".format(wto,dom))

>>>

請(qǐng)輸入身高(米)和體重(公斤)[逗號(hào)隔開(kāi)]:1.75,75BMI數(shù)值為:24.49BMI指標(biāo)為:國(guó)際'正常',國(guó)內(nèi)'偏胖'實(shí)例代碼5.2e5.2CalBMI.py

12

3456789101112131415161718#e5.2CalBMI.pyheight,weight=eval(input("請(qǐng)輸入身高(米)和體重\(公斤)[逗號(hào)隔開(kāi)]:"))bmi=weight/pow(height,2)print("BMI數(shù)值為:{:.2f}".format(bmi))wto,dom="",""ifbmi<18.5:wto,dom="偏瘦","偏瘦"elif18.5<=bmi<24:wto,dom="正常","正常"elif24<=bmi<25:wto,dom="正常","偏胖"elif25<=bmi<28:wto,dom="偏胖","偏胖"elif28<=bmi<30:wto,dom="偏胖","肥胖"else:wto,dom="肥胖","肥胖"print("BMI指標(biāo)為:國(guó)際'{0}',國(guó)內(nèi)'{1}'".format(wto,dom))

程序的循循環(huán)結(jié)構(gòu)構(gòu)遍歷循環(huán)環(huán):for語(yǔ)句遍歷循環(huán)環(huán):根據(jù)循環(huán)環(huán)執(zhí)行次次數(shù)的確確定性,,循環(huán)可可以分為為確定次次數(shù)循環(huán)環(huán)和非確確定次數(shù)數(shù)循環(huán)。。確定次次數(shù)循環(huán)環(huán)指循環(huán)環(huán)體對(duì)循循環(huán)次數(shù)數(shù)有明確確的定義義循環(huán)次次數(shù)采用用遍歷結(jié)結(jié)構(gòu)中元元素個(gè)數(shù)數(shù)來(lái)體現(xiàn)現(xiàn)Python通通過(guò)保留留字for實(shí)現(xiàn)現(xiàn)“遍歷循環(huán)環(huán)”:for<循環(huán)變量量>in<遍歷結(jié)構(gòu)構(gòu)>:<語(yǔ)句塊>遍歷循環(huán)環(huán):for語(yǔ)句遍歷結(jié)構(gòu)構(gòu)可以是是字符串串、文件件、組合合數(shù)據(jù)類(lèi)類(lèi)型或range()函數(shù):循環(huán)N次foriinrange(N):<語(yǔ)句塊>遍歷文件fi的每一行forlineinfi:<語(yǔ)句塊>遍歷字符串sforcins:<語(yǔ)句塊>遍歷列表lsforiteminls:<語(yǔ)句塊>遍歷循環(huán)環(huán)還有一一種擴(kuò)展展模式,,使用方方法如下下:for<循環(huán)變量量>in<遍歷結(jié)構(gòu)構(gòu)>:<語(yǔ)句塊1>else:<語(yǔ)句塊2>遍歷循環(huán)環(huán):for語(yǔ)句當(dāng)for循環(huán)正正常執(zhí)行行之后,,程序會(huì)會(huì)繼續(xù)執(zhí)執(zhí)行else語(yǔ)語(yǔ)句中內(nèi)內(nèi)容。else語(yǔ)句只只在循環(huán)環(huán)正常執(zhí)執(zhí)行之后后才執(zhí)行行并結(jié)束,因此,可可以在<語(yǔ)句塊2>中放置判判斷循環(huán)環(huán)執(zhí)行情情況的語(yǔ)語(yǔ)句。

12345forsin"BIT":print("循環(huán)進(jìn)行中:"+s)else:s="循環(huán)正常結(jié)束"print(s)

>>>

循環(huán)進(jìn)行中:B循環(huán)進(jìn)行中:I循環(huán)進(jìn)行中:T循環(huán)正常結(jié)束無(wú)限循環(huán)環(huán):while語(yǔ)句無(wú)限循環(huán)環(huán):無(wú)限循環(huán)環(huán)一直保保持循環(huán)環(huán)操作直直到特定循環(huán)條件不被滿(mǎn)足才結(jié)結(jié)束,不不需要提提前知道確定循環(huán)次數(shù)數(shù)。Python通通過(guò)保留留字while實(shí)現(xiàn)無(wú)無(wú)限循環(huán)環(huán),使用用方法如如下:while<條件>:<語(yǔ)句塊>語(yǔ)句塊無(wú)限循環(huán)環(huán):while語(yǔ)句無(wú)限循環(huán)環(huán)也有一一種使用用保留字字else的擴(kuò)展模模式:while<條件>:<語(yǔ)句塊1>else:<語(yǔ)句塊2>

1234567s,idx="BIT",0whileidx<len(s):print("循環(huán)進(jìn)行中:"+s[idx])idx+=1else:s="循環(huán)正常結(jié)束"print(s)

>>>

循環(huán)進(jìn)行中:B循環(huán)進(jìn)行中:I循環(huán)進(jìn)行中:T循環(huán)正常結(jié)束循環(huán)保留留字:break和continue循環(huán)結(jié)構(gòu)構(gòu)有兩個(gè)個(gè)輔助保留字::break和continue,它們用用來(lái)輔助助控制循循環(huán)執(zhí)行行break用來(lái)跳出出最內(nèi)層層for或while循環(huán),脫脫離該循循環(huán)后程序從循循環(huán)后代代嗎繼續(xù)續(xù)執(zhí)行

12345forsin"BIT":foriinrange(10):print(s,end="")ifs=="I":break

>>>

BBBBBBBBBBITTTTTTTTTT其中,break語(yǔ)句跳出出了最內(nèi)內(nèi)層for循環(huán),但但仍然繼繼續(xù)執(zhí)行行外層循循環(huán)。每每個(gè)break語(yǔ)句只有有能力跳跳出當(dāng)前前層次循循環(huán)循環(huán)保留留字:break和continuecontinue用來(lái)結(jié)束束當(dāng)前當(dāng)當(dāng)次循環(huán)環(huán),即跳跳出循環(huán)環(huán)體中下下面尚未未執(zhí)行的的語(yǔ)句,,但不跳跳出當(dāng)前前循環(huán)。。對(duì)于while循環(huán),繼繼續(xù)求解解循環(huán)條條件。而而對(duì)于for循環(huán),程程序流程程接著遍遍歷循環(huán)環(huán)列表對(duì)比continue和break語(yǔ)句,如如下

1234forsin"PYTHON":ifs=="T":continueprint(s,end="")

1234forsin"PYTHON":ifs=="T":breakprint(s,end="")

>>>

PYHON>>>

PY循環(huán)保保留字字:break和continuecontinue語(yǔ)句和和break語(yǔ)句的的區(qū)別別是::continue語(yǔ)句只只結(jié)束束本次次循環(huán)環(huán),而而不終終止整整個(gè)循循環(huán)的的執(zhí)行行。break語(yǔ)句則則是結(jié)結(jié)束整整個(gè)循循環(huán)過(guò)過(guò)程,,不再再判斷斷執(zhí)行行循環(huán)環(huán)的條條件是是否成成立

1234forsin"PYTHON":ifs=="T":continueprint(s,end="")

1234forsin"PYTHON":ifs=="T":breakprint(s,end="")

>>>

PYHON>>>

PY循環(huán)保保留字字:break和continuefor循環(huán)環(huán)和while循環(huán)環(huán)中都都存在在一個(gè)個(gè)else擴(kuò)展展用法法。else中中的語(yǔ)語(yǔ)句塊塊只在在一種種條件件下執(zhí)執(zhí)行,,即for循環(huán)環(huán)正常常遍歷了所有有內(nèi)容容沒(méi)有有因?yàn)闉閎reak或return而退出出。continue保留字字對(duì)else沒(méi)有影影響。??聪孪旅鎯蓛蓚€(gè)例例子

123456forsin"PYTHON":ifs=="T":continueprint(s,end="")else:print("正常退出")

123456forsin"PYTHON":ifs=="T":breakprint(s,end="")else:print("正常退出")

>>>

PYHON正常退出>>>

PYrandom庫(kù)的使使用random庫(kù)概述述隨機(jī)數(shù)數(shù)在計(jì)計(jì)算機(jī)機(jī)應(yīng)用用中十十分常常見(jiàn),,Python內(nèi)置置的random庫(kù)庫(kù)主要要用于于產(chǎn)生生各種種分布布的偽偽隨機(jī)機(jī)數(shù)序序列。。random庫(kù)采采用梅梅森旋旋轉(zhuǎn)算算法((Mersennetwister)生成成偽隨隨機(jī)數(shù)數(shù)序列列,可可用于于除隨隨機(jī)性性要求求更高高的加加解密密算法法外的的大多多數(shù)工工程應(yīng)應(yīng)用。。使用random庫(kù)主要要目的的是生生成隨隨機(jī)數(shù)數(shù),因因此,,讀者者只需需要查查閱該該庫(kù)的的隨機(jī)機(jī)數(shù)生生成函函數(shù),,找到到符合合使用用場(chǎng)景景的函函數(shù)使使用即即可。。這個(gè)個(gè)庫(kù)提提供了了不同同類(lèi)型型的隨隨機(jī)數(shù)數(shù)函數(shù)數(shù),所所有函函數(shù)都都是基基于最最基本本的random.random()函數(shù)擴(kuò)擴(kuò)展而而來(lái)。。random庫(kù)解析析函數(shù)描述seed(a=None)初始化隨機(jī)數(shù)種子,默認(rèn)值為當(dāng)前系統(tǒng)時(shí)間random()生成一個(gè)[0.0,1.0)之間的隨機(jī)小數(shù)randint(a,b)生成一個(gè)[a,b]之間的整數(shù)getrandbits(k)生成一個(gè)k比特長(zhǎng)度的隨機(jī)整數(shù)randrange(start,stop[,step])生成一個(gè)[start,stop)之間以step為步數(shù)的隨機(jī)整數(shù)uniform(a,b)生成一個(gè)[a,b]之間的隨機(jī)小數(shù)choice(seq)從序列類(lèi)型(例如:列表)中隨機(jī)返回一個(gè)元素shuffle(seq)將序列類(lèi)型中元素隨機(jī)排列,返回打亂后的序列sample(pop,k)從pop類(lèi)型中隨機(jī)選取k個(gè)元素,以列表類(lèi)型返回random庫(kù)解析析對(duì)random庫(kù)的的引用用方法法與math庫(kù)庫(kù)一樣樣,采采用下下面兩兩種方方式實(shí)實(shí)現(xiàn)::importrandom或fromrandomimport*>>>fromrandomimport*>>>random()0.2922089114412476>>>uniform(1,10)1.5913082783598524>>>uniform(1,20)7>>>randrange(0,100,4)#從0開(kāi)始到100以4遞增的元素中隨機(jī)返回96>>>choice(range(100))97>>>ls=list(range(10))>>>print(ls)[0,1,2,3,4,5,6,7,8,9]>>>shuffle(ls)>>>print(ls)[5,8,4,7,6,9,3,0,2,10,1,2,3,4,5,6,7,8,9]random庫(kù)解析析生成隨隨機(jī)數(shù)數(shù)之前前可以以通過(guò)過(guò)seed()函數(shù)指指定隨隨機(jī)數(shù)數(shù)種子子,隨隨機(jī)種種子一一般是是一個(gè)個(gè)整數(shù)數(shù),只只要種種子相相同,,每次次生成成的隨隨機(jī)數(shù)數(shù)序列列也相相同。。這種種情況況便于于測(cè)試試和同同步數(shù)數(shù)據(jù)>>>seed(125)#隨機(jī)種子賦值125>>>"{}.{}.{}".format(randint(1,10),randint(1,10),randint(1,10))'4.4.10'>>>"{}.{}.{}".format(randint(1,10),randint(1,10),randint(1,10))'5.10.3'>>>seed(125)#再次給隨機(jī)種子賦值125>>>"{}.{}.{}".format(randint(1,10),randint(1,10),randint(1,10))'4.4.10'π的計(jì)算算π的計(jì)算算π(圓圓周率率)是是一個(gè)個(gè)無(wú)理理數(shù),,即無(wú)無(wú)限不不循環(huán)環(huán)小數(shù)數(shù)。精精確求求解圓圓周率率π是是幾何何學(xué)、、物理理學(xué)和和很多多工程程學(xué)科科的關(guān)關(guān)鍵。。對(duì)π的精確確求解解曾經(jīng)是數(shù)學(xué)學(xué)歷史史上一一直難難以解解決的的問(wèn)題題之一一,因因?yàn)棣袩o(wú)法用用任何何精確確公式式表示示,在在電子子計(jì)算算機(jī)出出現(xiàn)以以前,,π只能通通過(guò)一一些近近似公公式的的求解解得到到,直直到1948年,人人類(lèi)才才以人人工計(jì)計(jì)算方方式得得到π的808位精確確小數(shù)數(shù)。π的計(jì)算算隨著計(jì)計(jì)算機(jī)機(jī)的出出現(xiàn),,數(shù)學(xué)學(xué)家找找到了了另類(lèi)求解π的另類(lèi)方法::蒙特卡卡羅((MonteCarlo)方法法,又又稱(chēng)隨隨機(jī)抽抽樣或或統(tǒng)計(jì)計(jì)試驗(yàn)驗(yàn)方法法。當(dāng)當(dāng)所要要求解解的問(wèn)問(wèn)題是是某種種事件件出現(xiàn)現(xiàn)的概概率,,或者者是某某個(gè)隨隨機(jī)變變量的的期望望值時(shí)時(shí),它它們可可以通通過(guò)某某種“試驗(yàn)”的方法法,得得到這這種事事件出出現(xiàn)的的頻率率,或或者這這個(gè)隨隨機(jī)變變數(shù)的的平均均值,,并用用它們們作為為問(wèn)題題的解解。這這就是蒙特特卡羅羅方法法的基基本思思想。。π的計(jì)算算應(yīng)用蒙蒙特卡卡羅方方法求求解ππ的基基本步步驟如如下::隨機(jī)向向單位正正方形形和圓圓結(jié)構(gòu)構(gòu),拋灑大大量“飛鏢”點(diǎn)計(jì)算每每個(gè)點(diǎn)點(diǎn)到圓圓心的的距離離從而而判斷斷該點(diǎn)點(diǎn)在圓圓內(nèi)或或者圓圓外用圓內(nèi)內(nèi)的點(diǎn)點(diǎn)數(shù)除除以總總點(diǎn)數(shù)數(shù)就是是π/4值。隨機(jī)點(diǎn)點(diǎn)數(shù)量量越大大,越越充分分覆蓋蓋整個(gè)個(gè)圖形形,計(jì)計(jì)算得得到的的π值越精確。。實(shí)際上,,這個(gè)方法法的思想是是利用離散散點(diǎn)值表示示圖形的面面積,通過(guò)過(guò)面積比例例來(lái)求解π值。π的計(jì)算計(jì)算π使用的正方方形和圓結(jié)結(jié)構(gòu)計(jì)算π使用的1/4區(qū)域和拋點(diǎn)點(diǎn)過(guò)程π的計(jì)算實(shí)例代碼6.1e6.1CalPi.py

123456789101112131415#e6.1CalPi.pyfromrandomimportrandomfrommathimportsqrtfromtimeimportclockDARTS=10000hits=0.0clock()foriinrange(1,DARTS+1):x,y=random(),random()dist=sqrt(x**2+y**2)ifdist<=1.0:hits=hits+1pi=4*(hits/DARTS)print("Pi值是{}.".format(pi))print("運(yùn)行時(shí)間是:{:5.5}s".format(clock()))

>>>

Pi值是3.144.運(yùn)行時(shí)間是:0.016477sπ的計(jì)算DARTSπ運(yùn)行時(shí)間2103.1093750.011s2113.1386710.012s2123.1503900.014s2133.1435540.018s2143.1413570.030s2153.1478270.049s2163.1419670.116s2183.1445770.363s2203255s2253.141697883640.13s不同拋點(diǎn)數(shù)數(shù)產(chǎn)生的精精度和運(yùn)行行時(shí)間異常處理機(jī)機(jī)制異常處理:try-except語(yǔ)句

12num=eval(input("請(qǐng)輸入一個(gè)整數(shù):"))print(num**2)

觀察下面這這段小程序序:當(dāng)用戶(hù)輸入入的不是數(shù)數(shù)字呢?>>>

請(qǐng)輸入一個(gè)整數(shù):10010000>>>

請(qǐng)輸入一個(gè)整數(shù):NOTraceback(mostrecentcalllast):File"D:/PythonPL/echoInt.py",line1,in<module>num=eval(input("請(qǐng)輸入一個(gè)整數(shù):"))File"<string>",line1,in<module>NameError:name'No'isnotdefined異常處理:try-except語(yǔ)句(接管錯(cuò)誤)Python解釋器器返回了異異常信息,,同時(shí)程序序退出異常處理:try-except語(yǔ)句Python異常信信息中最重重要的部分分是異常類(lèi)類(lèi)型,它表表明了發(fā)生生異常的原原因,也是是程序處理理異常的依依據(jù)。Python使用try-except語(yǔ)句實(shí)現(xiàn)異異常處理,,基本的語(yǔ)語(yǔ)法格式如如下:try:<語(yǔ)句塊1>except<異常類(lèi)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論