浦丕志
(沈陽市和平區教育研究中心 遼寧沈陽 110002)
Python語言在浙教版高中信息技術教材中成為描述算法和解決問題的計算機語言,滿足了新課標對程序設計語言的要求。在學習中通過解決實際問題,來體驗程序設計過程、感受算法效率、掌握程序調試與運行的基本方法。筆者在教學有如下的思考,分享如下:
教材中“3.1用計算機編程解決問題的一般過程”一課,引入了“繪制正六邊形的過程”的內容,講解了turtle模塊和import、for、range等語句,不適合剛剛開始學習Python語言的同學學習,建議后置,將這一課放在“3.2.2順序結構的程序實現”后教學。
在教學Python過程中,應盡快讓學生使用功能強大的開發環境,在前段教學中引導學生使用命令行、Shell、IDLE等進行語法測試,提高學生評估并選用Python資源與工具、有效地管理學習過程與資源、創造性解決問題的能力。筆者在教學“3.2.5函數與模塊”一課的“實踐與體驗”內容之前,讓學生開始使用Pycharm,學生能方便地在Pycharm中管理模塊,調試和運行程序。
在學生初期使用Pycharm時,可以使用微課輔助學生練習用IDLE已經調試成功的程序,熟悉Python開發環境的操作過程。
第一步,在命令行進入Python環境后,先講range()函數,因為range()函數的變量具有Python語言語法普遍的特征,通過反復改變參數和對運行結果的觀察,形成初步對程序調試的體驗。
第二步,進入Shell進行程序調試,教材中計算和輸出字符串的樣例可以滿足學生的自主學習,因為Shell的界面與命令行中的Python環境類似,學生不會覺得學習困難。
最后一步,通過IDLE學習Python語言的編輯狀態下的調試過程,再在IDLE環境下完成前兩步的程序,鞏固Python語言的語法規則(大小寫敏感、冒號用法、語句塊、縮進等)。這一部分內容比較多,也有很多技巧,可以鼓勵學生小組合作學習,相互啟發和提示,最后總結和自己積累。
在教材“3.2”中以圖表形式介紹了常見數據類型、算術運算符、關系運算符、邏輯運算符,這些內容可以選擇重點(當下能用上)內容講解,其他的內容鼓勵學生在使用這些知識時通過查資料的方法來學習和應用(教材上類似的表很多,都將其列為資料,不詳講,做資料進行待查)。
在Python中,變量無須聲明,值和類型可以改變(教材72頁)。教師通過演示和講解,讓學生理解變量的值和類型轉換的過程和最終結果。
在教學80頁“end=’‘的作用”內容時,可以通過一般輸出過程與“end=’‘”輸出過程的對比來教學,講清“end=’‘”的格式(Python中單引號和雙引號的通用方法)。此時學生已有了程序設計基礎,可以鼓勵學生自主學習。
此題討論的問題是甄別語句體(語句塊)的語法格式和邏輯的正確性,教學時,可讓學生分別完成“代碼一”和“代碼二”,結合輸出的結果進行討論。得出結論:“代碼一”運行結果最后總是會輸出“超速”,也就是最后一行“print(“超速”)”沒有進行縮進;“代碼二”的分支結構清晰,當條件成立時執行“print(“正常”)”,否則執行“print(“平均車速”,round(v,1))”和“print(“超速”)”兩條語句。
本題是一道比較完整的例題,教材提供的資料也非常豐富,教學中可引導學生合作學習或自學。首先,引導學生自己分析任務,建立初步的模型后進行完善;然后,嘗試(仔細分析)畫出流程圖,理清框圖含義和程序運行的順序,明確編程流程;最后,在完成程序調試的基礎上,鼓勵學生進行學習評價,總結解題步驟“抽象與建模”“設計算法”“編寫程序”“調試運行”。
本題中的“while”循環結構和“布爾”邏輯關系是非常重要的知識點,正是構造了“死循環”,程序才能實現輸出“正確”反饋,以及“偏小”和“偏大”的提示。
可以先讓學生查找資料,了解“海倫公式”,再引出用“用典型的例題和數學思想解釋一般問題”的思想。
通過自定義Area函數來“求解分割的4個三角形面積之和”求得正多邊形面積,推理出用函數和“海倫公式”求面積的誤差,理解函數的應用過程:“將輸入經過一定的變換和處理后得到預定的輸出,函數就是一個盒子,可將反復執行的代碼封裝為函數”,再適時地講解“形參和實參,直接修改形參的值不會影響實參”[1]。
在學習完本題后,可以補充“驗證.py文件可以通過模塊來導入,說明Python源文件是模塊”的內容。接下來,再教學“模塊的導入及應用”就非常容易了,Python的教學內容補充非常重要,要考慮到補充內容的適時性和實用性,也要實現對后面知識點教學的鋪墊。
本題是一個綜合的例題,教材提供了“實踐與體驗”步驟的詳細資料,幫助學生合作或獨立完成。在教學中可以通過微課,安裝“Pycharm”,并獨立完成教材“繪制六邊形的過程”(第66頁)試題或“思考與練習第6題”(第89頁)試題,熟悉Pycharm編程環境。
學生輸入程序后,可指導學生用file->settings->projectinterpreter,雙擊“pip”,搜索“pillow”,點擊“pillow”,用左下角“install”來安裝,或直接在庫(模塊)的提示上加載庫(模塊)。當庫(模塊)都加載成功后,再通過修改“RBG”參數調試程序。
這一類數字圖像處理綜合例題,能夠實現用項目來檢驗和再學習。讓學生知道“用Python程序設計語言可編寫具有圖像處理功能的應用程序,如圖像的大小和顏色調整、圖像的合成、圖像的濾鏡添加等”[2]。教師要關注學生核心素養的培養,通過解決綜合性較強的復雜問題,讓學生自覺主動地分析問題背景,從紛繁復雜的線索中提取有效信息,明確已知條件和求解的問題;通過小組討論方式,在合作解決問題的過程中,培養學生團隊協作,共享信息的意識。
本題是應用Python語言實現對數據進行管理和統計的項目挑戰例題,學生會使用相關數字化工具(Excel和Python)通過對生活中事物關聯進行調查和數據整理,形成數據表,最終抽象和統計出數據背后的規律。教學時,建議創設一個真實的情境(可選用“尋找關聯次數最多的商品”這個項目),學生統計并填寫一個數據表,也可以用虛擬軟件生成數據表,旨在分析數據之間的關聯。
程序在編寫過程中常常會遇到困難,可以通過小組合作,查找相關資料的方法應對,教師也要進行細致的指導和項目實施方向的把控。編程輸出結果后,可根據程序結果分析和討論一下數據關聯的實際意義,發掘出對新觀念和新事物的積極學習態度、預測、理性判斷和負責任的應對策略,在信息社會中有一定的信息安全意識與能力,能夠遵守信息法律法規,信守信息社會的道德與倫理準則,在現實空間和虛擬空間中遵守公共規范,既能有效維護信息活動中個人的合法權益,又能積極維護他人合法權益和公共信息安全;關注信息技術革命所帶來的環境問題與人文問題[3]。
高中階段的學生已經形成了一定的思維習慣,在教學Python時,應以解決實際問題的項目式學習為基礎,在程序設計時形成“隨用隨取”的編程方法,避免枯燥的語句和語法講解,關注學習過程的知識積累和評價,通過自主學習與合作學習突破學習難點,鼓勵資料查找和新工具的使用,形成獨立使用Python建立抽象模型、構建算法、編寫和調試程序的創新能力。