資源簡介 (共41張PPT)Python少兒編程第三章 神奇的分支和循環目錄1.1前進的向導1.2選擇不同的道路1.3擺脫重復的任務PART 01前進的向導什么是流程圖1.1流程圖是對某一個問題的定義、分析或解法的圖形表示,圖中用各種符號來表示操作、數據、流向及裝置等。程序流程圖則表示程序的運行順序,是一種常用的表示算法的圖形化工具。換言之,程序流程圖就是通過畫圖的方式表達程序運行的所有路徑,通過使用箭頭和框圖把程序運行的方向與步驟展示出來。程序流程圖的基本符號1.2圖3-1 程序流程圖中常用的符號程序流程圖的基本符號1.2(1)端點符表示算法的起始或結束。(2)判斷符用于對給定的條件進行判斷,根據判斷的結果來選擇流程方向。它只有一個入口,可以有若干個出口,但有且僅有一個出口被激活。(3)處理符表示算法中的具體處理步驟。(4)流線符表示數據流,箭頭指示流向。(5)連接符用于連接因頁面寫不下而斷開的流程線,對應的連接符應有同一標記。(6)注解符用來標識注解內容,它不是程序流程圖的必要部分,不反應流程和操作,只是為了對流程圖中某些符號的操作進行必要的補充說明,以幫助讀者更好的理解。(7)數據符表示未指定媒體的數據,可用于輸入和輸出,比較通用。程序流程圖還包括一些特殊的數據符,常用的有文件符、顯示符和人工輸入符。程序流程圖的基本符號1.2在程序設計中,包含了3種基本結構,即順序結構、分支結構和循環結構,其流程圖如圖3-2所示。圖3-2 3種基本結構的流程圖掃地機器人的工作流程圖1.3掃地機器人工作時傳感器會檢測前方、左邊和右邊是否有障礙物,并將檢測結果傳給掃地機器人進行判斷。掃地機器人根據判斷結果規劃路徑,具體如下。(1)判斷前方是否有障礙物,如果沒有,則機器人前行;如果有,則進行下一步判斷。(2)判斷左邊是否有障礙物,如果沒有,則機器人左轉;如果有,則進行下一步判斷。(3)判斷右邊是否有障礙物,如果沒有,則機器人右轉;如果有,則后退。(4)循環執行(1)~(3),直到機器人停止工作。掃地機器人的工作流程圖1.3圖3-3 掃地機器人的工作流程圖PART 02選擇不同的道路簡單的if語句2.1if語句允許程序通過判斷條件是否成立而選擇是否執行指定的語句。if語句的基本語法格式如下。if 判斷條件:語句塊if語句的執行過程是:如果判斷條件為True,執行語句塊,否則直接執行if語句后的語句。例如:weather = '晴' #創建變量weather代表天氣,賦值為“晴”if weather == '晴': #如果天氣為晴print('去公園玩') #輸出“去公園玩”if-else語句2.2if語句只允許在條件為True時執行指定的語句,而if-else語句還可在條件為False時執行指定的語句,其基本語法格式如下。if 判斷條件:語句塊1else:語句塊2上述語句的執行過程是:當判斷條件為True時,執行語句塊1,否則執行語句塊2。if-else語句2.2【例3-1】 根據輸入的天氣選擇是否出門游玩。【參考代碼】weather = input('請輸入天氣情況:') #輸入變量weather的值if weather == '晴' or weather == '多云': #如果天氣為晴或多云print('去公園玩') #輸出“去公園玩”else: #如果不是print('在家玩') #輸出“在家玩”【問題分析】 本例題可使用if-else語句進行條件判斷,如果輸入天氣為“晴”或“多云”,輸出“去公園玩”,否則輸出“在家玩”。if-else語句2.2【運行結果】 程序運行結果如圖3-4所示。圖3-4 例3-1程序運行結果if-elif-else語句2.3編程時常常需要判定一系列的條件,一旦其中某一個條件為True就立刻停止。此時,可采用if-elif-else語句(elif是else if的簡寫),其基本語法格式如下。if 判斷條件1:語句塊1elif 判斷條件2:語句塊2……elif 判斷條件n:語句塊nelse:語句塊n+1if-elif-else語句2.3表3-1 溫度和穿衣建議對照關系【例3-2】 根據輸入的溫度temperature給出穿衣建議,溫度和穿衣建議對照關系如表3-1所示。if-elif-else語句2.3【參考代碼】#輸入溫度temperature的值并將其轉化為浮點數temperature = float(input('請輸入溫度(℃):'))if temperature >= 28.0: #如果溫度大于等于28.0print('穿衣建議:輕棉織物制作的短衣、短裙、短褲等') #輸出穿衣建議elif temperature >= 24.0: #如果溫度大于等于24.0小于28.0print('穿衣建議:棉麻面料的襯衫、薄長裙、薄T恤等') #輸出穿衣建議elif temperature >= 21.0: #如果溫度大于等于21.0小于24.0print('穿衣建議:單層棉麻面料的T恤衫、長褲、薄牛仔褲等') #輸出穿衣建議elif temperature >= 18.0: #如果溫度大于等于18.0小于21.0print('穿衣建議:薄外套、風衣、薄毛衣等') #輸出穿衣建議elif temperature >= 15.0: #如果溫度大于等于15.0小于18.0print('穿衣建議:風衣、外套、毛衣等') #輸出穿衣建議elif temperature >= 11.0: #如果溫度大于等于11.0小于15.0print('穿衣建議:毛衣、風衣、大衣等') #輸出穿衣建議elif temperature >= 6.0: #如果溫度大于等于6.0小于11.0print('穿衣建議:棉衣、冬大衣、薄羽絨服等') #輸出穿衣建議else: #以上條件都不滿足print('穿衣建議:羽絨服、厚棉衣、冬大衣等') #輸出穿衣建議if-elif-else語句2.3【運行結果】 程序運行結果如圖3-5所示。圖3-5 例3-2程序運行結果【程序說明】 每個else本身都隱含了一個條件,如第1個elif實質上表示條件24.0≤temperature<28.0成立,此隱含條件與對應的if所給出的條件完全相反。在編程時要善于利用隱含條件,使程序代碼清晰簡潔。嵌套的if語句2.4在if語句中又包含一個或多個if語句時,稱為if語句的嵌套,其基本語法格式如下。if 判斷條件1:if 判斷條件2:語句塊1else:語句塊2else:if 判斷條件3:語句塊3else:語句塊4嵌套的if語句2.4【例3-3】 分配任務。在社會實踐活動中有三項任務,分別是:種樹、采茶、打掃街道。依據小組人數及男生、女生人數決定小組的任務,人數小于5的小組負責打掃街道,人數大于等于5且男生多于女生的小組負責種樹,人數大于等于5且男生不多于女生的小組負責采茶。輸入小組男生、女生人數,輸出小組接受的任務。【問題分析】 本例題可使用嵌套的if語句實現,程序流程圖如圖3-6所示。嵌套的if語句2.4圖3-6 分配任務流程圖嵌套的if語句2.4【參考代碼】boy = int(input('請輸入男生人數:')) #輸入男生人數并轉化為整數girl = int(input('請輸入女生人數:')) #輸入女生人數并轉化為整數total = boy + girl #計算總人數if total < 5: #如果總人數小于5print('打掃街道') #輸出“打掃街道”else: #如果總人數大于等于5if boy > girl: #如果男生人數大于女生人數print('種樹') #輸出“種樹”else: #如果男生人數小于等于女生人數print('采茶') #輸出“采茶”嵌套的if語句2.4【運行結果】 程序運行結果如圖3-7所示。圖3-7 例3-3程序運行結果PART 03擺脫重復的任務while語句3.1while循環語句的基本語法格式如下。while 判斷條件:語句塊 #循環體上述語句的執行過程是:當判斷條件為True時,執行循環體;接著再次判斷條件,如果為True,繼續執行循環體;如此反復,直到判斷條件為False時結束循環,執行while語句后的語句。while語句3.1【例3-4】 輸入一個整數n,求S=1+2+3+…+n的值。【問題分析】 本例題可使用循環結構來實現。重復執行循環體n次,每次加一個數。繼續分析發現,每次累加的數是有規律的,后一個數是前一個數加1。因此,只需在加完上一個數i后,使i加1就可得到下一個數。【參考代碼】n = int(input('請輸入一個整數:')) #輸入n的值,并轉化為整數i = 1 #創建變量i,賦值為1S = 0 #創建變量S,賦值為0while i <= n: #循環,當i>n時結束S += i #求和,將結果賦給Si += 1 #變量i加1print('S=1+2+3+…+n=', S) #輸出S的值while語句3.1【運行結果】 程序運行結果如圖3-8所示。圖3-8 例3-4程序運行結果在使用while語句時,需要注意以下兩點。(1)變量初始化描述要完整、準確。(2)在循環體中應有使循環趨于結束的語句。for語句3.21.基本語法格式for語句的基本語法格式如下。for 變量in 序列:語句塊 #循環體上述語句的執行過程是:如果序列中包含表達式,則先進行求值計算;然后,序列中的第一個元素賦給變量,執行循環體;接著序列中的第二個元素賦給變量,執行循環體;依此類推,直到序列中最后一個元素賦給變量,執行循1環體后for循環結束,執行for語句后的語句。for語句3.21.基本語法格式例如,使用for循環輸出字符串“python”中的每一個字符,可使用下面代碼實現。for x in 'python':print(x)上述代碼運行結果如圖3-9所示。圖3-9 for循環輸出字符串“python”中的每一個字符for語句3.22. range()函數for語句經常與range()函數一起使用,range()函數是Python的內置函數,可創建一個整數列表。range()函數的語法格式如下。range([start,]stop[,step])(1)start:計數從start開始,默認為0。例如,range(5)等價于range(0,5)。(2)stop:計數到stop結束,但不包括stop。例如,range(0,5)是[0,1,2,3,4]。(3)step:步長,默認為1。例如,range(0,5)等價于range(0,5,1)。for語句3.22. range()函數【例3-5】 雞兔同籠。大約在1500年前,《孫子算經》中記載:“今有雉兔同籠,上有三十五頭,下有九十四足,問雉兔各幾何?”編程計算雞和兔的數量并輸出。【問題分析】 根據題意設雞和兔的數量分別為cock和rabbit,如果籠中全部是雞,雞的最大數量為35,所以cock在0~35取值,且rabbit=35 cock。確定了雞的范圍后進行窮舉并判斷,由于雞有兩只腳,兔有4只腳,所以判斷條件為雞和兔的腳的總數量為94。【參考代碼】for cock in range(0, 35 + 1): #循環范圍為0~35,cock表示雞的數量rabbit = 35 - cock #計算兔的數量if cock * 2 + rabbit * 4 == 94: #如果雞和兔的腳的總數為94print('雞有', cock, '只') #輸出雞的數量print('兔有', rabbit, '只') #輸出兔的數量for語句3.22. range()函數【運行結果】 程序運行結果如圖3-10所示。圖3-10 例3-5程序運行結果嵌套的循環語句3.3一個循環語句的循環體內包含另一個完整的循環結構,稱為循環的嵌套。嵌套在循環體內的循環稱為內循環,嵌套有內循環的循環稱為外循環。內循環中還可以嵌套循環,這就是多重循環。while語句和for語句可以互相嵌套,自由組合。外層循環體中可以包含一個或多個內層循環結構,但要注意的是,各循環必須完整包含,相互之間不允許有交叉現象。嵌套的循環語句3.3【例3-6】 輸出下面九九乘法表。1*1=11*2=2 2*2=41*3=3 2*3=6 3*3=91*4=4 2*4=8 3*4=12 4*4=16…… …… …… …… ……1*9=9 2*9=18 3*9=27 4*9=36 …… 9*9=81【問題分析】 該問題可使用for語句的循環嵌套來實現,外循環控制行,內循環控制列。嵌套的循環語句3.3【參考代碼】for x in range(1, 10): #循環變量x從1到9for y in range(1, x + 1): #循環變量y從1到xprint(y, '*', x, '=', x * y, '', end='') #輸出乘法表達式print('') #輸出空字符串,換行【運行結果】 程序運行結果如圖3-11所示。圖3-11 例3-6程序運行結果break和continue語句3.4【例3-7】 身份驗證。循環判斷用戶輸入的賬號和密碼是否正確,如果正確則退出。1. break語句【問題分析】 首先設定用戶的正確賬號和密碼;然后使用while循環,在循環中,輸入賬號和密碼,如果都正確則輸出登錄成功并跳出循環,否則輸出賬號或密碼輸入有誤,繼續循環。break和continue語句3.41. break語句【參考代碼】name = 'python' #創建變量name表示正確賬號password = '12345678' #創建變量password表示正確密碼while True: #循環name_input = input('請輸入賬號:') #輸入賬號password_input = input('請輸入密碼:') #輸入密碼if name != name_input : #如果賬號不正確print('輸入的賬號有誤!') #輸出賬號有誤elif password != password_input: #如果密碼不正確print('輸入的密碼有誤!') #輸出密碼有誤else: #如果賬號和密碼都正確print('登錄成功!') #輸出登錄成功break #跳出循環break和continue語句3.41. break語句【運行結果】 程序運行結果如圖3-12所示。圖3-12 例3-7程序運行結果break和continue語句3.4【例3-8】 學生休息詢問。班級組織徒步,全程5公里,每1公里詢問學生是否需要休息,如果需要則休息10分鐘,否則繼續徒步。2. continue語句【問題分析】 使用for循環語句,并使用range(1, 6)生成循環變量。在循環中輸出已徒步的公里數,然后輸入“y”或“n”回答是否需要休息,如果輸入為“n”則使用continue語句結束本次循環,不輸出后面的休息10分鐘。結束循環后,輸出到達終點。【參考代碼】for i in range(1, 6): #循環變量i從1到5print('已徒步', i, '公里') #輸出已徒步的公里數if i != 5:answer = input('是否需要休息?(y/n):') #輸入回復if answer == 'n': #如果回復為“n”continue #結束本次循環print('休息10分鐘') #輸出休息10分鐘print('到達終點') #輸出到達終點break和continue語句3.4【運行結果】 程序運行結果如圖3-13所示。2. continue語句圖3-13 例3-8程序運行結果【程序說明】 若把程序中的continue語句換成break語句,則輸入第一個“n”后將會終止程序。感謝觀看 展開更多...... 收起↑ 資源預覽 縮略圖、資源來源于二一教育資源庫