王芳
[摘 要]循環(huán)結(jié)構(gòu)是高中信息技術(shù)Python程序設(shè)計的重要基礎(chǔ)知識。為了讓學(xué)生更好地理解、掌握Python程序設(shè)計中的for循環(huán)和while循環(huán),正確地編寫程序解決相關(guān)問題,教師應(yīng)結(jié)合學(xué)生的實際,做好充分的教學(xué)準備,積極采取針對性教學(xué)策略,使學(xué)生以高漲的熱情投入課堂學(xué)習(xí)。
[關(guān)鍵詞]高中信息技術(shù);Python;循環(huán)結(jié)構(gòu)
[中圖分類號]? ? G633.67? ? ? ? [文獻標識碼]? ? A? ? ? ? [文章編號]? ? 1674-6058(2022)14-0094-03
Python循環(huán)結(jié)構(gòu)知識較為抽象,為了增強學(xué)生的學(xué)習(xí)體驗,樹立其學(xué)習(xí)信心,教師應(yīng)做好課堂導(dǎo)入,并與學(xué)生積極互動,鼓勵學(xué)生開展課堂討論,進一步澄清學(xué)生的模糊認識,避免其走進理解的誤區(qū)。同時,教師還應(yīng)針對性設(shè)計課堂訓(xùn)練習(xí)題,幫助學(xué)生及時鞏固所學(xué)知識,積累運用for循環(huán)、while循環(huán)編寫程序代碼的經(jīng)驗。
一、教學(xué)實踐
(一)回顧知識,導(dǎo)入新課
為了幫助學(xué)生鞏固所學(xué)的Python語句的順序結(jié)構(gòu)、選擇結(jié)構(gòu)知識,自然地引入要講解的循環(huán)結(jié)構(gòu)內(nèi)容,使學(xué)生更好地把握三種結(jié)構(gòu)的區(qū)別與聯(lián)系,為其靈活應(yīng)用Python循環(huán)結(jié)構(gòu)知識奠定堅實的基礎(chǔ),在講解Python循環(huán)結(jié)構(gòu)之前,教師要求學(xué)生回顧所學(xué)的順序結(jié)構(gòu)、選擇結(jié)構(gòu)知識。
待學(xué)生回顧所學(xué)的順序結(jié)構(gòu)、選擇結(jié)構(gòu)知識后,教師創(chuàng)設(shè)如下生活情境,引導(dǎo)學(xué)生思考討論這些生活情境有哪些特點:(1)用打印機打印50張試卷;(2)繞操場跑1000米;(3)鐘表指針的轉(zhuǎn)動。
學(xué)生通過思考與討論發(fā)現(xiàn),上述情境中存在著“重復(fù)”的現(xiàn)象?;诖耍處煾嬷獙W(xué)生生活中一些具有“重復(fù)”特點的行為可使用Python中的循環(huán)結(jié)構(gòu)進行描述,并讓學(xué)生知道:通過運用Python中的循環(huán)結(jié)構(gòu)編寫專門的程序,替代一些重復(fù)、復(fù)雜的勞動,可很好地提高人們的辦事效率。由此導(dǎo)入新課:“Python中的循環(huán)結(jié)構(gòu)主要包括for循環(huán)和while循環(huán),這些是今天我們所要學(xué)習(xí)的內(nèi)容。”這樣,既能消除學(xué)生對新知識的陌生感,又能使學(xué)生認識到循環(huán)結(jié)構(gòu)的重要意義,有助于激發(fā)學(xué)生的學(xué)習(xí)熱情。
(二)講解for循環(huán)
在給學(xué)生講解for循環(huán)時,為了更好地吸引學(xué)生的注意力,增強學(xué)生的學(xué)習(xí)體驗,教師應(yīng)使用多媒體技術(shù),圍繞相關(guān)的案例、問題與學(xué)生進行積極互動,這樣也可以進一步深化學(xué)生對for循環(huán)知識的理解。
教師可利用多媒體課件給學(xué)生展示for循環(huán)語句的一般格式。for循環(huán)語句的一般格式并不復(fù)雜,也不難記憶,但要想深刻理解并非易事,其中,把握 for循環(huán)包含的語句、正確理解語句中縮進的含義是學(xué)生的學(xué)習(xí)難點。對此,教師可要求學(xué)生認真觀察以下兩段程序代碼,找到它們的區(qū)別。
for value in[1,2,3,4,5]? ? ? for value in[1,2,3,4,5]
print(value)? ? ? ? ? ? ? ? ? ? ? ? ? print(value)
print(‘good)? ? ? ? ? ? ? ? ? ? ?print(‘good)
而后詢問學(xué)生:上述程序代碼的書寫格式是否會對程序運行結(jié)果造成影響?你認為兩段程序代碼輸出的結(jié)果是怎樣的?讓學(xué)生暢所欲言。部分學(xué)生認為沒有影響,而部分學(xué)生則不知道如何回答。教師告訴學(xué)生:上述兩段程序代碼輸出的結(jié)果是不同的。
當(dāng)學(xué)生百思不得其解時,教師可利用多媒體課件為學(xué)生展示上述兩段程序代碼的運行結(jié)果,使學(xué)生清晰地看到:當(dāng)for下面的語句沒有縮進時,程序在運行時會將下面所有內(nèi)容作為循環(huán)的內(nèi)容,直到遇到不縮進的代碼段,便不再執(zhí)行。
教師還要為學(xué)生展示for循環(huán)的不同表現(xiàn)形式,如直接羅列、先定義后使用、使用range( )函數(shù),同時要求學(xué)生分析for循環(huán)的三種表現(xiàn)形式的區(qū)別。學(xué)生通過觀察不難發(fā)現(xiàn),“直接羅列”和for循環(huán)的一般格式相同,而“先定義后使用”則需要將列表的內(nèi)容賦值給一個參數(shù),再直接引用參數(shù)。教材中的“values=[1,2,3,4,5]”就是先將列表內(nèi)容賦值給參數(shù)“values”,而后使用語句“for value in values”實現(xiàn)對其的引用。其中使用range( )函數(shù)時需要充分理解該函數(shù)中不同參數(shù)表示的含義。教師應(yīng)為學(xué)生詳細講解range( )函數(shù)內(nèi)容。range( )函數(shù),一般包括三個參數(shù),第一個參數(shù)是開始的參數(shù),第二個參數(shù)是結(jié)束的參數(shù),第三個參數(shù)是步長,表示從第一個參數(shù)到第二個參數(shù)是以何種規(guī)律實現(xiàn)的,默認數(shù)值是1。為了使學(xué)生更好地理解range( )函數(shù),教師為學(xué)生講解了如下不同參數(shù)輸出的結(jié)果:range(2,11,2)表示的是從2開始按照每次加2的規(guī)律輸出,但最大不能達到11,對應(yīng)的輸出結(jié)果為2,4,6,8,10;range(11,2,-2)表示的是從11開始按照每次加-2的規(guī)律輸出,但最小不能達到2,對應(yīng)的輸出結(jié)果為11,9,7,5,3。如此,學(xué)生便能更好地理解range( )函數(shù)。
(三)講解while循環(huán)
for循環(huán)可通過range( )函數(shù)控制循環(huán)的開始與結(jié)束,而while循環(huán)則與之不同。while循環(huán)需要先判斷表達式是否滿足一定的條件,只有滿足了條件要求,即表達式的值為真時,才會執(zhí)行循環(huán)內(nèi)容。課堂上,教師要求學(xué)生認真閱讀課本內(nèi)容,把握while循環(huán)結(jié)構(gòu)的構(gòu)成。其中while循環(huán)需要結(jié)合相關(guān)的表達式使用,因此教師與學(xué)生一起回顧所學(xué)的Python表達式,并設(shè)計相關(guān)的問題,要求學(xué)生判斷表達式的結(jié)果,為其能夠?qū)懗稣_的while循環(huán)語句奠定基礎(chǔ)。具體如下:
3<=4,3>4,3!=4,4!=4>5,2>1 and 3<2,2 or 3,2>1 or 3<2,not 3<2。
而后教師公布上述表達式的正確結(jié)果,給學(xué)生預(yù)留一定的思考時間,讓其結(jié)合自身的判斷結(jié)果,總結(jié)哪些表達式結(jié)果判斷錯誤,從而及時查漏補缺,堵住知識漏洞。另外,教師再結(jié)合具體的代碼為學(xué)生分析while循環(huán)語句的執(zhí)行過程,使其認識到在編寫while循環(huán)語句時必須有改變條件表達式值的語句,避免陷入無限循環(huán)之中。
在運用for循環(huán)、while循環(huán)編寫程序代碼解決實際問題時,一些控制循環(huán)的條件往往難以控制,此時需要在代碼中輸入關(guān)鍵字用于中斷循環(huán)。為了使學(xué)生掌握break語句、continue語句在中斷程序循環(huán)時的區(qū)別,教師應(yīng)為學(xué)生分析具體的程序代碼,并通過程序代碼的運行,加深學(xué)生的理解。循環(huán)程序在遇到break語句時便會跳出循環(huán),不再執(zhí)行循環(huán)體中break語句下面的代碼內(nèi)容;而continue語句則表示跳過本次循環(huán)結(jié)束前的語句,繼續(xù)回到循環(huán)開頭部分開始新一輪的循環(huán)。
(四)講解循環(huán)的嵌套
運用程序解決實際問題時往往需要同時用到for循環(huán)和while循環(huán),當(dāng)一個循環(huán)的循環(huán)體中套有另一個循環(huán)時,稱為循環(huán)的嵌套。循環(huán)的嵌套在程序設(shè)計中有著廣泛的應(yīng)用,但是該部分知識較為抽象,不易理解,因此教師應(yīng)注重結(jié)合具體的程序,為學(xué)生介紹循環(huán)嵌套應(yīng)注意的細節(jié),為其靈活應(yīng)用循環(huán)嵌套做好鋪墊。
首先,使用循環(huán)嵌套時,內(nèi)外循環(huán)的循環(huán)體應(yīng)嚴格按照各自的格式書寫,不能出現(xiàn)交叉現(xiàn)象,否則程序會出錯;其次,當(dāng)外循環(huán)每執(zhí)行一次循環(huán)時,內(nèi)循環(huán)往往會完成所有的循環(huán);最后,循環(huán)嵌套中內(nèi)循環(huán)需要引用外循環(huán)的參數(shù)。
例如,以下兩段程序代碼均能實現(xiàn)打印9×9乘法表,但是打出的9×9乘法表的格式是完全不同的,教師可引導(dǎo)學(xué)生思考這兩段程序代碼打印出的9×9乘法表的格式是怎樣的,以及為什么是這樣的。
for i in range(1,10)
for j in range(1,i+1)
print(f=“{j}×{i}={i*j}”,end=“/t”)
print(“”)
for i in range(1,10)
for j in range(i,10)
print(f=“{j}×{i}={i*j}”,end=“/t”)
print(“”)
教師可為學(xué)生講解上述兩段程序代碼的執(zhí)行過程,加深學(xué)生對循環(huán)嵌套的認識與理解。
(五)討論兩種循環(huán)結(jié)構(gòu)
為了使學(xué)生更加清晰、全面地掌握兩種循環(huán)結(jié)構(gòu)之間的區(qū)別與聯(lián)系,教師設(shè)計以下問題引導(dǎo)學(xué)生討論:(1)for循環(huán)和while循環(huán)各有什么特點?(2)在編寫程序時如何選擇循環(huán)結(jié)構(gòu)?(3)兩種循環(huán)嵌套時應(yīng)注意哪些問題?
通過討論學(xué)生發(fā)現(xiàn),for循環(huán)比較適合同一類對象的循環(huán),如數(shù)值,而且知道循環(huán)次數(shù)并且可使用range( )函數(shù)控制循環(huán)的步長;while循環(huán)是通過條件控制的循環(huán),并不知道循環(huán)多少次。因此,在編寫程序時在知道循環(huán)次數(shù)時應(yīng)選擇for循環(huán),在不知道循環(huán)次數(shù)時應(yīng)選擇while循環(huán)。運用循環(huán)結(jié)構(gòu)解決實際問題時往往會涉及循環(huán)的嵌套,但是循環(huán)的嵌套需要遵循一定規(guī)則,即嵌套時應(yīng)保證for循環(huán)和while循環(huán)各自代碼的完整性,代碼內(nèi)容不能穿插。
(六)安排課堂習(xí)題訓(xùn)練
學(xué)生完成上述兩種循環(huán)結(jié)構(gòu)的學(xué)習(xí)后,為了及時幫助學(xué)生鞏固所學(xué),鍛煉學(xué)生學(xué)以致用的能力,教師應(yīng)安排相應(yīng)的習(xí)題訓(xùn)練。
訓(xùn)練習(xí)題一:使用循環(huán)結(jié)構(gòu)編寫程序計算1+2+3+…+100的值。
訓(xùn)練習(xí)題二:使用所學(xué)的循環(huán)知識編寫程序,打印出如下圖案。
訓(xùn)練習(xí)題三:分別判斷以下兩段程序代碼的輸出結(jié)果。
(1)for i in range(5):
if i==3:
break
else:
print(‘循環(huán)輸出,i)
(2)for i in range(5):
if i==3:
continue
else:
print(‘循環(huán)輸出,i)
上述三道訓(xùn)練習(xí)題分別考查了循環(huán)結(jié)構(gòu)、循環(huán)結(jié)構(gòu)的嵌套、break語句和continue語句的區(qū)別。學(xué)生只要能夠正確地編寫出相關(guān)的程序代碼和判斷程序代碼的輸出結(jié)果,就表明其已經(jīng)牢固掌握了上述知識。
二、教學(xué)反思
通過Python循環(huán)結(jié)構(gòu)的教學(xué)實踐,筆者得到了以下啟示:
(一)做好充分準備
Python循環(huán)結(jié)構(gòu)是高中信息技術(shù)的重點與難點內(nèi)容,為了順利地實現(xiàn)教學(xué)目標,教師應(yīng)做好充分的教學(xué)準備。一方面,做好教學(xué)素材的收集工作,尤其是要認真制作相關(guān)的多媒體課件;另一方面,精心設(shè)計各個教學(xué)環(huán)節(jié),包括該怎樣引入新知識、設(shè)計怎樣的教學(xué)問題、達到什么樣的教學(xué)效果等。
(二)注重預(yù)留空白
在學(xué)習(xí)Python循環(huán)結(jié)構(gòu)之前,學(xué)生已經(jīng)掌握了一些基本的信息技術(shù)知識。在教學(xué)中,教師應(yīng)凸顯學(xué)生的主體地位,通過創(chuàng)設(shè)相關(guān)的問題情境,給學(xué)生預(yù)留空白時間,促使其積極開展自主學(xué)習(xí)活動、進行相關(guān)的思考與討論,使學(xué)生搞清楚相關(guān)知識的來龍去脈以及區(qū)別與聯(lián)系。
(三)展示具體案例
在教學(xué)Python循環(huán)結(jié)構(gòu)時,教師不能滿足于學(xué)生牢固記憶相關(guān)的理論知識,應(yīng)注重引導(dǎo)與啟發(fā)學(xué)生深入地理解程序的具體運行過程,從而編寫出正確的Python循環(huán)程序。因此,在教學(xué)中,教師應(yīng)多給學(xué)生講解具體的案例,并展示程序的實際運行結(jié)果,進一步深化學(xué)生對相關(guān)知識的理解,同時要通過與學(xué)生積極互動,使學(xué)生認識并積極糾正理解上的偏差,進一步強化學(xué)生的學(xué)習(xí)體驗以及提高學(xué)生的學(xué)習(xí)信心。
(四)及時幫助學(xué)生夯實所學(xué)知識
在Python循環(huán)結(jié)構(gòu)的教學(xué)實踐中,教師應(yīng)結(jié)合學(xué)生的實際情況,為學(xué)生安排相關(guān)的習(xí)題訓(xùn)練,及時幫助學(xué)生夯實所學(xué)知識。教師可要求學(xué)生結(jié)合對所學(xué)知識的理解,編寫相關(guān)的程序,同時鼓勵其在計算機上運行程序,找到程序運行中出現(xiàn)的錯誤,認真分析原因,改正錯誤,直到程序能夠順利運行。這樣,不僅能夠起到幫助學(xué)生鞏固所學(xué)知識的目的,而且能夠讓學(xué)生積累豐富的程序編寫經(jīng)驗。
[? ?參? ?考? ?文? ?獻? ?]
[1]? 楊金鳳.美麗的水仙花芬芳了Python教學(xué):高中信息技術(shù)課程程序設(shè)計教學(xué)探索[J].試題與研究,2021(19):35-36.
[2]? 張文婷.以項目為載體的高中“Python語言程序設(shè)計”課程教學(xué)設(shè)計[J].漢字文化,2021(7):150-151.
[3]? 周耀楓.python在高中信息技術(shù)教學(xué)的研究[J].計算機與網(wǎng)絡(luò),2021(2):31.
[4]? 姜華,肖進.談?wù)劯咧行抡n標下Python課程對學(xué)生計算思維的培養(yǎng)[J].中國教育技術(shù)裝備,2020(21):80-82.
[5]? 張華蘭.高中Python校本課程的設(shè)計與實施[J].讀寫算,2020(35):183-184.
[6]? 崔凱.基于學(xué)科核心素養(yǎng)的高中信息技術(shù)Python教學(xué)分析[J].中小學(xué)電教(教學(xué)),2020(10):5-6.
[7]? 于雁.高中信息技術(shù)python模擬程序的編寫及應(yīng)用[J].電腦知識與技術(shù),2019(30):224-225.
[8]? 華衛(wèi)鑄.高中信息技術(shù)課程序設(shè)計教學(xué)之我見[J].讀寫算,2020(13):162.
[9]? 邢振興.高中信息技術(shù)中的算法與程序設(shè)計教學(xué)[J].現(xiàn)代教育科學(xué)(中學(xué)教師),2013(S2):177.
[10]? 陽甫清.高中信息技術(shù)之程序設(shè)計語言教學(xué)方法淺析[J].成功(教育),2013(18):298.
(責(zé)任編輯 黃春香)