楊榮領(lǐng)
摘 ?要:《Python語言程序設計基礎(chǔ)》是計算機相關(guān)專業(yè)的核心課程,文章針對Python語言本身的特點,提出了該課程教學的兩個層次:1.基礎(chǔ)知識、語法講解,以簡單的有趣的例子講解;2.利用第三方庫結(jié)合數(shù)據(jù)分析的實例,貫穿教學,實現(xiàn)數(shù)據(jù)的獲取、處理、分析、可視化。以提高學生編程的興趣和應用能力,推動教學改革。
關(guān)鍵詞:Python語言;程序設計;數(shù)據(jù)分析;教學改革
中圖分類號:G642 文獻標志碼:A 文章編號:2096-000X(2019)03-0135-03
Abstract: "The Foundation of Python Language Programming" is the core course of computer related majors. This paper proposes two levels of teaching in the course of Python language: 1. Basic knowledge, grammar explanation, with simple and interesting examples; 2 Using third-party libraries combined with data analysis examples, through the teaching, to achieve data acquisition, processing, analysis, visualization. To promote the interest and application of students in programming, and promote teaching reform.
Keywords: Python language; program design; data analysis; teaching reform
引言
《程序設計基礎(chǔ)》是高等學校計算機科學與技術(shù)及相關(guān)專業(yè)的核心課程[1],以講述程序設計語言的基本知識和程序設計方法,介紹程序設計的思想和方法,有助于學生了解計算機求解問題的方式,即計算機思維方式的培養(yǎng),主要有C、JAVA、C++等傳統(tǒng)程序設計語言,但相對語法復雜,對計算機理論知識要求高,入門難。在“互聯(lián)網(wǎng)+”的時代背景下,尤其是大數(shù)據(jù)、云計算、人工智能、深度學習等領(lǐng)域的推動,Python語言的優(yōu)勢突顯出來。
一、Python語言的特點與優(yōu)勢
Python 是一種面向?qū)ο?、解釋型計算機程序設計語言,由Guido van Rossum(吉多·范羅蘇姆)于1989年發(fā)明,第一個公開發(fā)行版發(fā)行于1991年。它是一個開源語言,擁有大量的庫,可以高效地開發(fā)各種應用程序。特點:簡單、高級、面向?qū)ο?、可擴展性、免費開源、可移植性、豐富的庫、可嵌入性[2]。
Python語言在程序設計基礎(chǔ)教學過程中,也呈現(xiàn)較強的有優(yōu)點和優(yōu)勢:
1. 語法簡單,簡潔,優(yōu)雅。安裝簡單,有較多的IDE工具,學生可以根據(jù)自己的喜好選擇并可以在較短時間內(nèi)輕松地掌握相關(guān)的基礎(chǔ)知識、語法。
2. 可讀性強。Python語言通過縮進的語句塊來控制結(jié)構(gòu),可讀性強,有利于培養(yǎng)學生良好的編程習慣,可以“#”來進行解釋性注釋,增加程序可讀性。
3. 豐富的第三方庫。面向?qū)ο蟮某绦騊ython不僅提供了豐富的數(shù)據(jù)結(jié)構(gòu),還有豐富的第三方庫。如requests、BesautifulSoup、re等,實現(xiàn)數(shù)據(jù)的獲取;科學計算的Numpy、Scipy和Matplotlib等,實現(xiàn)數(shù)據(jù)的處理、分析、可視化;OpenCV、Tenserflow等為圖像處理、深度學習提供了有利的基礎(chǔ)。豐富的第三方庫,廣泛應用于大數(shù)據(jù)中數(shù)據(jù)獲取、處理、分析、可視化、計算機視覺等領(lǐng)域[3]。不僅可以培養(yǎng)了學生的學習興趣,還可以提高了學生的應用能力和項目能力。
二、《Python語言程序設計基礎(chǔ)》教學改革實踐
通過前面對Python語言的特點和優(yōu)勢的分析,可以把整個教學設計為兩個層次:1. Python基礎(chǔ)知識、語法講解,以簡單的有趣的例子講解;2. 利用第三方庫結(jié)合數(shù)據(jù)分析的實例,貫穿教學,實現(xiàn)數(shù)據(jù)的處理,分析,可視化。
(一)Python基礎(chǔ)知識、語法講解
1. 從生活中的趣事引入Python
這是畫的一張Python圖,模擬薯片掉到地上的樣子,會發(fā)現(xiàn)一個弧面掉在了一個平面上,那么他們就是一個相切的接觸,也就是說這兩個面其實相交于一條線,一條線在二維平面上的面積是多少呢?是0。這就是相切可吃定理。也就是說薯片掉地上接觸地面的面積為零,不影響食用。如圖1a和圖1b所示。
情人節(jié)送心形圖,從簡單的心形函數(shù)圖?籽=a·(1+cos?茲) (圖2)到復雜漂亮的愛的詮釋基于微博數(shù)據(jù)用 Python打造一顆“心”(圖3),圖2是簡單的函數(shù)作圖,體會Python的作圖功能,圖3展示了Python實現(xiàn)數(shù)據(jù)處理的基本過程,從數(shù)據(jù)的爬取,保存,分詞,生成圖片到心形圖。引發(fā)學生的興趣。
2. 在快樂中學習Python的基本知識
在教學中,使用Anaconda,它自帶了Numpy、Scipy、Matplotlib等第三方庫,教學用Jupyter Noetbook可以將文字、代碼、圖形、公式整合在一起,方便教學。以問題求解為導向,“提出問題——對應算法——轉(zhuǎn)化程序”的思維過程,教導“編程”為主,培養(yǎng)學生的編程能力,教授如何用計算機程序解決問題的思維和技巧(即計算思維),講解要由淺入深,清晰易懂。主要培養(yǎng)學生的邏輯思維,計劃構(gòu)建,循環(huán)計算,遞歸求解等能力,重點講解容易出錯的語法。結(jié)合上機操作課,鞏固練習,讓學生能夠加深理論知識的理解和掌握。
(二)利用第三方庫結(jié)合數(shù)據(jù)分析的實例,貫穿教學
利用第三方庫,如requests、BesautifulSoup、re等,實現(xiàn)數(shù)據(jù)的獲取;Numpy、Scipy和Matplotlib等,實現(xiàn)數(shù)據(jù)的處理、分析、可視化。主要從網(wǎng)頁上抓取數(shù)據(jù)進行數(shù)據(jù)分析,這個涉及到很多領(lǐng)域,如:影視、歌曲、就業(yè)、房價、空氣污染等,可進行興趣,情感等方面分析。但在網(wǎng)絡爬取到的數(shù)據(jù)一般都是非結(jié)構(gòu)化的數(shù)據(jù),數(shù)據(jù)的處理,分析是涉及到很多難點,所以在實際教學講授中,一般分兩大主線:1. 數(shù)據(jù)的收集——爬蟲。2. 利用結(jié)構(gòu)化的數(shù)據(jù),進行數(shù)據(jù)的處理、分析、可視化。
1. 數(shù)據(jù)的收集——爬蟲
爬蟲是一種按照一定規(guī)則,自動地在網(wǎng)頁抓取信息的程序或者腳本,一般分為數(shù)據(jù)采集、處理、儲存三個部分,工作原理:先找到目標信息網(wǎng),抓取模塊、頁面分析模塊、數(shù)據(jù)存取模塊[4]。爬蟲部分教學以案例講解為主,如:藝術(shù)電影智庫[5],房價數(shù)據(jù)[6]等,以實操為主導,介紹爬蟲的流程和模塊,以過程和結(jié)果展示調(diào)動學生的興趣。
2. 數(shù)據(jù)的處理、分析、可視化
數(shù)據(jù)的處理、分析、可視化主要利用已有的數(shù)據(jù),如:學生學習成績的分析,泰坦尼克號沉船幸存者預測、貸款違約風險預測等。通過Jupyter Noetbook 展示,利用一些簡單到復雜的例子進行講解,主要實現(xiàn)數(shù)據(jù)的導入,如圖4,Jupyter Noetbook可直接執(zhí)行Python代碼。數(shù)據(jù)量大時,導入數(shù)據(jù)后可以通過代碼anscombe.head(),anscombe.shape,anscombe.info() 查看數(shù)據(jù)的前條信息,數(shù)據(jù)的結(jié)構(gòu),類型,是否有缺失等信息。
然后利用Numpy、Scipy庫對數(shù)據(jù)清洗,數(shù)據(jù)缺失的填充,對數(shù)據(jù)進行簡單的統(tǒng)計分析(平均值、中位數(shù)、期望、方差等)主要代碼如下:X.mean(),X.median(),X.std(),X.var()等(X為數(shù)據(jù)對象)。研究利用Matplotlib庫繪制散點圖、直方圖,條形圖,折線圖,餅圖,相關(guān)矩陣圖等,通過圖形整體分析數(shù)據(jù)的特征和變化趨勢,如散點圖可以看出變量的分布特征,相關(guān)矩陣圖可以看出變量之間的關(guān)系,如圖5。
三、結(jié)論
本文根據(jù)Python語言的特點,提出了《Python語言程序設計基礎(chǔ)》課程教學的兩個層次,一方面是基礎(chǔ)知識的講授,另一方面利用第三方庫結(jié)合兩大主線,案例講學,不僅提高學生的興趣,更好地掌握基本的程序設計的方法和技巧,還能提高學生的自主學習解決問題和參與項目能力。
參考文獻:
[1]教育部高等學校計算機基礎(chǔ)課程教學指導委員會.高等學校計算機基礎(chǔ)核心課程教學實施方案[M].北京:高等教育出版社,2011.
[2]江紅,余青松.Python程序設計與計算基礎(chǔ)教程[M].北京:清華大學出版社,2017.
[3]趙廣輝.面向新工科的Python程序設計交叉融合案例教學[J].計算機教育,2017,8:23-27.
[4]李臣臣,肖巍.網(wǎng)絡爬蟲技術(shù)在高校學生行為分析系統(tǒng)的應用研究[J].電腦迷,2018,6:50-51.
[5]http://www.cbooo.cn/year?year=2017[EB/OL].
[6]http://www.xueqing.tv/course/81[EB/OL].