資源簡介 (共31張PPT)第3章課時11 循環結構的程序實現信息技術課標梳理·微知著教材重點 課標要求 學業質量水平循環結構 掌握for語句以及while語句的使用方法 2-2教材研析·固基礎循環結構流程圖首先,為循環變量設置初始值,然后判斷循環條件。若條件為真,則執行循環體同時更改循環變量、繼續循環;否則結束循環。1循環結構的程序實現1.程序實現:通過for語句和while語句來實現。2.for語句(1)格式for <變量> in <序列>: <循環體>(2)通過遍歷序列中的元素實現循環,并通過序列的元素數量來控制循環次數 循環次數等于序列的元素個數;從第1個元素開始,每次循環從序列中按序取1個元素作為本次循環的變量值,并執行一遍循環體中的代碼。(3)注意點①序列后的冒號不要遺忘②循環體縮進(4)遍歷字符串每次循環,變量依次指向字符串中的一個字符。格式如下:for<變量>in<字符串>:<循環體>典例1 有如下Python程序段:s='為學須先立志'for i in s:print(i,end=',')執行上述代碼,輸出的結果為________________。為,學,須,先,立,志, 解析 for遍歷字符串s中的每個字符,且每次以,結束。典例2 將字符串s中的大寫英文字母轉換成小寫字母,實現上述功能的Python代碼如下:s=″Hello World!″s2=″ ″for ①__________: if'A'<=ch<='Z':s2=②________________#大寫字母轉換成小寫字母ord('A'):65 ord('a'):97else:s2=s2+chprint('轉換成小寫字母:',s2)請回答下列問題:ch in ss2+chr(ord(ch)+32)(1)將劃線處代碼補充完整。(3)請給出②處的另外一種表達式。(2)for循環體中的if語句執行總次數等于( )A.s串中大寫字母的個數B.s串中小寫字母的個數C.s串中字符個數D.s串中大小寫字母的總數Cs2+chr(ord(ch)-ord('A')+ord('a'))(4)請寫出用for循環逆序輸出字符串s中小寫字母的代碼。s2=″ ″for ch in s[::-1]: if 'a'<=ch<='z': s2+=chprint(″逆序輸出小寫字母:″,s2)解析 (1)①枚舉s中的每個字符ch;②大寫英文字母的ASCII碼值比相應的小寫字母ASCII碼值小32,因此其表達式如上。(2)if語句是在整個循環語句中的,因此是s中全部的字符數。典例3 (2022浙江7月學考)某Python程序如下:p=″Tel-114″c=″ ″for ch in p:if ch>=″0″ and ch<=″9″: c+=str(9-int(ch))elif ch>=″a″ and ch<=″z″:c+=chr(ord(ch)-ord(″a″)+\ord(″A″))else:c+=chprint(c)程序運行后,輸出的結果是( )A.tEL-885B.tEL-114C.TEL-114D.TEL-885解析 由代碼可知,若是數字字符,則用9減去該數字,若是小寫字母,則轉換為相應的大寫字母,若是其他情況則不進行任何處理,直接按順序連接到變量c。因此當輸入字符串為“Tel-114”,最后輸出字符串為“TEL-885”,故選D。D(5)遍歷列表每次循環,變量依次指向列表中的一個元素。格式如下:for<變量>in<列表>:<循環體>(6)range函數①作用:指定序列中元素的個數和范圍。②格式:如下range(start,stop,step)③參數<1>start:計數從start開始。默認是從0開始。例如range(5)等價于range(0,5)。典例4 有如下Python程序段:x=0for i in range(1,9,2):x=x+i該程序段執行后,變量x的值是( )A.9 B.16 C.25 D.36解析 本題考查循環結構程序求值。for循環語句中的一個重要部分即步長2,隨著每一次循環的執行,循環變量都要在[初值,終值]的范圍內增加或減少,直至循環結束。題中循環變量i的值在滿足[1,8]范圍內的分別是1、3、5、7,通過循環體“x=x+i”語句將i的值不斷累加到變量x上,最后得到x的值為16。B典例5 有如下Python程序段:s=0for i in range(5,________,-1): s=s+1若要使語句s=s+1執行10次,則循環變量i終值應為( )A.-4 B.-5C.-6 D.-7解析 本題考查循環結構。模擬后可知循環應該到-5,-4~0共5次,1~5共5次。故選B。B(7)遍歷整數序列①若for語句遍歷的序列中的元素為有序整數,則可以利用內建函數range()來創建。②每次循環,變量依次指向序列中的一個整數。格式如下:for變量in range(start,stop,step): <循環體>典例6 (2023浙江7月學考)某Python程序如下:a=input(″輸入數字字符串:″)s=″ ″flag=1for i in range(0,len(a)-1,2):d1=int(a[i])d2=int(a[i+1])t=d1+flag d2if t<0:t+=10elif t>=10:t-=10s=str(t)+sflag=-flagif len(a)%2==1:s+=a[len(a)-1]print(s)程序運行時,若輸入“48135”,則輸出的結果是( )A.528B.582C.825D.285C解析 由代碼可知,將字符a中的數字每兩個字符為一組進行分組處理,t=d1+flag*d2,且flag的值將變號。然后將t逆序連接到字符s中。最后不能成對的一個字符順序連接到字符串s中。計算如下:第一組,flag=1,4+8= 12,因此t=2,s=“2”;第二組,flag=-1,1-3=-2,所以t=8,故s=“82”。最后一個字符“5”,順序進行連接,故s=“825”,因此本題選C。3.while語句(1)格式while <條件>: <循環體>(2)執行過程:首先判斷條件是否為真,若條件為真,則執行一次循環體,再次判斷條件是否為真,若仍為真,則再執行一次循環體,以此類推,直到條件為假時退出while語句。(3)作用:已知次數的循環用for(循環次數即遍歷序列的元素個數)。在循環執行前不知道其需要執行的次數時用while循環。典例7 要將1個十進制數轉二進制數。實現上述功能的Python程序如下,請在劃線處填上合適的代碼。d=int(input('請輸入1個十進制正整數:'))#方法:除二取余(循環執行直至被除數為0)ans=''b=d①________________________y=b % 2②________________________ans=str(y)+ansprint('十進制數',d,'的二進制值為:',ans)while b!=0:b=b // 2解析 ①十進制轉二進制前不知道需要除二取余幾次才能得到結果 用while不用for。除二取余終止的條件是被除數為0 反之只要被除數不為0,則繼續除二取余(循環) 滿足條件b!=0(被除數不為0)時循環。②每次循環得到本次除二取余的余數后,要為下次循環做好準備 更新下次除二取余的被除數的值 用當前的被除數除以2取整數部分得到b=b // 2。4.break和continue語句(1)while循環在條件為假時結束,for循環在遍歷完序列后結束。若循環條件仍然為真或者序列沒有遍歷完時,想要強行跳出循環,可以用break語句。(2)continue語句,功能:結束當前的當次循環,但不跳出循環結構,繼續判斷下一次執行循環的條件是否成立。典例8 判斷一個正整數是否為素數(在大于1的自然數中,除了1和其本身以外,不能被任何一個數整除)的Python程序如下,請在劃線處填上合適的代碼。num=int(input('請輸入1個十進制正\整數:'))cs=2flag=Falsewhile ①________________: if ②___________________: flag=True ③__________cs=cs+1if ④________________: print(num,'是素數')else:print(num,'不是素數')cs<=num-1num % cs==0:Breakflag==False解析 ①除數的范圍是2 num-1 ②循環內部判斷數num是否能被當前除數cs整除 num % cs==0 ③只要num能被2 num-1之間任何一個除數cs整除,就不是素數,后面的除數不用再驗證了,所以要終止循環 break ④循環中被整除 num不是素數時,flag True,所以flag為True代表著不是素數。5.循環嵌套循環結構中,允許在一個循環體里面嵌入另一個循環。典例9 輸出當前序列中所有素數的Python程序如下,請在劃線處填上合適的代碼。b=int(input('請輸入一個正整數作為\序列起點:'))e=int(input('請輸入一個正整數作為\序列終點:'))①________for i in range (②________________): cs=2flag=False#以下while循環(內循環)嵌套在for循環(外循環)中ans=''b,e+1,1(或b,e+1)while cs <=i - 1: if i%cs==0: flag=True breakcs=cs + 1if flag==False: ans=ans+' '+str(i)print(b,'~',e,'中的素數有:',ans)解析 ①變量在使用前要先賦值 結果字符串ans在循環前要先賦值空串。②題目要檢測序列中每個數是否是素數,所以要遍歷序列中的每個數 step為1;start為輸入的起點b;遵循“前閉后開”規則,stop為輸出的終點e的后一個數 e+1。典例10 將一張長a厘米、寬b厘米的長方形紙沿直線剪開,剪出一個正方形,再在剩下的部分上繼續裁剪,每次只剪一刀,但必須剪出一個正方形。這樣最多能剪幾次 (正方形邊長必須是整厘米數)n=int(input(″請輸入長:″))m=int(input(″請輸入寬:″))c=0方框中的代碼將會是以下語句:①n!=m ②n=m ③nm實現程序要求的正確選項是( )A.①③ B.①④C.②③D.②④解析 本題的算法思想是:當長寬不同時,可以繼續剪,原則是較長邊減較短邊,直到兩條邊相等為止,退出循環。因此答案為B。B 展開更多...... 收起↑ 資源預覽 縮略圖、資源來源于二一教育資源庫