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