




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第4章
三大流程控制結構序《Python數據分析與應用》特征:有窮性確定性評價標準:正確性可讀性健壯性(Robust,魯棒性)高效率與低存儲要求定義:對特定問題求解步驟的一種描述,它是指令的有限序列,其中每一條指令表示一個或多個操作。數據結構+算法=程序算法可執(zhí)行性有輸入、輸出算法規(guī)范的方法:自然語言、流程圖、N-S結構流程圖、偽代碼。(1)自然語言:人們日常生活中的語言,用自然語言通俗易懂,容易被人接受。(2)流程圖的基本構成:起至框輸入輸出判斷框處理框或流程線連接點注釋框流程圖的三種基本結構aABb順序結構先執(zhí)行A,
再執(zhí)行B.若P為真,則執(zhí)行A,
否則執(zhí)行B.若P為真,則執(zhí)行A,
否則跳過A.aAYNBpabAPNYb選擇結構流程圖的三種基本結構ApNY當型循環(huán)結構abApYNba直到型循環(huán)先執(zhí)行A,再判斷,若P為真,反復執(zhí)行A,P為假時出循環(huán)。當P為真,反復執(zhí)行A,P為假時出循環(huán)。N-S流程圖去掉了箭頭,算法寫在一個矩形框里。它也有三種結構:順序、選擇和循環(huán)(3)N-S結構流程圖AB順序結構pyesnoAB選擇結構當p成立A當型循環(huán)A
當p成立直到型循環(huán)
任何程序均可以由“順序”、“選擇”和“循環(huán)”這三種基本結構通過有限次的組合與嵌套來描述。
任何程序設計語言均由這三種基本結構組成,其差別在于具體語法的形式不同,而原理是相同的。程序的基本結構共同特點:單入口、單出口三種結構之間可以是順序關系、平行關系,也可以互相嵌套,通過結構之間的復合形成復雜的關系。三種基本結構的特點數據的輸入和輸出(InputandOutput)
一般一個程序分為三步進行:輸入原始數據、進行計算處理和輸出運算結果
。(1)標準輸入input()
input([提示字符串])input()在Python2.x中,函數返回結果的類型由輸入時使用的界定符來決定。>>>x=input("Pleaseenteryourinput:")Pleaseenteryourinput:5
>>>x=input("Pleaseenteryourinput:")Pleaseenteryourinput:'5'
>>>x=input("Pleaseenteryourinput:")Pleaseenteryourinput:[1,2,3]
>>>x=input("Pleaseenteryourinput:")Pleaseenteryourinput:(1,2,3)input()
如果要輸入數值類型數據,可以使用類型轉換函數將字符串轉換為數值。>>>x=int(input(“pleaseinputyourinput:”))pleaseinputyourinput:5>>>print(type(x))<class'int'>說明:x接受的是字符串5,通過int()函數將字符串轉換為整型。(2)標準輸出在Python2.x中使用的是print語句輸出在Python3.x中使用的是print()函數輸出print()函數的一般形式為:print([輸出項1,輸出項2,....,輸出項n][,sep=分隔符][,end=結束符])說明:輸出項之間用逗號分隔,沒有輸出項時輸出一個空行。sep表示輸出時候各個輸出項之間的分隔符,end表示輸出時的結束符。(2)標準輸出print函數從左求出至右各輸出項的值,并將各輸出項的值依次顯示在屏幕的同一行上。>>>x,y=2,3>>>print(x,y)23>>>print(x,y,sep=':')2:3>>>print(x,y,sep=':',end='%)2:3%(3)格式化輸出1.字符串格式化%格式控制字符串%(輸出項1,輸出項2,...輸出項)(1)常規(guī)字符:包括可顯示的字符和用轉義字符表示的字符。(2)格式控制符:以%開頭的一個或多個字符,以說明輸出數據的類型、形式、長度、小數位數等。例如:print(“sum=%d”%x)print()格式化說明4d或i十進制格式o八進制格式x、X十六進制格式c一個字符格式s字符串格式f實數格式e或E指數格式g或G1235678e和f中較短一種格式2.附加格式說明符m:域寬,十進制整數,用以描述輸出數據所占寬度。n:附加域寬,十進制整數,用于指定實型數據小數部分的輸出位數?!狠敵鰯祿髮R,默認為右對齊+:輸出正數時,也以+號開頭#:作為o,x的前綴時,輸出結果前面加上前導符號0,,0x格式化輸出:>>>year=2017>>>month=1>>>day=28>>print('%04d-%02d-%02d'%(year,month,day))2017-01-28
>>>value=8.123>>print('%06.2f'%value)008.12>>>print('%d'%10)10>>>print('%o'%10)12>>>print('%02x'%10)0a>>>print('%04X'%10)000A>>>print('%.2e'%1.2888)1.29e+00順序程序設計舉例【例1】從鍵盤輸入一個3位整數,分離出它的個位、十位和百位并分別在屏幕輸出。x=int(input(“請輸入一個3位整數:”))a=x//100b=(x-a*100)//10c=x%10print(“百位=%d,十位=%d,個位=%d”%(a,b,c))程序運行結果如下:請輸入一個3位整數:235百位=2,十位=3,個位=5順序程序設計舉例
例2:已知三角形三條邊的邊長(為簡單起見,假設這三條邊可以構成三角形),求三角形的面積。分析:三角形面積=其中,a、b、c是三角形三邊的邊長,p是三角形周長的一半importmatha=float(input("請輸入三角形的邊長a:"))b=float(input("請輸入三角形的邊長b:"))c=float(input("請輸入三角形的邊長c:"))p=(a+b+c)/2area=math.sqrt(p*(p-a)*(p-b)*(p-c));print(str.format(“三角形的面積=%f”%area))學習要點:1、理解算法的概念。2、掌握描述算法的圖形工具:流程圖、N-S圖。掌握使用N-S圖描述算法。3、掌握程序流程的三種基本結構:順序結構、選擇結構、循環(huán)結構。4、掌握常用的I/O函數,重點掌握input、print函數的控制格式。上機作業(yè):1.輸入長方形的長和寬,計算面積并輸出。2.從鍵盤輸入一個3位整數n,輸出其逆序數m。例如輸入n=128,則m=821。3.輸入三個浮點數,求它們的平均值并保留一位小數輸出。第4章
三大流程控制結構序《Python數據分析與應用》單分支選擇結構形式:if表達式:
語句1.簡單的if語句expATFexpyesnoAc=input("Pleaseinputcharacter:")ifc>='a'andc<='z':
c=ord(c)-32print("%c\n"%c)例:將小寫字母轉換為大寫字母思考:若將大寫字母轉換為小寫字母.單分支選擇結構例:輸入三個整數x,y,z,把這三個數由小到大輸出x,y,z=eval(input(‘請輸入x、y、z:’))ifx>y:
x,y=y,xifx>z:
x,z=z,xify>z:
y,z=z,yprint(x,y,z)輸出x,y,x的值交換x,zx>z交換x,yx>y輸入x,y,zYNYN交換y,zy>zYN思考:如果要將三個數從大到小輸出,程序該如何編寫?雙分支選擇結構形式:
if表達式:
語句Aelse:語句B1.語句的一般語法格式:if---elseexpABTFexpyesnoAB例:求輸入的兩個整數的最小值x,y=eval(input(‘請輸入x、y:’))ifa<b:min=aelse:min=bprintf(“Theminimumis%d”%min)輸入a,bmin=a;a<bYNmin=b;輸出最小值min例:一個5位數,判斷它是不是回文數,即12321
是回文數,個位與萬位相同,十位與千位相同。
分析:分解出每一位數(萬位、千位、十位和個位),然后判斷。
x=int(input('請輸入x:'))wan=x//10000;qian=x%10000//1000;shi=x%100//10;ge=x%10;ifge==wanandshi==qian:print("Itispalindromicnumber!\n")else:print("Itisnotpalindromicnumber!\n")shi=x%100//10輸出不是回文N輸出是回文Yge=x%10qian=x%10000//1000wan=x//10000輸入xwan==geandqian==shi多分支選擇結構
if語句的擴展形式:if-elseif-elseIfexp1:
選擇體1elifexp2:
選擇體2……elifexpn:
選擇體nelse:
選擇體n+1exp1選擇1TFexp2exp3選擇n+1選擇3選擇2TTFF……例:編寫程序計算函數值2x+1(1<=x<10)3x+1(x>=10)y=x(x<1)x=int(input("pleaseinputx:"))ifx<1:y=xelifx<10:y=2*x+1else:y=3*x+1print("Theresultis%d"%y)輸入xy=x;x<1Y輸出函數值yYy=2x+1y=3x+11<=xandx<10NNif表達式1:
if表達式2:
語句1
else:
語句2else:
if表達式3:
語句3else:
語句4內嵌if內嵌if選擇結構嵌套if語句的嵌套:如果if的內嵌語句中又使用了一個if語句,則構成if語句的嵌套。例:購買地鐵車票的規(guī)定如下:乘1-4站,3元/位;乘5-9站,4元/位;乘9站以上,5元/位。輸入人數、站數,輸出應付款。Falsem<=4True開始輸出應付款結束輸入人數n、站數mm<=9pay=4*npay=5*nTrueFalsen,m=input(‘請輸入人數,站數:')ifm<=4:pay=3*nelse:
ifm<=9:pay=4*n
else:pay=5*nprint('應付款:',pay)例:輸入一個整數,判斷它是否為水仙花數。所謂水仙花數,是指這樣的一些三位整數:各位數字的立方和等于該數本身,例如153=13+53+33,因此153是水仙花數。選擇結構程序舉例x=input('請輸入三位整數x:')a=x//100b=(x-a*100)//10c=x-100*a-10*bifx==a**3+b**3+c**3:print(x,'是水仙花數')else:print(x,'不是水仙花數')第4章
三大流程控制結構《Python數據分析與應用》循環(huán)結構的基本類型
當型循環(huán)while,forexpAFT5.1while語句(當型循環(huán))特點:先判斷,再執(zhí)行while語句的語法格式:注意:
循環(huán)體可能一次也不執(zhí)行。
循環(huán)體可為任意類型語句。
退出while循環(huán)的情況:exp不成立循環(huán)體內遇break,return,exit等。exp循環(huán)體FTwhileexp:
循環(huán)體在while語句中使用else子句Python可以在循環(huán)語句中使用else子句,即構成了while.......else循環(huán)結構。whileexp:
循環(huán)體else:
語句while....else循環(huán)結構例如:count=int(input())whilecount<5: print(count,”islessthan5”) count=count+1else: print(count,”isnotlessthan5”)程序運行結果88isnotlessthan5例:求1)問題分析:
sum,n=0,1n<=100sum=sum+nn=n+1YN輸出sum結束開始sum=1+2+…+100
100個數
循環(huán)語句:循環(huán)變量初始化:循環(huán)控制條件:循環(huán)體:循環(huán)變量的修改:n=1n<=100sum+=nn=n+1例:求sum,n=0,1whilen<=100:
sum=sum+n
n=n+1
printf("1+2+3+....+100=",sum)循環(huán)語句四要素:循環(huán)(控制)變量初始化循環(huán)控制條件循環(huán)體(關鍵是找規(guī)律)循環(huán)變量的修改運行結果:1+2+3.......+100=5050while語句對于while語句的用法,要注意以下幾點:(1)如果while后面表達式的值一開始就為假,則循環(huán)體一次也不執(zhí)行。(2)循環(huán)體中的語句可以任意類型的語句。(3)遇到下列情況,退出while循環(huán):
A表達式不成立
B循環(huán)體內遇到break、return語句。
例:從鍵盤輸入若干個數,求所有正數之和。當輸入負數時,程序結束。輸入xsum=0x>=0sum=sum+xYN輸出sum結束開始
循環(huán)語句四要素:循環(huán)變量初始化:循環(huán)控制條件:循環(huán)體:循環(huán)變量的修改:輸入x的值x>=0sum=sum+x
輸入x的值輸入x
例:從鍵盤輸入若干個數,求所有正數之和。當輸入0或負數時,程序結束sum=0x=input(“請輸入正整數:")whilex>=0: sum=sum+x x=input(“請輸入正整數:")
printf("sum=",sum)例題:輸入一個正整數x,如果x滿足0<x<99999,則輸出x是幾位數并輸出x個位上的數字。x=int(input(“Pleaseinputx:”);ifx>=0andx<99999; i=x n=0whilei>0: i=i//10 n=n+1 a=x%10 print(“%d是%d位數,它的個位上數字是”%(x,n,a))else:print(“輸入錯誤!”)5.1while語句——說明while語句之前必須預先設置判斷的初始條件
防止“死循環(huán)”的發(fā)生在循環(huán)體中必須有使循環(huán)趨向結束的操作,即在循環(huán)體中要有能讓邏輯表達式值改變的語句
正確使用縮進當循環(huán)體中含多條語句時,需用縮進這些多條語句,而且縮進一定要符合邏輯關系在循環(huán)體中,語句的先后位置必須符合邏輯否則會影響運算結果。5.2for語句結構1.for語句一般形式:for目標變量in序列對象:
循環(huán)體語句說明:
for語句的首行定義了目標變量和遍歷的序列對象,后面是需要重復執(zhí)行的語句塊。語句塊中的語句要向右縮進,且縮進量要一致。注意:(1)for語句是通過遍歷任意序列的元素來建立循環(huán)的。(2)for語句也支持一個可選的else塊,一般格式如下:
for目標變量in序列對象:
語句塊 else:
語句2.range對象在for循環(huán)中的應用range函數返回的是可迭代對象,range()函數的一般格式為:
range([start,]end[,step])
rang()函數共有三個參數,start和step是可選的,start表示開始,默認值為0,end表示結束,step表示每次跳躍的間距,默認值為1。函數的功能是從一個start參數的值開始,到end參數的值結束的數字序列。傳遞一個參數的range()函數:>>>foriinrange(5): print(i)傳遞兩個參數的range()函數:>>>foriinrange(2,4): print(i)傳遞三個參數的range()函數:>>>foriinrange(2,20,3): print(i)range()例用for循環(huán)求sum=0foriinrange(101): sum=sum+iprint(“1+2+3+....+100”,sum)sum=0foriinrang(101):sum=sum+i輸出summ=int(input(“請輸入要判斷的正整數m”))flag=1foriinrange(2,m): ifm%i==0: flag=0 i=mifflag==1:print(“%d是素數”%m)else: print(“%d不是素數”%m)例判斷m是否為素數。5.3循環(huán)嵌套
循環(huán)的嵌套,又稱多層循環(huán),應用于多個變量同時變化的情況。說明:1.外層循環(huán)可包含兩個以上內循環(huán)
2.嵌套的循環(huán)的執(zhí)行流程5.3循環(huán)嵌套
注意:while、for循環(huán)語句可以并列,也可以相互嵌套,但要層次清楚,不能出現交叉多重循環(huán)程序執(zhí)行時,外層循環(huán)每執(zhí)行一次,內層循環(huán)都需要循環(huán)執(zhí)行多次。
外循環(huán)執(zhí)行了6次內循環(huán)執(zhí)行10次循環(huán)正常結束時,內循環(huán)執(zhí)行了
10×6=60次foriinrange(6):forjinrange(10):……
5.3循環(huán)嵌套循環(huán)語句while和for可以相互嵌套。在使用循環(huán)嵌套時,應注意以下幾個問題:(1)外層循環(huán)和內層循環(huán)控制變量不能同名,以免造成混亂。(2)循環(huán)嵌套的縮進在邏輯上一定要注意,以保證邏輯上的重要性。(3)循環(huán)嵌套不能交叉,即在一個循環(huán)體內必須完整地包含另一個循環(huán),如圖5.10所示的循環(huán)嵌套都是合法的嵌套形式。循環(huán)嵌套在使用中的重點內容能夠正確判斷內層循環(huán)體的范圍能夠正確判斷內層循環(huán)體的執(zhí)行次數注意內層循環(huán)的初值設定能正確處理內層循環(huán)與外層循環(huán)變量的關系5.3循環(huán)嵌套例:輸出九九表,輸出格式如下:1*1=11*2=22*2=41*3=32*3=63*3=91*4=42*4=83*4=124*4=161*5=52*5=103*5=154*5=205*5=251*6=62*6=123*6=184*6=245*6=306*6=361*7=72*7=143*7=214*7=285*7=356*7=427*7=491*8=82*8=163*8=244*8=325*8=406*8=487*8=568*8=641*9=92*9=183*9=274*9=365*9=456*9=547*9=638*9=729*9=81foriinrange(1,10,1): forjinrange(1,i+1,1): print(“%d*%d=%2d”%(j,i,i*j),end=””) print(“”)例:找出所有的三位數,要求它的各位數字的立方和正好等于這個三位數。例如:153=13+53+33就是這樣的數。foriinrange(1,10):forjinrange(0,10):forkinrange(0,10):ifi**3+j**3+k**3==i*100+j*10+k:print("%d%d%d"%(i,j,k))程序運行結果:153370371407例:求100~200之間的全部素數。print("100~200之間的素數有:")forminrange(100,200):
flag=1foriinrange(2,m):ifm%i==0:flag=0 i=mifflag==1:print(m,end="")
5.4循環(huán)控制語句
有時候我們需要在循環(huán)體中提前跳出循環(huán),或者在某種條件滿足時,不執(zhí)行循環(huán)體中的某些語句而立即從頭開始新的一輪循環(huán),這時就要用到循環(huán)控制語句break、continue和pass語句。一般格式
break功能
break語句用在循環(huán)體內,迫使所在循環(huán)立即終止,即跳出所在循環(huán)體,繼續(xù)執(zhí)行循環(huán)結構后面的語句。(1)break語句……break……expNY分析:找出m與n中較小的一個,則最大公約數必在1與較小整數的范圍內。使用for語句,循環(huán)變量i從較小整數變化到1。一旦循環(huán)控制變量i同時能被m與n整除,則i就是最大公約數,然后使用break語句強制退出循環(huán)。求兩個整數m與n的最大公約數。m,n=eval(input("請輸入兩個整數:"))ifm<n:min=melse:min=nforiinrange(min,1,-1):ifm%i==0andn%i==0:print("最大公約數是:",i)break一般格式
continue功能在循環(huán)語句中強行提前結束本次循環(huán),
而不是終止循環(huán)。(2)continue語句……continue……expNY例求1~100之間的全部奇數之和。程序如下:x=y=0whileTrue:x+=1ifx%2==0:continueelifx>100:break
else:y+=xprint("y=",y)程序運行結果:y=2500(3)pass語句pass語句是一個空語句,它不做任何操作,代表一個空操作,在特別的時候用來保證格式或是語義的完整性。例如下面的循環(huán)語句:foriinrange(5):pass該語句的確會循環(huán)5次,但是除了循環(huán)本身之外,它什么也沒做。例:pass語句應用:逐個輸出“Python”字符串中的字符。forletterin"Python":ifletter=="o":passprint("Thisispassblock")print("CurrentLetter:",letter)print("End!")程序運行結果:CurrentLetter:PCurrentLetter:yCurrentLetter:tCurrentLetter:hThisispassblockCurrentLetter:oCurrentLetter:nEnd!5.5循環(huán)結構程序舉例例:利用下面的公式求的近似值,要求累加到最后一項小于10-6為止。程序如下:importmaths=1n=1.0t=1.0pi=0whilemath.fabs(t)>=1e-6:pi=pi+tn=n+2s=-st=s/npi=pi*4print("PI=%f"%pi)程序運行結果:PI=3.141591例:“百錢百雞”問題。公雞5文錢一只,母雞3文錢一只,小雞3只一文錢,用100文錢買一百只雞,其中公雞、母雞、小雞都
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2025學年高中歷史上學期第2周 專題五 現代中國的對外關系教學實錄 必修1
- 23月光曲第二課時教學設計-2024-2025學年六年級上冊語文統(tǒng)編版
- 27紀昌學射(教學設計)2024-2025學年四年級上冊語文統(tǒng)編版
- 1 100以內的加法和減法(三) (教學設計)-2024-2025學年二年級上冊數學蘇教版
- 2016九年級化學下冊 第十單元 酸和堿教學實錄 新人教版
- A visit to the zoo(教學設計)-2024-2025學年外研版(三起)英語六年級上冊
- 2024年五年級語文上冊 第六單元 19 父愛之舟教學實錄 新人教版
- 2024-2025學年高中歷史 專題五 走向世界的資本主義市場 一 開辟文明交往的航線(4)教學教學實錄 人民版必修2
- 2023一年級數學下冊 一 100以內數的認識(綜合與實踐 有趣的數 )教學實錄 西師大版
- 28 制作小臺燈 (教學設計)-四年級科學上冊青島版(五四制)
- 水飛薊簡介課件
- 醉酒后急救知識培訓課件
- 女性盆腔炎性疾病中西醫(yī)結合診治指南
- 品管圈PDCA改善項目-提高住院患者出入量記錄的準確率
- 量子化學第七章-自洽場分子軌道理論
- 人工智能教學課件
- 華中師范大學第一附中2025屆高考仿真模擬數學試卷含解析
- 2024年《數字攝影技術》考試復習題庫(含答案)
- “一帶一路”背景下新疆農產品出口貿易發(fā)展現狀及對策研究
- 安寧療護案例課件
- 2024中考語文綜合性學習專訓課習題與答案
評論
0/150
提交評論