安徽省潁上第一中學(236200)王 芳
Python 循環結構知識較為抽象,為了增強學生的學習體驗,樹立其學習信心,教師應做好課堂導入,并與學生積極互動,鼓勵學生開展課堂討論,進一步澄清學生的模糊認識,避免其走進理解的誤區。同時,教師還應針對性設計課堂訓練習題,幫助學生及時鞏固所學知識,積累運用for循環、while循環編寫程序代碼的經驗。
為了幫助學生鞏固所學的Python 語句的順序結構、選擇結構知識,自然地引入要講解的循環結構內容,使學生更好地把握三種結構的區別與聯系,為其靈活應用Python循環結構知識奠定堅實的基礎,在講解Python 循環結構之前,教師要求學生回顧所學的順序結構、選擇結構知識。
待學生回顧所學的順序結構、選擇結構知識后,教師創設如下生活情境,引導學生思考討論這些生活情境有哪些特點:(1)用打印機打印50 張試卷;(2)繞操場跑1000米;(3)鐘表指針的轉動。
學生通過思考與討論發現,上述情境中存在著“重復”的現象。基于此,教師告知學生生活中一些具有“重復”特點的行為可使用Python 中的循環結構進行描述,并讓學生知道:通過運用Python中的循環結構編寫專門的程序,替代一些重復、復雜的勞動,可很好地提高人們的辦事效率。由此導入新課:“Python 中的循環結構主要包括for 循環和while 循環,這些是今天我們所要學習的內容。”這樣,既能消除學生對新知識的陌生感,又能使學生認識到循環結構的重要意義,有助于激發學生的學習熱情。
在給學生講解for 循環時,為了更好地吸引學生的注意力,增強學生的學習體驗,教師應使用多媒體技術,圍繞相關的案例、問題與學生進行積極互動,這樣也可以進一步深化學生對for 循環知識的理解。
教師可利用多媒體課件給學生展示for 循環語句的一般格式。for 循環語句的一般格式并不復雜,也不難記憶,但要想深刻理解并非易事,其中,把握for 循環包含的語句、正確理解語句中縮進的含義是學生的學習難點。對此,教師可要求學生認真觀察以下兩段程序代碼,找到它們的區別。

而后詢問學生:上述程序代碼的書寫格式是否會對程序運行結果造成影響?你認為兩段程序代碼輸出的結果是怎樣的?讓學生暢所欲言。部分學生認為沒有影響,而部分學生則不知道如何回答。教師告訴學生:上述兩段程序代碼輸出的結果是不同的。
當學生百思不得其解時,教師可利用多媒體課件為學生展示上述兩段程序代碼的運行結果,使學生清晰地看到:當for 下面的語句沒有縮進時,程序在運行時會將下面所有內容作為循環的內容,直到遇到不縮進的代碼段,便不再執行。
教師還要為學生展示for 循環的不同表現形式,如直接羅列、先定義后使用、使用range()函數,同時要求學生分析for 循環的三種表現形式的區別。學生通過觀察不難發現,“直接羅列”和for循環的一般格式相同,而“先定義后使用”則需要將列表的內容賦值給一個參數,再直接引用參數。教材中的“values=[1,2,3,4,5]”就是先將列表內容賦值給參數“values”,而后使用語句“for value in values”實現對其的引用。其中使用range()函數時需要充分理解該函數中不同參數表示的含義。教師應為學生詳細講解range()函數內容。range()函數,一般包括三個參數,第一個參數是開始的參數,第二個參數是結束的參數,第三個參數是步長,表示從第一個參數到第二個參數是以何種規律實現的,默認數值是1。為了使學生更好地理解range()函數,教師為學生講解了如下不同參數輸出的結果:range(2,11,2)表示的是從2開始按照每次加2 的規律輸出,但最大不能達到11,對應的輸出結果為2,4,6,8,10;range(11,2,-2)表示的是從11 開始按照每次加-2 的規律輸出,但最小不能達到2,對應的輸出結果為11,9,7,5,3。如此,學生便能更好地理解range()函數。
for循環可通過range()函數控制循環的開始與結束,而while 循環則與之不同。while 循環需要先判斷表達式是否滿足一定的條件,只有滿足了條件要求,即表達式的值為真時,才會執行循環內容。課堂上,教師要求學生認真閱讀課本內容,把握while 循環結構的構成。其中while 循環需要結合相關的表達式使用,因此教師與學生一起回顧所學的Python 表達式,并設計相關的問題,要求學生判斷表達式的結果,為其能夠寫出正確的while 循環語句奠定基礎。具體如下:

而后教師公布上述表達式的正確結果,給學生預留一定的思考時間,讓其結合自身的判斷結果,總結哪些表達式結果判斷錯誤,從而及時查漏補缺,堵住知識漏洞。另外,教師再結合具體的代碼為學生分析while 循環語句的執行過程,使其認識到在編寫while 循環語句時必須有改變條件表達式值的語句,避免陷入無限循環之中。
在運用for 循環、while 循環編寫程序代碼解決實際問題時,一些控制循環的條件往往難以控制,此時需要在代碼中輸入關鍵字用于中斷循環。為了使學生掌握break語句、continue語句在中斷程序循環時的區別,教師應為學生分析具體的程序代碼,并通過程序代碼的運行,加深學生的理解。循環程序在遇到break 語句時便會跳出循環,不再執行循環體中break語句下面的代碼內容;而continue語句則表示跳過本次循環結束前的語句,繼續回到循環開頭部分開始新一輪的循環。
運用程序解決實際問題時往往需要同時用到for 循環和while 循環,當一個循環的循環體中套有另一個循環時,稱為循環的嵌套。循環的嵌套在程序設計中有著廣泛的應用,但是該部分知識較為抽象,不易理解,因此教師應注重結合具體的程序,為學生介紹循環嵌套應注意的細節,為其靈活應用循環嵌套做好鋪墊。
首先,使用循環嵌套時,內外循環的循環體應嚴格按照各自的格式書寫,不能出現交叉現象,否則程序會出錯;其次,當外循環每執行一次循環時,內循環往往會完成所有的循環;最后,循環嵌套中內循環需要引用外循環的參數。
例如,以下兩段程序代碼均能實現打印9×9 乘法表,但是打出的9×9 乘法表的格式是完全不同的,教師可引導學生思考這兩段程序代碼打印出的9×9乘法表的格式是怎樣的,以及為什么是這樣的。

教師可為學生講解上述兩段程序代碼的執行過程,加深學生對循環嵌套的認識與理解。
為了使學生更加清晰、全面地掌握兩種循環結構之間的區別與聯系,教師設計以下問題引導學生討論:(1)for循環和while循環各有什么特點?(2)在編寫程序時如何選擇循環結構?(3)兩種循環嵌套時應注意哪些問題?
通過討論學生發現,for 循環比較適合同一類對象的循環,如數值,而且知道循環次數并且可使用range()函數控制循環的步長;while 循環是通過條件控制的循環,并不知道循環多少次。因此,在編寫程序時在知道循環次數時應選擇for 循環,在不知道循環次數時應選擇while 循環。運用循環結構解決實際問題時往往會涉及循環的嵌套,但是循環的嵌套需要遵循一定規則,即嵌套時應保證for 循環和while循環各自代碼的完整性,代碼內容不能穿插。
學生完成上述兩種循環結構的學習后,為了及時幫助學生鞏固所學,鍛煉學生學以致用的能力,教師應安排相應的習題訓練。
訓練習題一:使用循環結構編寫程序計算1+2+3+…+100的值。
訓練習題二:使用所學的循環知識編寫程序,打印出如下圖案。

訓練習題三:分別判斷以下兩段程序代碼的輸出結果。

上述三道訓練習題分別考查了循環結構、循環結構的嵌套、break語句和continue語句的區別。學生只要能夠正確地編寫出相關的程序代碼和判斷程序代碼的輸出結果,就表明其已經牢固掌握了上述知識。
通過Python循環結構的教學實踐,筆者得到了以下啟示:
Python 循環結構是高中信息技術的重點與難點內容,為了順利地實現教學目標,教師應做好充分的教學準備。一方面,做好教學素材的收集工作,尤其是要認真制作相關的多媒體課件;另一方面,精心設計各個教學環節,包括該怎樣引入新知識、設計怎樣的教學問題、達到什么樣的教學效果等。
在學習Python循環結構之前,學生已經掌握了一些基本的信息技術知識。在教學中,教師應凸顯學生的主體地位,通過創設相關的問題情境,給學生預留空白時間,促使其積極開展自主學習活動、進行相關的思考與討論,使學生搞清楚相關知識的來龍去脈以及區別與聯系。
在教學Python循環結構時,教師不能滿足于學生牢固記憶相關的理論知識,應注重引導與啟發學生深入地理解程序的具體運行過程,從而編寫出正確的Python 循環程序。因此,在教學中,教師應多給學生講解具體的案例,并展示程序的實際運行結果,進一步深化學生對相關知識的理解,同時要通過與學生積極互動,使學生認識并積極糾正理解上的偏差,進一步強化學生的學習體驗以及提高學生的學習信心。
在Python循環結構的教學實踐中,教師應結合學生的實際情況,為學生安排相關的習題訓練,及時幫助學生夯實所學知識。教師可要求學生結合對所學知識的理解,編寫相關的程序,同時鼓勵其在計算機上運行程序,找到程序運行中出現的錯誤,認真分析原因,改正錯誤,直到程序能夠順利運行。這樣,不僅能夠起到幫助學生鞏固所學知識的目的,而且能夠讓學生積累豐富的程序編寫經驗。