版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
3.1算法概述第三章程序流程控制of311算法是指為解決問(wèn)題而采取的方法和步驟。算法的要素有以下兩部分:(1)對(duì)數(shù)據(jù)對(duì)象的運(yùn)算和操作。(2)算法的控制結(jié)構(gòu)(運(yùn)算和操作時(shí)間的順序):順序結(jié)構(gòu),循環(huán)結(jié)構(gòu),選擇結(jié)構(gòu)。其中順序結(jié)構(gòu)是最簡(jiǎn)單也最常用的結(jié)構(gòu),它的執(zhí)行順序是自上而下,依次執(zhí)行。其余兩種結(jié)構(gòu)接下來(lái)會(huì)介紹。3.1.1算法及其要素和特性3.1算法概述of312算法的特征有如下幾方面。有窮性:算法的有窮性是指算法必須能夠在執(zhí)行有限步之后停止;確切性:算法的每一步都要有確切的定義;輸入項(xiàng):一個(gè)算法要有0個(gè)或多個(gè)輸入項(xiàng),用來(lái)反映問(wèn)題的原始狀態(tài),如果是0個(gè)輸入項(xiàng),則是算法自己有初始條件;輸出項(xiàng):算法都有輸出項(xiàng),可以是一個(gè)也可以是多個(gè)輸出項(xiàng)。用來(lái)反映對(duì)數(shù)據(jù)加工處理后的結(jié)果;可行性:即算法的每個(gè)步驟都能在有限時(shí)間內(nèi)完成。因?yàn)橛?jì)算機(jī)的運(yùn)算速度并不是無(wú)限快的,所以在設(shè)計(jì)算法時(shí)一定要注意時(shí)間資源,同樣,存儲(chǔ)器的空間也是有限的,所以在設(shè)計(jì)算法時(shí)一定要盡可能地節(jié)約時(shí)間和空間兩方面的開(kāi)銷(xiāo)。3.1.1算法及其要素和特性第三章程序流程控制3.1算法概述of3131.用自然語(yǔ)言表示該方法就是直接用自然語(yǔ)言描述算法。一般除了很簡(jiǎn)單的問(wèn)題,不用自然語(yǔ)言表示。2.用流程圖表示流程圖可以很直觀地表現(xiàn)出算法的過(guò)程,易于理解。流程圖主要由圖3.1所示的4種框加上流程線組合而成。3.1.2算法表示方法圖3.1流程圖的部件第三章程序流程控制3.1算法概述of314圖3.2描述判斷輸入的年份是否為閏年的流程。3.1.2算法表示方法圖3.2判斷年份是否為閏年的流程圖第三章程序流程控制3.1算法概述of3153.用偽代碼表示偽代碼是一種用來(lái)書(shū)寫(xiě)程序或描述算法時(shí)使用的非正式、透明的表述方法。偽代碼通常采用自然語(yǔ)言、數(shù)學(xué)公式和符號(hào)相結(jié)合來(lái)描述算法的操作步驟,同時(shí)采用計(jì)算機(jī)高級(jí)語(yǔ)言的控制結(jié)構(gòu)來(lái)描述算法步驟的執(zhí)行。只要自己或者別人能看懂即可。下面看一個(gè)例子:用偽代碼表示求一個(gè)列表中最大元素值的算法。3.1.2算法表示方法第三章程序流程控制3.1算法概述of316MaxElement(a_list:list)#求一個(gè)列表中的最大元素#a_list:list代表輸入的數(shù)據(jù)是一個(gè)list類(lèi)型。(關(guān)于list會(huì)在后面詳細(xì)講解)#輸出,a_list中的最大元素max_element=a_list[0]fori1tolen(a_list)–1do iflist[i]>max_element max_element=list[i]returnmax_element這里只是舉一個(gè)例子,實(shí)際上,在Python中,如果要求一個(gè)列表的最大元素值,并不需要這么麻煩,只需要調(diào)用Python的內(nèi)置函數(shù)max即可。當(dāng)然算法的表示方法還有很多種,在這里只是選取了比較常用的3種進(jìn)行講解。3.1.2算法表示方法第三章程序流程控制編寫(xiě)程序到軟件工程師的職責(zé)of3171.負(fù)責(zé)項(xiàng)目組開(kāi)發(fā)或設(shè)計(jì)工作,能夠按要求、高質(zhì)量地完成開(kāi)發(fā)或設(shè)計(jì)任務(wù);
2.熟練掌握分析設(shè)計(jì)工具,按照規(guī)范的要求,編寫(xiě)設(shè)計(jì)文檔;
3.按照設(shè)計(jì)功能,實(shí)現(xiàn)模塊的代碼編寫(xiě)和維護(hù);
4.按照公司的規(guī)范進(jìn)行編碼,并對(duì)開(kāi)發(fā)的代碼進(jìn)行單元測(cè)試;
5.負(fù)責(zé)項(xiàng)目開(kāi)發(fā)過(guò)程中的技術(shù)攻關(guān)及運(yùn)行中出現(xiàn)的技術(shù)問(wèn)題。程序員編寫(xiě)程序要解決問(wèn)題,明辨是非,服務(wù)于國(guó)家、社會(huì)和人民,要具有良好的道德素養(yǎng)→社會(huì)主義核心價(jià)值觀做“四有”新人:要講政治、有信念,政治合格;要講規(guī)矩、有紀(jì)律,執(zhí)行紀(jì)律合格;要講道德、有品行,品德合格;要講奉獻(xiàn)、有作為,發(fā)揮作用合格第三章程序流程控制軟件工程師良好的道德素養(yǎng)of318原則1:公眾軟件工程師的行為應(yīng)與公眾利益一致原則2:客戶與雇主軟件工程師應(yīng)以他們的客戶和雇主最大利益化的方式做事,與公眾利益一致。原則3:產(chǎn)品軟件工程師應(yīng)當(dāng)確保他們的產(chǎn)品以及相關(guān)的修改達(dá)到盡可能高的專業(yè)標(biāo)準(zhǔn)。原則4:判斷軟件工程師應(yīng)當(dāng)完整獨(dú)立地進(jìn)行自己的專業(yè)判斷原則5
管理軟件項(xiàng)目的經(jīng)理和領(lǐng)導(dǎo)人員應(yīng)贊成和促進(jìn)對(duì)軟件開(kāi)發(fā)和維護(hù)合乎道德規(guī)范的管理原則6
職業(yè)在與公眾利益一致的原則下,軟件工程師應(yīng)當(dāng)保證其職業(yè)的完整和聲譽(yù)原則7:同事軟件工程師應(yīng)當(dāng)正直地去幫助他們的同事原則8:自身軟件工程師的行為都應(yīng)該從自身規(guī)范起,從而延伸到行業(yè)、乃至社會(huì)和未來(lái),成為一個(gè)對(duì)代碼構(gòu)建世界有偉大貢獻(xiàn),對(duì)社會(huì)進(jìn)步有卓越奉獻(xiàn)的人。第三章程序流程控制軟件工程師道德素養(yǎng)之反面案例of319華夏銀行盜竊案華夏銀行科技發(fā)展中心的前員工,其工作職責(zé)包括技術(shù)需求分析、功能規(guī)范編譯、設(shè)計(jì)、開(kāi)發(fā)、單元測(cè)試、集成測(cè)試等,其將一個(gè)計(jì)算機(jī)病毒程序植入華夏銀行總部的核心系統(tǒng),阻止跨銀行ATM取款交易被包括在賬戶中,然后成功地將717.9萬(wàn)元存入自己的賬戶結(jié)果被判處有期徒刑10年6個(gè)月,罰金人民幣11000元,剝奪政治權(quán)利2年郵政局信息被倒賣(mài)某程序員利用開(kāi)發(fā)國(guó)家郵政局安監(jiān)三期項(xiàng)目數(shù)據(jù)庫(kù)之便,非法獲取該數(shù)據(jù)庫(kù)內(nèi)公民個(gè)人信息15萬(wàn)余條,并將1萬(wàn)余條公民個(gè)人信息倒賣(mài)他人,非法獲利785元,同時(shí)非法獲取其他信息400余萬(wàn)條結(jié)果被判非法獲取公民個(gè)人信息罪,判處有期徒刑一年,緩刑一年,并處罰金一萬(wàn)元阿里巴巴月餅事件2016年在阿里內(nèi)部展開(kāi)的中秋搶月餅活動(dòng)中,四名程序員使用腳本,多刷了124盒月餅結(jié)果有多個(gè)相關(guān)涉事人員被開(kāi)除第三章程序流程控制軟件工程師道德素養(yǎng)之史上著名的后門(mén)of3110BackOrifice后門(mén)。這是史上第一個(gè)后門(mén),也是它使得人們開(kāi)始意識(shí)到后門(mén)存在的可能性。BackOrifice可以讓運(yùn)行Windows的計(jì)算機(jī)能夠被遠(yuǎn)程操控。NSA“特定訪問(wèn)操作(TAO)”硬件后門(mén)。根據(jù)斯諾登提供的資料,NSA的“特定訪問(wèn)操作”項(xiàng)目就是NSA一個(gè)試圖通過(guò)在硬件中植入后門(mén)的項(xiàng)目。除了在網(wǎng)絡(luò)設(shè)備固件中加入后門(mén),NSA還在不同的PC甚至PC附件如硬盤(pán)中加入了監(jiān)控程序。Windows_NSAKEY后門(mén)。_NSAKEY的變量是一個(gè)1024位的公鑰,人們懷疑微軟為NSA提供了一些形式的后門(mén),使得NSA能夠訪問(wèn)Windows的一些加密數(shù)據(jù)甚至操作Windows本身。雙橢圓曲線后門(mén)。又是NSA,雙橢圓曲線后門(mén)可能是最隱蔽的后門(mén)了。通過(guò)一個(gè)在密碼學(xué)中常用的隨機(jī)數(shù)發(fā)生算法植入后門(mén)。理論上,Dual_EC_DRBG(雙橢圓確定性隨機(jī)數(shù)生成器)是NIST制定的一個(gè)標(biāo)準(zhǔn),這里面存在一個(gè)很隱蔽的缺陷使得攻擊者能夠解密數(shù)據(jù)。在斯諾登揭密之后,人們才知道這個(gè)后門(mén)的存在,也知道了NSA通過(guò)干預(yù)標(biāo)準(zhǔn)的制定來(lái)達(dá)到在算法中植入后門(mén)的方式。美國(guó)國(guó)家安全局(NationalSecurityAgency,NSA)是美國(guó)政府機(jī)構(gòu)中最大的情報(bào)部門(mén)第三章程序流程控制3.2順序結(jié)構(gòu)3.1算法概述3.3選擇結(jié)構(gòu)3.4循環(huán)結(jié)構(gòu)of5611第三章程序流程控制3.2順序結(jié)構(gòu)of3112順序結(jié)構(gòu)是結(jié)構(gòu)化程序設(shè)計(jì)中的基本結(jié)構(gòu),在該結(jié)構(gòu)中,各語(yǔ)句或語(yǔ)句組按照出現(xiàn)的先后順序依次執(zhí)行,如圖3.3所示。在選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)中,順序結(jié)構(gòu)也是組成部分。圖3.3順序結(jié)構(gòu)流程圖3.2.1順序結(jié)構(gòu)第三章程序流程控制3.2順序結(jié)構(gòu)of3113【例3.1】輸入3個(gè)數(shù),計(jì)算這三個(gè)數(shù)的平均值。a=float(input(“請(qǐng)輸入a的值:”))b=float(input(“請(qǐng)輸入b的值:”))c=float(input(“請(qǐng)輸入c的值:”))f=(a+b+c)/3print(str.format(“三個(gè)數(shù)的平均值為:{:.2f}”,f))遵守規(guī)則,不插隊(duì),開(kāi)車(chē)、結(jié)賬排隊(duì)時(shí)都要按順序進(jìn)行;3.2.1順序結(jié)構(gòu)第三章程序流程控制3.3選擇結(jié)構(gòu)3.2順序結(jié)構(gòu)3.1算法概述3.4循環(huán)結(jié)構(gòu)of5614第三章程序流程控制3.3選擇結(jié)構(gòu)of3115用if語(yǔ)句可以構(gòu)成選擇結(jié)構(gòu)。它根據(jù)給定的條件進(jìn)行判斷,以決定執(zhí)行某個(gè)分支程序段。Python的if語(yǔ)句有三種基本形式。該結(jié)構(gòu)形式為:
if條件:執(zhí)行的操作1
執(zhí)行的操作2其流程圖如圖3.4所示。
3.3.1if選擇結(jié)構(gòu)圖3.4單分支選擇結(jié)構(gòu)流程圖第三章程序流程控制3.3選擇結(jié)構(gòu)of3116該結(jié)構(gòu)的意思是,如果條件為真則執(zhí)行操作1和操作2。除了False(包括表達(dá)式的值為False),none,各種數(shù)字的類(lèi)型的0以及空的序列和空的字典外,其余的都可以看成條件為真。需要注意的是,Python中如果后面的語(yǔ)句需要縮進(jìn),那么在該行代碼末尾需要加冒號(hào)。由選擇結(jié)構(gòu)程序設(shè)計(jì)可知,凡事都要考慮周全,尊重事實(shí),合理選擇;一切從實(shí)際出發(fā),實(shí)事求是;人的一生也面臨很多選擇,要慎重選擇并承擔(dān)抉擇之后帶來(lái)的后果,不要患得患失,要養(yǎng)成良好的邏輯性。在生活中“魚(yú)和熊掌不可兼得”,千萬(wàn)不要做違背良心的事情,不要做有背社會(huì)公德的事情;抗擊新冠病毒疫情期間,國(guó)家審時(shí)度勢(shì),科學(xué)規(guī)劃,依據(jù)實(shí)際情況劃分高風(fēng)險(xiǎn)區(qū)、中風(fēng)險(xiǎn)區(qū)和低風(fēng)險(xiǎn)區(qū),不同類(lèi)型區(qū)域采取有針對(duì)性的防范策略,最大化各方效率。3.3.1if選擇結(jié)構(gòu)第三章程序流程控制3.3選擇結(jié)構(gòu)of3117b=input()a=int(b)ifa%2==0:print('%d是偶數(shù)'%a)在上述例子中,如果想這個(gè)數(shù)在不是偶數(shù)的時(shí)候也將結(jié)果打印出來(lái),就需要用到if…else結(jié)構(gòu),如下所示。當(dāng)條件為真時(shí),執(zhí)行條件語(yǔ)句下的嵌套語(yǔ)句,否則的話執(zhí)行else部分。b=input()#輸入一個(gè)數(shù)a=int(b)#將輸入轉(zhuǎn)換成ifa%2==0:print('%d是偶數(shù)'%a)else:print('%d不是偶數(shù)'%a)可以看出if…else的語(yǔ)句結(jié)構(gòu)為:if條件:
操作1else:操作2
3.3.1if選擇結(jié)構(gòu)第三章程序流程控制3.3選擇結(jié)構(gòu)of3118其流程圖如圖3.5所示。
3.3.1if選擇結(jié)構(gòu)圖3.5雙分支選擇結(jié)構(gòu)流程圖即當(dāng)滿足條件時(shí),執(zhí)行操作1,條件不滿足時(shí),執(zhí)行操作2。一個(gè)if只能和一個(gè)else搭配。第三章程序流程控制3.3選擇結(jié)構(gòu)of3119但有時(shí)候,所需要的結(jié)果不是一次選擇能得到的,可能需要多次判斷,這就需要用到if…elif…else結(jié)構(gòu)了。if條件1:操作1elif條件2:操作2else:操作3其流程圖如圖3.6所示。
3.3.1if選擇結(jié)構(gòu)圖3.6多分支選擇結(jié)構(gòu)流程圖第三章程序流程控制3.3選擇結(jié)構(gòu)of3120在if…elif…else結(jié)構(gòu)中,可以有多個(gè)elif語(yǔ)句,但只能有一個(gè)else語(yǔ)句,當(dāng)所有的條件都為假時(shí),才執(zhí)行else部分。下面用一個(gè)例子說(shuō)明下?!纠?.3】判斷輸入的年份是否為閏年。str_year=input()#輸入年份year=int(str_year)#將字符串轉(zhuǎn)換成數(shù)字ifyear%400==0:print("%d是閏年"%year)elifyear%4==0andyear%100!=0:print("%d是閏年"%year)else:print("%d不是閏年"%year)與C等語(yǔ)言不同的是,Python中沒(méi)有switch和case語(yǔ)句。但是Python可以用一系列的if、elif和else語(yǔ)句來(lái)達(dá)到相同的效果。
3.3.1if選擇結(jié)構(gòu)第三章程序流程控制3.3選擇結(jié)構(gòu)of3121當(dāng)if語(yǔ)句的操作語(yǔ)句中還有if語(yǔ)句時(shí)就構(gòu)成了選擇結(jié)構(gòu)的嵌套,就像下面這樣:if條件1:if選擇結(jié)構(gòu)elif條件2:if選擇結(jié)構(gòu)else:
if選擇結(jié)構(gòu)但是在使用選擇結(jié)構(gòu)的嵌套時(shí),要注意if和else的搭配,一對(duì)if和else一定要對(duì)齊。
3.3.2選擇結(jié)構(gòu)的嵌套第三章程序流程控制3.3選擇結(jié)構(gòu)of3122【例3.4】判斷一個(gè)輸入的數(shù)是否是偶數(shù)且能被3整除。a=input()#輸入一個(gè)數(shù)字b=int(a)#轉(zhuǎn)換成數(shù)字類(lèi)型ifb%2==0:ifb%3==0:print("該數(shù)是偶數(shù)且能被3整除")else:print("該數(shù)是偶數(shù)但不能被3整除")else:ifb%3==0:print("該數(shù)不是偶數(shù)但能被3整除")else:print("該數(shù)不是偶數(shù)且不能被3整除")
3.3.2選擇結(jié)構(gòu)的嵌套第三章程序流程控制3.4循環(huán)結(jié)構(gòu)3.2順序結(jié)構(gòu)3.3選擇結(jié)構(gòu)3.1算法概述of5623第三章程序流程控制3.4循環(huán)結(jié)構(gòu)of3124有時(shí)候想讓同一個(gè)指令重復(fù)執(zhí)行多次,比如打印數(shù)字1~10:print(1)print(2)….print(10)這樣的笨辦法看起來(lái)好像也還能接受,那如果打印數(shù)字1~10000呢,這時(shí)候再用這種方法就不合適了,為了避免這種笨重的代碼,就需要用到循環(huán)結(jié)構(gòu),接下來(lái)介紹幾種循環(huán)結(jié)構(gòu)。此外,還會(huì)介紹幾種在循環(huán)中常用的的內(nèi)置函數(shù)。
第三章程序流程控制3.4循環(huán)結(jié)構(gòu)of3125【例3.5】用while循環(huán)結(jié)構(gòu)打印數(shù)字1到10。x=1whilex<=10:print(x)x+=1是不是和之前的代碼比起來(lái),簡(jiǎn)潔了很多。while循環(huán)結(jié)構(gòu)的一般形式為:while表達(dá)式:操作語(yǔ)句
3.4.1while循環(huán)結(jié)構(gòu)第三章程序流程控制3.4循環(huán)結(jié)構(gòu)of3126其流程圖如圖3.7所示。其中,表達(dá)式是循環(huán)條件,操作語(yǔ)句為循環(huán)體。條件為真時(shí)執(zhí)行循環(huán)體內(nèi)操作,當(dāng)執(zhí)行外一次操作后,再對(duì)條件進(jìn)行判斷,如果條件繼續(xù)為真,則繼續(xù)執(zhí)行循環(huán)體,然后再判斷條件,直到條件為假退出while循環(huán)。簡(jiǎn)而言之,只要頂端的表達(dá)式為真,就會(huì)重復(fù)執(zhí)行語(yǔ)句塊。如果表達(dá)式一開(kāi)始就為假,則循環(huán)體語(yǔ)句塊不會(huì)執(zhí)行。注意表達(dá)式后面是有冒號(hào)的。前面提到了,后面代碼需要縮進(jìn)的都需要以冒號(hào)結(jié)尾。
3.4.1while循環(huán)結(jié)構(gòu)圖3.7while循環(huán)結(jié)構(gòu)流程圖第三章程序流程控制3.4循環(huán)結(jié)構(gòu)of3127當(dāng)想執(zhí)行一個(gè)無(wú)限循環(huán)操作時(shí),可以用whileTrue:,這樣條件就能一直為真了?!纠?.6】無(wú)限循環(huán)例子。>>>whileTrue: print('python')pythonpythonpythonpythonpython…循環(huán)條件可以是任意的對(duì)象,因?yàn)榍懊嬉呀?jīng)介紹過(guò)了,在Python中,所有的對(duì)象都有對(duì)應(yīng)的bool值。3.4.1while循環(huán)結(jié)構(gòu)第三章程序流程控制3.4循環(huán)結(jié)構(gòu)of3128用while循環(huán)結(jié)構(gòu)已經(jīng)可以實(shí)現(xiàn)很多循環(huán)了,但如果想遍歷一個(gè)序列中的元素時(shí)(關(guān)于序列會(huì)在后面的章節(jié)中講到,這里可以把它理解成一個(gè)集合)就可以使用for循環(huán)結(jié)構(gòu)。for循環(huán)結(jié)構(gòu)的一般格式為:forxinobject:語(yǔ)句塊其流程圖如圖3.8所示。3.4.2for循環(huán)結(jié)構(gòu)圖3.8for循環(huán)結(jié)構(gòu)流程圖第三章程序流程控制3.4循環(huán)結(jié)構(gòu)of3129其中,x是定義的一個(gè)用來(lái)賦值的變量,object是要遍歷的對(duì)象。for循環(huán)結(jié)構(gòu)執(zhí)行時(shí),會(huì)逐個(gè)將序列對(duì)象中的值賦給x,就可以在語(yǔ)句塊中對(duì)x進(jìn)行操作。X的作用域只zaifor語(yǔ)句里(作用域后面會(huì)講到),可以在循環(huán)主體中對(duì)x進(jìn)行修改。但當(dāng)回到循環(huán)頂端時(shí),又會(huì)被自己賦值成下一個(gè)元素。下面用一個(gè)例子來(lái)說(shuō)明一下?!纠?.7】用for循環(huán)將數(shù)字1~5打印出來(lái)。>>>forxinrange(1,6):...print(x)...123453.4.2for循環(huán)結(jié)構(gòu)第三章程序流程控制3.4循環(huán)結(jié)構(gòu)of3130當(dāng)需要遍歷某個(gè)序列對(duì)象時(shí),應(yīng)優(yōu)先選用for循環(huán)結(jié)構(gòu)。當(dāng)把表達(dá)式的值作為循環(huán)條件時(shí)應(yīng)當(dāng)選用while循環(huán)。如果不需要每個(gè)元素都訪問(wèn)或者想要改變列表的值,這時(shí)候也應(yīng)該選用while循環(huán)。Python的內(nèi)置函數(shù)enumerate()來(lái)實(shí)現(xiàn)遍歷元素,它多用于在for循環(huán)中得到計(jì)數(shù)。對(duì)于一個(gè)可迭代的對(duì)象,enumerate()將其組成一個(gè)索引序列,利用它可以同時(shí)獲得索引和值。enumerate()返回的是一個(gè)enumerate對(duì)象。>>>list_a=['a','b','c','d']>>>print(type(enumerate(list_a)))<class'enumerate'>3.4.2for循環(huán)結(jié)構(gòu)第三章程序流程控制3.4循環(huán)結(jié)構(gòu)of3131【例3.8】enumerate()的用法。>>>list_a=['a','b','c','d']>>>forindex,datainenumerate(list_a): print(index,data)0a1b2c3d>>>需要注意的是,for循環(huán)只是把序列中的對(duì)象的值賦給了另一個(gè)對(duì)象x,也就是說(shuō)對(duì)x的值進(jìn)行的操作不會(huì)影響序列中對(duì)象的值,除非直接對(duì)序列進(jìn)行操作。3.4.2for循環(huán)結(jié)構(gòu)第三章程序流程控制3.4循環(huán)結(jié)構(gòu)of3132>>>list_a=['a','b','c','d']>>>fordatainlist_a: data='d' print(data)dddd>>>print(list_a)['a','b','c','d']>>>foriinrange(len(list_a)):list_a[i]='d'>>>print(list_a)['d','d','d','d']>>>3.4.2for循環(huán)結(jié)構(gòu)第三章程序流程控制3.4循環(huán)結(jié)構(gòu)of3133任何序列都適用于for循環(huán),上面已經(jīng)看到了for循環(huán)可以用于列表,此外還可以用于字符串,元組等,甚至字典和文件都可以用for循環(huán)。【例3.9】for循環(huán)用于字符串。>>>string='helloworld'>>>foriinstring: print(i)helloworld>>>3.4.2for循環(huán)結(jié)構(gòu)第三章程序流程控制3.4循環(huán)結(jié)構(gòu)of3134break和continue語(yǔ)句需要嵌套在循環(huán)結(jié)構(gòu)中才能起作用。break語(yǔ)句用來(lái)跳出所在的最近的一個(gè)循環(huán)結(jié)構(gòu),而continue語(yǔ)句則是跳到所在的最近的循環(huán)結(jié)構(gòu)的首行即開(kāi)頭處重新判斷條件。下面是兩個(gè)例子?!纠?.10】打印數(shù)字0~5。>>>x=0>>>whileTrue:...ifx>5:...break...print(x,end='')...x+=1...012345在這里雖然用了whileTrue是一個(gè)無(wú)限循環(huán),但因?yàn)楫?dāng)x>5后,break語(yǔ)句執(zhí)行,跳出了這個(gè)無(wú)限循環(huán)。3.4.3break和continue語(yǔ)句第三章程序流程控制3.4循環(huán)結(jié)構(gòu)of3135【例3.11】打印數(shù)字0~5中除了3之外的數(shù)。>>>forxinrange(6):...ifx==3:...continue...print(x,end='')...01245可以發(fā)現(xiàn)在continue語(yǔ)句執(zhí)行后,直接跳到了循環(huán)的開(kāi)頭,進(jìn)行下一次操作。而沒(méi)有執(zhí)行print語(yǔ)句。3.4.3break和continue語(yǔ)句第三章程序流程控制3.4循環(huán)結(jié)構(gòu)of3136循環(huán)里的else語(yǔ)句是在循環(huán)正常結(jié)束時(shí)才執(zhí)行的,非正常結(jié)束即通過(guò)break語(yǔ)句結(jié)束循環(huán)?!纠?.12】判斷輸入的一個(gè)數(shù)是否為素?cái)?shù)。importmathnum=int(input('輸入一個(gè)正整數(shù),判斷是否是素?cái)?shù):'))ifnum<0:print("輸入非法")elifnum==1:print("%d既不是素?cái)?shù)也不是合數(shù)"%num)else::foriinrange(2,int(math.sqrt(num))+1):#math.sqrt(x)是求x的開(kāi)方值
ifnum%i==0:print("%d不是素?cái)?shù)"%num)breakelse:print("%d是素?cái)?shù)"%num)3.4.4else語(yǔ)句第三章程序流程控制3.4循環(huán)結(jié)構(gòu)of3137當(dāng)循環(huán)正常結(jié)束時(shí),說(shuō)明輸入的數(shù),除了1和此整數(shù)自身外,沒(méi)法被其他自然數(shù)整除,所以是一個(gè)素?cái)?shù),就需要執(zhí)行else語(yǔ)塊,而當(dāng)通過(guò)break跳出循環(huán)時(shí)就說(shuō)明不是素?cái)?shù),也就不需要執(zhí)行else語(yǔ)塊了。循環(huán)else語(yǔ)句和哪一個(gè)while或for循環(huán)搭配就要與只保持相同的縮進(jìn)。如果在else語(yǔ)句之前有多個(gè)循環(huán)結(jié)構(gòu)且都與else語(yǔ)句縮進(jìn)相同,那么else語(yǔ)句便是與在它前面且離它最近那一個(gè)循環(huán)結(jié)構(gòu)搭配。這里出現(xiàn)了一個(gè)import語(yǔ)句,是來(lái)導(dǎo)入Python的包,后面章節(jié)會(huì)講到。如果循環(huán)沒(méi)有被執(zhí)行過(guò),循環(huán)else語(yǔ)句也會(huì)執(zhí)行,因?yàn)闆](méi)有執(zhí)行過(guò)break語(yǔ)句。當(dāng)首行條件一開(kāi)始就為假時(shí)就會(huì)出現(xiàn)這種情況。如果想在一個(gè)序列中搜索某一個(gè)元素也可以使用循環(huán)else語(yǔ)句。3.4.4else語(yǔ)句第三章程序流程控制3.4循環(huán)結(jié)構(gòu)of3138list_a=['a','b','c','d','e']forindex,chinenumerate(list_a):ifch=='f':print(index)breakelse:print('未找到')3.4.4else語(yǔ)句第三章程序流程控制3.4循環(huán)結(jié)構(gòu)of3139pass語(yǔ)句是無(wú)運(yùn)算的占位語(yǔ)句,當(dāng)語(yǔ)法需要語(yǔ)句但又沒(méi)有實(shí)用的語(yǔ)句可以寫(xiě)時(shí),就可以用pass語(yǔ)句占位。例如,想要一個(gè)無(wú)限循環(huán),但每次迭代時(shí)又什么都不做,就可以在循環(huán)體內(nèi)用pass語(yǔ)句。當(dāng)在定義函數(shù)時(shí),可以先用pass語(yǔ)句填充函數(shù)體。待以后再用真正的函數(shù)體代替pass語(yǔ)句。因?yàn)闊o(wú)法使函數(shù)體為空而不產(chǎn)生語(yǔ)法錯(cuò)誤,就只能先用pass代替。此外,如果想忽略try語(yǔ)句捕獲的異常,也可以使用pass語(yǔ)句,至于異常會(huì)在后面講到。3.4.5pass語(yǔ)句第三章程序流程控制3.4循環(huán)結(jié)構(gòu)of3140就像選擇結(jié)構(gòu)可以嵌套一樣,循環(huán)結(jié)構(gòu)也可以進(jìn)行嵌套,可以
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《診斷學(xué)胸部評(píng)估》課件
- 2024年黑龍江省《消防員資格證之一級(jí)防火考試》必刷500題標(biāo)準(zhǔn)卷
- 中級(jí)微觀經(jīng)濟(jì)學(xué)范里安課件ch
- 2024年高考生物必修全部和選修1基礎(chǔ)知識(shí)清單(以問(wèn)題串形式呈現(xiàn))含答案
- 單位管理制度集粹匯編【人事管理】十篇
- 《盆景制作與欣賞》課件
- 單位管理制度匯編大合集【人力資源管理篇】
- 高中語(yǔ)文文言文閱讀部分
- 單位管理制度范例選集【職工管理】十篇
- 單位管理制度范例合集【人員管理】十篇
- 2024年蘇州市軌道交通集團(tuán)有限公司招聘筆試參考題庫(kù)附帶答案詳解
- 2024年1月電大國(guó)家開(kāi)放大學(xué)期末試題及答案:農(nóng)村政策法規(guī)
- (高清版)DZT 0261-2014 滑坡崩塌泥石流災(zāi)害調(diào)查規(guī)范(1:50000)
- 2024年中職《餐飲服務(wù)與管理》職教高考必備考試題庫(kù)(含答案)
- 招商崗位轉(zhuǎn)正述職報(bào)告
- 長(zhǎng)沙衛(wèi)生職業(yè)學(xué)院?jiǎn)握袇⒖荚囶}庫(kù)(含答案)
- 抖音運(yùn)營(yíng)述職報(bào)告
- 統(tǒng)編版語(yǔ)文八年級(jí)上冊(cè)第一單元作業(yè)設(shè)計(jì)
- 農(nóng)村產(chǎn)權(quán)交易工作總結(jié)
- 網(wǎng)絡(luò)營(yíng)銷(xiāo):推廣與策劃(第3版 慕課版)課件 項(xiàng)目三感悟網(wǎng)絡(luò)營(yíng)銷(xiāo)策略(知識(shí)基石)
- 四年級(jí)下冊(cè)混合運(yùn)算100道及答案
評(píng)論
0/150
提交評(píng)論