戴曉芬 浙江省寧波市奉化區(qū)江口中學(xué)
傳統(tǒng)的Python編程教學(xué)(講授編程知識結(jié)合簡單上機練習(xí))枯燥乏味并脫離實際生活情境,為了改變這種狀況,筆者以《循環(huán)結(jié)構(gòu)的程序?qū)崿F(xiàn)》一課為例提出將Python教學(xué)內(nèi)容融入到解決數(shù)學(xué)問題的案例中,用編程解決數(shù)學(xué)問題,以激發(fā)學(xué)生的興趣并拓展學(xué)生的計算思維和問題解決的能力。
教師借助數(shù)學(xué)中“水仙花數(shù)”的概念自然地引出問題:“什么樣的數(shù)可以稱為‘水仙花數(shù)’?需要滿足什么條件?”以此作為切入點,引導(dǎo)學(xué)生用編程求解“水仙花數(shù)”,意在實現(xiàn)兩個目標(biāo):①借助程序?qū)嵗?,結(jié)合學(xué)生已有知識儲備,引導(dǎo)學(xué)生理解并掌握循環(huán)結(jié)構(gòu)之for語句的執(zhí)行過程;②引導(dǎo)學(xué)生復(fù)習(xí)鞏固已學(xué)知識,包括if條件語句的結(jié)構(gòu)特點及使用等。
在本環(huán)節(jié),教師引導(dǎo)學(xué)生借助之前所學(xué)的Python基礎(chǔ)知識,并結(jié)合數(shù)學(xué)定義,進一步分析并解決問題。
在課堂教學(xué)中,首先,教師應(yīng)根據(jù)教材內(nèi)容明確教學(xué)目標(biāo)及重難點,結(jié)合學(xué)生的實際情況和認(rèn)知水平確定上課的流程并對各環(huán)節(jié)進行統(tǒng)籌安排。明確的教學(xué)目標(biāo)能夠給學(xué)生清晰的指引,合理的內(nèi)容安排可以給學(xué)生提供“跳一跳就夠得著”的學(xué)習(xí)動力。其次,在教師講解的過程中,學(xué)生需要結(jié)合所學(xué)的Python知識分析問題,提出解決方案及實施方案。最后,學(xué)生在課堂上分享自己的編碼過程及心得體會,并進行反思與總結(jié)。學(xué)生在整個學(xué)習(xí)過程中經(jīng)歷了分析問題、提出解決方案、問題解決與實施、合作與經(jīng)驗分享等環(huán)節(jié),并及時進行反思與總結(jié),達到了提升計算思維的目的。
例如,在《循環(huán)結(jié)構(gòu)的程序?qū)崿F(xiàn)》一課中“水仙花數(shù)”是指一個三位數(shù),其各位數(shù)字的立方之和等于該數(shù)字本身。在概念明確后,就可以優(yōu)先鎖定三位數(shù)的范圍,然后再根據(jù)條件去判斷哪些是符合條件的正確解。在此基礎(chǔ)上,教師再引出問題:“如何用Python語句將所有三位數(shù)羅列出來?”“如何編寫Python語言來鎖定哪些三位數(shù)就是‘水仙花數(shù)’?”
計算機最擅長的就是重復(fù),一個循環(huán)就是一組重復(fù)執(zhí)行的語句。Python提供了兩種類型的循環(huán)語句:for語句和while語句。while語句是一種條件控制循環(huán),根據(jù)條件是否成立來控制循環(huán)次數(shù)。在while循環(huán)中,在每個循環(huán)周期前進行條件檢測,如果一開始條件檢測的結(jié)果為“假”,則循環(huán)體一次都不執(zhí)行。for語句是一種計數(shù)器控制循環(huán),會重復(fù)特定的次數(shù)。序列中元素會依次賦值給變量,然后執(zhí)行一次循環(huán)體,當(dāng)序列中的元素全部遍歷完時,程序自動退出,循環(huán)結(jié)束。
for循環(huán)語句的使用比較方便,如要依次顯示某位學(xué)生的興趣愛好(籃球、羽毛球、看書、旅游、音樂),可通過圖1所示的Python編程語句實現(xiàn)。該程序代碼可依次輸出這位學(xué)生的興趣愛好,運行結(jié)果如圖2所示。
圖1
圖2
而range函數(shù)則是由三個參數(shù)(起始值、終值、步長值)來決定序列中元素的個數(shù)和范圍。若起始值缺省,則默認(rèn)值為0,并且這三個參數(shù)必須為整數(shù)。例如,range(10)等價于range(0,10,1),可以生成0~9這10個整數(shù)序列:0、1、2、3、4、5、6、7、8、9。所以,當(dāng)序列中的元素為有序整數(shù)時,一般可以將for循環(huán)語句和Python內(nèi)建函數(shù)range()配合使用。
當(dāng)理清解題思路后,《循環(huán)結(jié)構(gòu)的程序?qū)崿F(xiàn)》一課可以這樣設(shè)計:根據(jù)已知條件與所求解之間的關(guān)系,一一列出所有可能的解,再根據(jù)條件判斷哪些是正確解并進行輸出。首先,明確“水仙花數(shù)”指的是三位數(shù)的整數(shù),那么通過range()函數(shù)設(shè)定三位數(shù)的區(qū)間范圍,即range(100,1000,1)可以鎖定范圍是100~999區(qū)間內(nèi)的三位數(shù),同時需要學(xué)生結(jié)合之前所學(xué)的數(shù)學(xué)基本運算符知識分別求出三位數(shù)的個、十、百位,依次用a、b、c三個變量來表示。如果用變量i來表示三位數(shù),那么a=i//100表達式求得的是該三位數(shù)的百位、b=i//10%10求得的是該三位數(shù)的十位、c=i%10求得的是該三位數(shù)的個位。因此,判斷該三位數(shù)是否為水仙花數(shù)的條件可以通過是否滿足if條件語句a**3+b**3+c**3==i來驗證,如果該if條件語句成立,那就驗證了這個三位數(shù)其各位數(shù)字的立方之和等于該數(shù)字本身,就是符合要求的“水仙花數(shù)”,該實例的程序代碼如下頁圖3所示,程序運行結(jié)果如下頁圖4所示。
圖3
圖4
在課堂上,程序代碼以半成品的形式發(fā)給學(xué)生,要求補充空缺的代碼。學(xué)生在小組合作的基礎(chǔ)上編寫代碼填補空缺并調(diào)試程序。在課堂上,教師時刻觀察每個小組學(xué)生的反應(yīng),并及時給予指導(dǎo)。在課堂最后,教師針對學(xué)生完成任務(wù)過程中遇到的問題進行歸納與分析,適時總結(jié)本節(jié)課的重難點,并對表現(xiàn)優(yōu)異的小組給予肯定和表揚。
該環(huán)節(jié)是學(xué)生計算思維形成的關(guān)鍵階段,充分發(fā)揮了學(xué)生的主觀能動性,圍繞數(shù)學(xué)實例并結(jié)合問題的解決幫助學(xué)生一步步搭建起了思維的架構(gòu)。學(xué)生在教師的引導(dǎo)和小組成員的互幫互助下,在解決問題的同時也輕松掌握了循環(huán)結(jié)構(gòu)的程序?qū)崿F(xiàn)之for語句的結(jié)構(gòu)及執(zhí)行過程、range()內(nèi)建函數(shù)的結(jié)構(gòu)特點及兩者間如何配合使用,并讓if條件語句的使用也得到了及時的鞏固和進一步的提升。
計算思維是指個體運用計算機科學(xué)領(lǐng)域的思想方法,在形成問題解決方案的過程中產(chǎn)生的一系列思維活動。具備計算思維的學(xué)生,在信息活動中能夠分析和綜合各種資源,運用合理的算法形成解決問題的方案,并能將知識和能力遷移到其他問題的解決中。
《循環(huán)結(jié)構(gòu)的程序?qū)崿F(xiàn)》一課借助編程求解“水仙花數(shù)”,由教師引導(dǎo)學(xué)生對計算思維進行了有效的鍛煉和提升。回顧這節(jié)課,可以將過程分解成以下四步:①抽象與建模?!八苫〝?shù)”是指一個三位數(shù),其各位數(shù)字的立方之和等于該數(shù)字本身。所以先鎖定三位數(shù),再根據(jù)條件去篩選滿足要求的三位數(shù)。②設(shè)計算法?;趩栴}的抽象與建模,三位數(shù)可以用range()函數(shù)限定范圍;滿足“水仙花數(shù)”的條件可以通過if條件語句來設(shè)定;整個循環(huán)用for循環(huán)語句來實現(xiàn)。③編寫程序。④調(diào)試運行程序。
通過重構(gòu)應(yīng)用場景,還可以引導(dǎo)學(xué)生從編程求解“水仙花數(shù)”向“雞、兔同籠”等數(shù)學(xué)問題延伸。學(xué)生在拓展遷移的學(xué)習(xí)過程中學(xué)會了舉一反三、觸類旁通,并通過積極、主動地探究與實踐,使計算思維得到了進一步的提升。此外,Python課堂評價體系也應(yīng)進行創(chuàng)新設(shè)計,不能只停留在傳統(tǒng)的教師點評、學(xué)生聽的階段,而應(yīng)將課堂評價和成果展示有機結(jié)合起來。
《普通高中信息技術(shù)課程標(biāo)準(zhǔn)(2017年版)》發(fā)布以來,如何利用信息技術(shù)各模塊的教學(xué)內(nèi)容培養(yǎng)學(xué)科核心素養(yǎng),進而促進新課程的改革與實施已成為當(dāng)下的研究熱點,這就促使一線教師需要對信息技術(shù)教學(xué)理論和實踐不斷進行探索。在高中Python的教學(xué)中應(yīng)將學(xué)生的計算思維作為邏輯思維、抽象思維的進階,引導(dǎo)學(xué)生經(jīng)歷提出問題、分析問題、解決問題的過程,從而進一步提升核心素養(yǎng)。