版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
Python程序設計實用教程xxx第3章程序控制與循環(huán)
本章要點程序執(zhí)行流程概述if判別語句while與for循環(huán)語句循環(huán)的中斷break和continue遍歷循環(huán)迭代器與生成器
在計算機程序設計中,任何簡單或復雜的算法都可以由順序、選擇和循環(huán)這三種基本結構組合而成。
順序結構:程序中各個操作按照在源代碼中的排列順序,自上而下,依次執(zhí)行。
選擇結構:根據(jù)某個特定的條件進行判斷后,選擇其中一支執(zhí)行。
循環(huán)結構:在程序中需要反復執(zhí)行某個或某些操作,直到條件為假或為真時才停止循環(huán)。這章主要介紹Python語言的選擇控制和循環(huán)的語法。3.1程序設計流程概述
程序設計過程應當包括分析、設計、編碼、測試、排錯等不同階段。
算法,流程圖和程序控制結構是構成一個程序的主要部分。4.1.1算法
算法是解決某個問題的計算方法、步驟,是一系列解決問題的清晰指令,算法代表著用系統(tǒng)的方法描述解決問題的策略機制。
一個算法必須滿足以下五個重要特性。(1).有窮性。一個算法必須總是在執(zhí)行有窮步后結束,且每一步都必須在有窮時間內(nèi)完成。(2).確定性。對于每種情況下所應執(zhí)行的操作,在算法中都有確切的規(guī)定,不會產(chǎn)生二義性,使算法的執(zhí)行者或閱讀者都能明確其含義及如何執(zhí)行。
(3).可行性。算法中的所有操作都可以通過已經(jīng)實現(xiàn)的基本操作運算執(zhí)行有限次來實現(xiàn)。(4).輸入。一個算法有零個或多個輸入。當用函數(shù)描述算法時,輸入往往是通過形參表示的,在它們被調用時,從主調函數(shù)獲得輸入值。(5).輸出。一個算法有一個或多個輸出,它們是算法進行信息加工后得到的結果,無輸出的算法沒有任何意義。當用函數(shù)描述算法時,輸出多用返回值或引用類型的形參表示。4.1.2程序流程圖
程序流程圖是用規(guī)定的符號描述一個專用程序中所需要的各項操作或判斷的圖示。
程序流程圖用圖的形式畫出程序流向,是算法的一種圖形化的表示方法,具有直觀、清晰、更易理解的特點。
程序流程圖由處理框、判斷框、起止框、連接點、流程線、注釋框等構成,并結合相應的算法,構成整個程序流程圖。起始框執(zhí)行框判別框流程線輸入/輸出框4.1.3三種控制結構1.順序結構
程序的順序結構是一行代碼接著一行代碼寫,最終完成一個程序,順序結構是簡單的線性結構,各框按順序執(zhí)行。代碼段1代碼段22.選擇(分支)結構
這種結構是對某個給定條件進行判斷,條件為真或假時分別執(zhí)行不同的框的內(nèi)容。3.循環(huán)結構
循環(huán)結構while型循環(huán)執(zhí)行序列為:當條件為真時,反復執(zhí)行循環(huán)體語句,一旦條件為假,跳出循環(huán),執(zhí)行循環(huán)后面的語句。3.2if判別語句
在Python中,if語句主要包括以下4種:
單分支選擇:if...;
雙分支選擇:if...else;
多條件選擇:if...elif...else;
if語句的嵌套。3.2.1幾種常見的if語句格式1if單分支選擇if的單分支向選擇邏輯結構為圖3.2(b)的單分枝結構,其語法為:if條件:
代碼
這里的“條件”一般是一個比較表達式,如果該表達式返回為True,則會執(zhí)行冒號下面縮進的代碼塊;如果該表達式返回為False,則會直接跳過冒號下面縮進的代碼塊,然后按照順序執(zhí)行后面的程序。【例3-1】if語句的單向選擇程序。score=100ifscore>60:print("你很棒")print("歡迎來到Python世界")
由于變量score的值為100,score>60返回True,因此會執(zhí)行冒號下面縮進的代碼塊。2ifelse雙分支選擇
雙分支選擇的邏輯為兩個分枝,其程序語法為:
if條件:
語句1else:
語句2ifelse相對if來說僅多了一個選擇,當條件表達式返回為True時,會執(zhí)行if后面的代碼塊;當條件表達式返回為False時,會執(zhí)行else后面的代碼塊?!纠?.4】if
else雙向選擇程序。score=100ifscore<60:
print("補考!")else:
print("通過!")運行結果如下:
通過!3ifelifelse多分支選擇
多分支選擇就是在雙分支選擇的基礎上增加了一個或多個選擇分支。其語法為:if條件1:
當條件1為True時執(zhí)行的代碼elif條件2:
當條件2為True時執(zhí)行的代碼else:
當條件1和條件2都為False時執(zhí)行的代碼【例3.5】采用ifelifelse結構的多分支向選擇程序。time=21iftime<12:print("早上好!")eliftime>=12andtime<18:print("下午好!")else:print("晚上好!")
對于多分支選擇,程序會從第1個if語句開始判斷,如果第1個if語句的條件不滿足,則判斷第2個if語句的條件,直到滿足為止。一旦滿足,就會退出整個if結構。
在Python中,if語句是可以嵌套使用的。其語法為:if條件1:if條件2:
當條件1和條件2都為True時執(zhí)行的代碼
else:
當條件1為True、條件2為False時執(zhí)行的代碼else:
if條件3:
當條件1為False、條件3為True時執(zhí)行的代碼
else:
當條件1和條件3都為False時執(zhí)行的代碼3.2.2if語句的嵌套
Python中是用“縮進”的方式來表示某一個代碼塊屬于哪一個if或else的。所以,也可以根據(jù)縮進來判斷哪兩個if和else是一對?!纠?.6】if語句的嵌套程序。
gendar="女"height=172ifgender=="男":ifheight>170:print("高個子男生")
else:print("矮個子男生")else:ifheight>170:print("高個子女生")
else:print("矮個子女生")if語句總結:(1).Python使用的是
elif,而不是elseif。(2).Python中
if的后面不需要加括號。(3).Python只有if語句,沒有switch語句,這一點和其他語言不同。3.3
while循環(huán)語句1.while基本循環(huán)
滿足條件就開始循環(huán),條件無法滿足就跳出循環(huán)。在while循環(huán)中,先進行條件判斷,條件為真,則運行循環(huán)體語句,條件為假,退出循環(huán)?!纠?.8】計算1到100所有的數(shù)字,采用while循環(huán)的程序。
num=0#定義變量名稱“num”并且給它賦值為0sum=0
whilenum<100:#設置循環(huán)條件是num的值小于100num=num+1#num的值加1sum+=numprint(sum)#把sum的值顯示出來
需要注意到是,在Python中沒有dowhile循環(huán)。這種是先運行語句,再進行條件判斷,但是可以模擬dowhile循環(huán)?!纠?.9】計算1到100所有的數(shù)字,采用模擬dowhile循環(huán)程序。num=0#定義變量名稱“num”并且給它賦值為0sum=0whileTrue:num=num+1#num的值加1sum+=num
ifnum>=100:#設置循環(huán)條件,當num大于100,結束循環(huán)。breakprint(sum)#把sum的值顯示出來2.在循環(huán)中使用else語句Python支持與循環(huán)語句相關聯(lián)的else語句。如果else語句與for循環(huán)一起使用,則在循環(huán)遍歷列表時循環(huán)執(zhí)行else語句。如果else語句與while循環(huán)一起使用,則在條件變?yōu)閒alse時執(zhí)行else語句?!纠?.10】else語句與while語句的組合,程序在變量count小于5時打印數(shù)字,當count大于5時執(zhí)行else語句。#!/usr/bin/Python3
count=0whilecount<5:print(count,"islessthan5")count=count+1else:print(count,"isnotlessthan5")3.4for循環(huán)語句
只要for循環(huán)能做的事情,while循環(huán)都可以做。之所以要有for循環(huán),是因為for循環(huán)在循環(huán)取值(遍歷取值)比while循環(huán)更簡潔。for循環(huán)通常用來遍歷可迭代的對象,如一個列表或者一個字典。其一般格式如下:for<variable>in<sequence>:<statements>【例3.11】for循環(huán)遍歷一個列表,求列表元素和。sum=0
forxin[1,2,3,4,5,6,7,8,9,10]:
sum=sum+xprint(sum)【3.12】循環(huán)應用案例,循環(huán)的實現(xiàn)方式。#for循環(huán)版l=['a','b','c']#定義一個列表forxinl:
print(x)
#while循環(huán)的實現(xiàn)方式l=["a","b","c"]i=0whilei<3:
print(l[i])i+=1for循環(huán)和while循環(huán)都可以對列表進行遍歷,本案例中,采用for循環(huán)更簡潔。 3.5循環(huán)的中斷1break語句break結束循環(huán),break語句可以提前結束循環(huán)。然后執(zhí)行循環(huán)之后的語句。它的標準使用格式只有一個關鍵字break。需要注意的是,break語句必須出現(xiàn)在for或while循環(huán)語句體中。
Python的break只能退出一層循環(huán),對于多層嵌套循環(huán),不能全部退出?!纠?.14】break退出for循環(huán)程序。forletterin'Helloworld':ifletter=='d':breakprint('當前字母為:',letter)
當letter中的字符為d時,程序執(zhí)行break語句,退出當前的循環(huán)。2continue語句continue語句和break語句的用法是相同的,即也可以用于for和while語句。出現(xiàn)的位置也是一樣的,區(qū)別在于break用于結束循環(huán),而continue用于跳出當前循環(huán),執(zhí)行下一次循環(huán)。即continue不會退出和終止循環(huán),只是提前結束當前輪次的循環(huán)?!纠?.16】continue語句,結束當前循環(huán),其功能是輸出helloworld中的不含o的字符。forletterin'Helloworld':#第一個實例
ifletter=='o':
#字母為o時跳過輸出continueprint('當前字母:',letter)
當letter中的字符為o時,continue語句后面的程序不再執(zhí)行,結束本次循環(huán),程序繼續(xù)執(zhí)行下一次循環(huán)。3.6遍歷循環(huán)1內(nèi)置函數(shù)range()range的預防格式為:range([start,]end[,step])start參數(shù):可選,表示起始數(shù)字。默認是0end參數(shù):必選,表示結尾數(shù)字。step參數(shù):可選,表示步長,默認為1range()返回的是一個range對象,而不是列表?!纠?.18】for搭配range,可以按照索引取值,控制循環(huán)次數(shù)。l=['a','b','c']#len(l)為列表長度。foriinrange(len(l)):
print(i,l[i])forxinl:print(x)2循環(huán)嵌套
在Python中,while和for循環(huán)結構也支持嵌套。所謂嵌套,就是一條語句里面還有另一條語句,例如for里面還有for,while里面還有while,甚至while中有for或者for中有while也都是允許的?!纠?.19】while-for嵌套結構程序示例。i=0whilei<10:
forjinrange(10):
print("i=",i,"j=",j)i=i+13pass語句
在Python中,pass是一個空語句,為了保持程序結構的完整性。一般情況下,pass不做任何事情,被用作占位符。它的作用如下:(1).空語句donothing。(2).保證格式完整。(3).保證語義完整?!纠?.22】pass語句的使用。deffunc():
pass#remembertoimplementthis
func()#emptyclassclassfbc:
pass3.7迭代器與生成器1迭代器
迭代是Python中訪問集合元素的一種方式。迭代器是一個可以記住遍歷位置的對象,不會像列表那樣一次性全部生成,而是可以等到用的時候才生成,因此節(jié)省了大量的內(nèi)存資源。迭代器對象從集合中的第一個元素開始訪問,直到所有的元素被訪問完?!纠?.23】迭代器使用案例。>>>iter_obj=iter([1,2,3])>>>next(iter_obj)1>>>next(iter_obj)2>>>next(iter_obj)32生成器
生成器(generator)也是一種迭代器,在每次迭代時返回一個值,生成器對象是Python用來實現(xiàn)生成器迭代的對象。通過迭代產(chǎn)生值的函數(shù)來創(chuàng)建,而不是顯式調用生成器,創(chuàng)建后像函數(shù)一樣使用?!纠?.25】生成器應用示例程序。#nested=[[1,2],[3,4
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年汽車制造行業(yè)人才招聘筆試模擬題
- 2026年歷史專業(yè)研究生入學考試歷史常識題
- 2026年物聯(lián)網(wǎng)設備安全與AI防護策略題
- 2026年財務管理專業(yè)碩士入學考試模擬卷
- 2026年建筑設計與規(guī)劃高級職稱考試題集及答案解析
- 2026年高空作業(yè)技能水平及安全意識考試題
- 2026年網(wǎng)絡工程師專業(yè)能力考試題庫
- 幼兒園科學教育中自然觀察活動的開發(fā)與評價課題報告教學研究課題報告
- 水電工程水泵站運行方案
- 2026年法律顧問案例分析法律條文習題集
- 北京2025年北京市疾病預防控制中心面向應屆生招聘26人筆試歷年參考題庫附帶答案詳解
- 2025年高考數(shù)學三輪復習考前沖刺練習05 圓錐曲線(解答題)(教師版)
- 2026年及未來5年中國TFT液晶面板行業(yè)市場發(fā)展數(shù)據(jù)監(jiān)測及投資方向研究報告
- 酒吧消防安全規(guī)范
- 龍湖物業(yè)消防安全培訓課件
- 大唐集團機考行測題庫
- 高壓旋噴樁止水防滲施工方案
- 中建建筑電氣系統(tǒng)調試指導手冊
- 魏縣一中出圈的終極秘訣教學經(jīng)驗
- 安全生產(chǎn)麻痹思想僥幸心理
- 2026年浙江高考地理試題及答案
評論
0/150
提交評論