這是一本基于小學(xué)生認(rèn)知水平和學(xué)習(xí)發(fā)展規(guī)律的教材,創(chuàng)設(shè)貼近小學(xué)生學(xué)習(xí)、生活的情境,在解決問題的實(shí)踐中引出新知,由淺入深,由易到難,循序漸進(jìn),逐步系統(tǒng)化,為培養(yǎng)小學(xué)生編程能力和用算法解決問題的意識提供了一套較優(yōu)的方案。本書設(shè)計(jì)的案例有層次、有梯度,利用類似于代碼的自然語言描述解決問題的過程與步驟,讓思維活動(dòng)可視化,為提升小學(xué)生的思考力提供了有力的抓手。每課、每單元均設(shè)計(jì)具有反饋、鞏固學(xué)習(xí)效果的檢測作業(yè),為激發(fā)小學(xué)生學(xué)習(xí)興趣、保持學(xué)習(xí)動(dòng)力、體驗(yàn)編程的快樂提供了可靠的保障。 本書適合小學(xué)四年級及以上學(xué)生閱讀使用,可作為小學(xué)信息科技學(xué)科的教輔材料,也可作為信息科技教師學(xué)習(xí)Python語言的參考讀物。
這是一本以解決問題為核心、按能力體系編排的編程入門書,弱化語法,強(qiáng)化算法,在情境中引出新知,循序漸進(jìn),由淺入深,逐步系統(tǒng)化,有習(xí)題,有課件,易學(xué)易會(huì)。學(xué)會(huì)編程,未來你將擁有更多的機(jī)會(huì)與可能。
現(xiàn)在有一種流行的說法:Python語言最接近自然語言,語法簡潔、清晰、易懂,擁有眾多的第三方庫,非常適合編程初學(xué)者學(xué)習(xí)使用。 如果初學(xué)者是成年人,這種說法完全正確。如果初學(xué)者是小學(xué)生,這種說法就值得商榷了。 Python語言最接近自然語言,這個(gè)自然語言是指漢語嗎?不是,而是英語。對于我國的小學(xué)生來說,英語是一門外語,不是母語,按照公布的《義務(wù)教育課程方案(2022年版)》的課程設(shè)置,小學(xué)中高年級才開始開設(shè)英語課。如果按照正常的教學(xué)進(jìn)度,小學(xué)五、六年級的孩子英語剛?cè)腴T,他們可以把學(xué)會(huì)的簡單的英文單詞、語法遷移到Python語言中,但想以最接近自然語言為突破口來學(xué)習(xí)Python語言,是不現(xiàn)實(shí)的。 Python語言的語法是簡潔、清晰的,但對小學(xué)生來說是不是易懂的呢?簡潔的語法,有時(shí)是會(huì)增加學(xué)習(xí)難度的。例如,賦值語句tot =2中使用了由 =構(gòu)成的增強(qiáng)賦值運(yùn)算符 =,這樣的語句很簡潔、清晰,但孩子們在學(xué)習(xí)時(shí),需要轉(zhuǎn)個(gè)彎,先轉(zhuǎn)換成煩瑣一點(diǎn)的普通賦值語句tot=tot 2,才能更容易消化、理解。同時(shí),計(jì)算機(jī)高級語言的語法結(jié)構(gòu)和漢語的語法結(jié)構(gòu)是不一致的,編程時(shí),要從母語的表述方式轉(zhuǎn)換成用計(jì)算機(jī)語言來描述,這涉及思維方式的轉(zhuǎn)換,對初學(xué)者而言特別不容易。 擁有眾多的第三方庫,對于項(xiàng)目應(yīng)用的開發(fā)者來說,可以提高工作效率,但也容易讓人迷失在庫的海洋里。對于一個(gè)人來說,時(shí)間是一個(gè)常量,更何況是小學(xué)生,各門學(xué)科都有各自的學(xué)習(xí)任務(wù),可支配的時(shí)間有限,以眾多的第三方庫作為學(xué)習(xí)內(nèi)容,也是值得探討的。 因此,我們要樹立一個(gè)觀點(diǎn):對于小學(xué)生來說,想要學(xué)會(huì)Python語言是不容易的。 一方面,這種不容易提醒所有的教育者要正確面對現(xiàn)實(shí),認(rèn)識到存在的困難,只有基于現(xiàn)實(shí)進(jìn)行思考,才能找到正確的解決方法;另一方面,這種不容易也激勵(lì)著教育者,只要方法正確,路徑有效,對于一般的小學(xué)生來說,學(xué)習(xí)Python語言也并非一件難事。 如何才能讓不容易變得容易呢?編寫一本基于小學(xué)生認(rèn)知規(guī)律和學(xué)習(xí)發(fā)展規(guī)律的教材是重要的一環(huán)。 首先,編寫小學(xué)生Python教材時(shí),要明白成人與小學(xué)生學(xué)習(xí)Python語言的目的是不同的。成人往往是為工作而學(xué),為開發(fā)某個(gè)具體的項(xiàng)目或應(yīng)用程序而學(xué),側(cè)重于應(yīng)用性。而小學(xué)生是為成長而學(xué),以Python語言為載體進(jìn)行思維的完整性和邏輯性訓(xùn)練,掌握利用計(jì)算機(jī)解決問題的方法,培養(yǎng)思考力,激發(fā)興趣,側(cè)重于基礎(chǔ)性。 其次,編寫的教材要做到對、好、趣、高。 對。就是教材編寫的內(nèi)容要正確,這是最基本的要求。但由于Python語言的獨(dú)特性,做到對并不簡單。例如,一般程序設(shè)計(jì)高級語言中的變量是箱子,賦值是把某個(gè)表達(dá)式的值裝入箱子的過程;而Python語言中的變量,是對象的標(biāo)簽,是對象的引用,賦值是把變量指向某個(gè)具體對象的過程。只有基于指向引用的認(rèn)識時(shí),孩子們才能理解多變量同時(shí)指向同一個(gè)組合類型對象時(shí),修改某個(gè)變量指向的對象元素后,其他變量的值也會(huì)發(fā)生變化。因此,不能把Python語言中的變量比喻成箱子。 又如,一般程序設(shè)計(jì)高級語言中for循環(huán)是計(jì)數(shù)循環(huán),而Python語言中的for循環(huán)是遍歷循環(huán),遍歷循環(huán)可以實(shí)現(xiàn)計(jì)數(shù)功能,但它不是計(jì)數(shù)循環(huán),只有從遍歷的角度去理解,才能讓孩子們明白遍歷循環(huán)的循環(huán)體中對循環(huán)變量的重新賦值修改不會(huì)影響循環(huán)次數(shù),不能把遍歷循環(huán)簡單處理為計(jì)數(shù)循環(huán)。 好。這個(gè)好一方面體現(xiàn)在編排順序上,要循序漸進(jìn),不能把知識點(diǎn)簡單地堆砌起來。對于有基礎(chǔ)的成人,選用將各種語法知識集中呈現(xiàn)的教材能快速全面地掌握Python語言。但是知識點(diǎn)集中呈現(xiàn)的教材對于編程零基礎(chǔ)的孩子來說是不適合的,猶如把各種字、詞集中整理在一起的字典不能作為孩子學(xué)習(xí)語文的教材。在案例中,循序漸進(jìn)地學(xué)習(xí)各個(gè)知識點(diǎn)或許是小學(xué)生學(xué)習(xí)編程的可行路徑。在解決問題的實(shí)踐中,引出新知,適可而止,由淺入深,由易到難,不求概念化,逐步系統(tǒng)化,實(shí)現(xiàn)從以語法為核心的知識體系的教學(xué)編排轉(zhuǎn)向以解決問題為核心的能力體系的教學(xué)編排。 好的另一方面體現(xiàn)編排內(nèi)容上,要做到因材施教。Python語言是一種生態(tài)語言,生態(tài)語言關(guān)注的不再是每個(gè)具體算法的邏輯功能和設(shè)計(jì),而是盡可能利用第三方庫進(jìn)行代碼復(fù)用,像搭積木一樣編寫程序,提高開發(fā)工作的效率。對于成人,從計(jì)算生態(tài)的角度學(xué)習(xí)Python是因材施教。如果小學(xué)生也是從計(jì)算生態(tài)的角度學(xué)習(xí)Python,那么要記住內(nèi)置函數(shù)、對象的方法及各種庫的調(diào)用語法,才能編寫程序。但這樣大腦就會(huì)進(jìn)入記單詞階段,缺少思維活動(dòng)會(huì)讓學(xué)習(xí)變成記憶,不利于孩子的成長。因此,小學(xué)生應(yīng)從算法的角度學(xué)習(xí)Python,注重基礎(chǔ)性,弱化應(yīng)用性,關(guān)注思維活動(dòng)。數(shù)據(jù)、算法、算力是人工智能的三要素。選擇算法作為學(xué)習(xí)內(nèi)容,也符合時(shí)代發(fā)展的趨勢。那么,選擇怎樣的內(nèi)容才算是從算法角度編排的呢?例如,已知某一個(gè)數(shù)字列表中各個(gè)元素的值,求出該列表中所有元素的和。從計(jì)算生態(tài)的角度出發(fā),直接學(xué)習(xí)內(nèi)置求和函數(shù)sum()的調(diào)用方法,代碼簡潔,編程的效率高。從算法角度出發(fā),應(yīng)學(xué)習(xí)計(jì)算機(jī)高級語言累加求和的一般方法(先將累加器清零,再遍歷列表中的每一個(gè)元素,依次累加各個(gè)元素的值,最后輸出累加器的值)。這種求和方法的代碼長,編程效率低,卻能讓小學(xué)生明白累加的一般過程,學(xué)會(huì)思考。站在一般程序設(shè)計(jì)語言的視角選擇學(xué)習(xí)Python語言的內(nèi)容,既要關(guān)注Python語言個(gè)性化的內(nèi)容,也要關(guān)注程序設(shè)計(jì)語言的共性知識,兩者有機(jī)結(jié)合,通盤考慮,適當(dāng)?shù)貜恼Z言細(xì)節(jié)上解放出來,才能更有利于孩子的成長。 趣。就是編寫的教材要讓孩子感到有趣。趣是有層次的。第一層次是精美的畫面,以圖吸引孩子。對于小學(xué)低年級學(xué)生,這個(gè)顯得特別重要。對于從形象思維過渡到抽象思維的小學(xué)高年級學(xué)生,圖對他們有吸引力,但引發(fā)的興趣不持久,因?qū)W習(xí)而體驗(yàn)成功的快樂、因?qū)W習(xí)而實(shí)現(xiàn)自我價(jià)值引發(fā)的興趣才是最持久的、最可貴的,這便是第二層次的趣。因此,編寫的教材一方面要有插圖,吸引孩子興趣;另一方面要設(shè)計(jì)有梯度、有層次的問題,在解決問題的過程中利用自然語言、流程圖或偽代碼語言等方式,呈現(xiàn)解決問題的過程與步驟,讓思維活動(dòng)可視化,同時(shí)設(shè)計(jì)習(xí)題,舉一反三,為孩子體驗(yàn)編程的快樂、實(shí)現(xiàn)自我價(jià)值、保持學(xué)習(xí)動(dòng)力提供可能。 高。就是編寫教材的指導(dǎo)思想要高。跳出學(xué)科看問題,跳出技術(shù)看問題,要從人的發(fā)展、培養(yǎng)人的角度來考慮。從人的發(fā)展角度看,多數(shù)孩子將來不會(huì)成為程序員或計(jì)算機(jī)科學(xué)家,因此,不能把編程看作一種狹隘的技術(shù),而是把它當(dāng)成一種解決問題的方法,讓孩子學(xué)會(huì)問題的分解、抽象、建模、設(shè)計(jì)算法的能力,并能將這種能力遷移、應(yīng)用到解決其他學(xué)習(xí)、生活中的問題中。從培養(yǎng)人的角度看,編程只是學(xué)習(xí)的載體,不是學(xué)習(xí)的目的,學(xué)習(xí)的目的是能讓孩子在學(xué)習(xí)編程的過程中得到成長,關(guān)注孩子思維完整性和邏輯性方面的訓(xùn)練,培養(yǎng)孩子的理解力、思考力、創(chuàng)造力,為孩子的未來助力。不要只把編程當(dāng)成篩選人才的工具,而是應(yīng)該把編程作為培養(yǎng)人才的利器,因此,在編寫教材時(shí),應(yīng)在科學(xué)的、發(fā)展的人才觀、成才觀、教育觀的視角下組織教學(xué)內(nèi)容,讓編程成為一種素養(yǎng)。 本書基于以上認(rèn)識和多年一線的編程教學(xué)實(shí)踐編寫而成。在編寫的過程中,得到金華市婺城區(qū)教研室鄭理新、金華市第五中學(xué)陳洪棋、金華市青春中學(xué)陳旭平、浙江師范大學(xué)熊繼平等老師的指導(dǎo)與幫助。因編者水平有限,書中難免存在不妥或錯(cuò)誤之處,歡迎讀者批評指正,可以發(fā)送郵件至電子郵箱4878747@qq.com,更希望讀者對本書提出建設(shè)性意見,以便修訂、再版時(shí)改進(jìn)。 潘洪波 2023年4月
潘洪波,高級教師,曾獲浙江省小學(xué)信息技術(shù)優(yōu)質(zhì)課一等獎(jiǎng),編寫的教材《小學(xué)生C 趣味編程》《小學(xué)生C 趣味編程訓(xùn)練營》由清華大學(xué)出版社出版,編寫的《智能機(jī)器人WeDo 2.0(小學(xué)版)》被評為浙江省第六屆精品課程。
人物介紹 000 第1單元走進(jìn)Python的世界001第1課 換個(gè)視角看世界認(rèn)識Python 002 第2課 鍵盤指法輸出函數(shù)print( ) 007 第3課 重要的話說三遍變量與賦值 014 第4課 寄語輸入函數(shù)input( ) 019 第5課 生日禮物類型轉(zhuǎn)換 023 第6課 工廠的時(shí)鐘取模運(yùn)算符 029 第7課 小棒總根數(shù)字符串split( )方法 033 第8課 身份證號碼有序序列的正向索引與切片 038 第9課 取盤子有序序列的反向索引與切片 044 第10課 星運(yùn)算多態(tài) 051 單元檢測 055 第2單元分支結(jié)構(gòu)059第11課 健康監(jiān)測單分支結(jié)構(gòu)if 060 第12課 變量名雙分支結(jié)構(gòu)if?else 067 第13課 作業(yè)等級多分支結(jié)構(gòu)if?else語句的嵌套 074 第14課 再談作業(yè)等級多分支結(jié)構(gòu)if?elif?elif 081 第15課 自然數(shù)的判定邏輯運(yùn)算符 087 單元檢測 094 第3單元循環(huán)結(jié)構(gòu)099第16課 青蛙跳水遍歷循環(huán)for 100 第17課 再談青蛙跳水range( )生成器 105 第18課 儲(chǔ)蓄計(jì)劃累加求和 111 第19課 再談儲(chǔ)蓄計(jì)劃sum( )函數(shù) 116 第20課 掃描識別線性搜索 121 第21課 再談掃描識別列表的可變性 126 第22課 素?cái)?shù)問題break語句 131 第23課 幸運(yùn)數(shù)字continue語句 137 第24課 聲控?zé)粲肋h(yuǎn)循環(huán)while 143 第25課 驗(yàn)證碼隨機(jī)模塊 148 第26課 每天進(jìn)步一點(diǎn)兩種循環(huán)的比較 156 第27課 百錢買百雞循環(huán)嵌套 160 單元檢測 164 第4單元函數(shù)167第28課 洗衣機(jī)函數(shù)的定義與參數(shù) 168 第29課 溫差函數(shù)的返回值 173 第30課 廢鋼回運(yùn)變量作用域 178 第31課 跑出氣質(zhì)函數(shù)的副作用與純函數(shù) 184 第32課 回文數(shù)函數(shù)與方法 192 第33課 神奇的兔子數(shù)列遞推與遞歸 198 單元檢測 204 第5單元庫207第34課 會(huì)畫圖的小海龜turtle模塊 208 第35課 糖葫蘆畫筆控制函數(shù) 212 第36課 海龜賽跑繪圖坐標(biāo)系統(tǒng) 216 第37課 以生態(tài)視角看世界模塊編程 220 單元檢測 224 參考文獻(xiàn) 228 參考答案及配套資源下載 229 附錄231附錄A 代碼格式說明 232 附錄B Thonny的程序調(diào)試功能 233 附錄C 字符集 235 附錄D 獎(jiǎng)勵(lì)積分卡比特童幣 236