摘? 要:Python語言作為適應(yīng)新技術(shù)時(shí)代的程序設(shè)計(jì)語言,被廣泛應(yīng)用于科學(xué)計(jì)算、數(shù)據(jù)處理、人工智能等領(lǐng)域,開設(shè)Python程序設(shè)計(jì)課程已成為高校的共識(shí)。在此形勢下,以數(shù)據(jù)處理與問題求解自動(dòng)化為例,面向應(yīng)用,結(jié)合教學(xué)實(shí)踐,提出了在課堂教學(xué)中運(yùn)用敏捷式任務(wù)驅(qū)動(dòng)模式,可提高課堂學(xué)習(xí)效率,有利于高校培養(yǎng)復(fù)合創(chuàng)新型人才。
關(guān)鍵詞:Python;程序設(shè)計(jì);任務(wù)驅(qū)動(dòng);課堂教學(xué)
中圖分類號(hào):TP39;G434? ? ? ? ? ? ? ?文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):2096-4706(2021)15-0190-03
Abstract: As a programming language to adapt to the new technology era, Python language is widely used in scientific computing, data processing, artificial intelligence and other fields. It has become a consensus in colleges and universities to set up Python programming courses. In this situation, taking the automation of data processing and problem solving as an example, facing the application, combined with teaching practice, this paper puts forward the application of agile task driven mode in classroom teaching, which improves the classroom learning efficiency and is conducive to the cultivation of compound innovative talents in colleges and universities.
Keywords: Python; programming; task driven; classroom teaching
0? 引? 言
隨著社會(huì)向網(wǎng)絡(luò)化、信息化、智能化發(fā)展,高校迫切需要進(jìn)一步提升學(xué)生的信息化素養(yǎng)和技能,以應(yīng)對(duì)各領(lǐng)域?qū)?shí)踐能力強(qiáng)、創(chuàng)新能力強(qiáng)、復(fù)合型、數(shù)字化人才的需求?;赑ython語言在人工智能與大數(shù)據(jù)領(lǐng)域的優(yōu)勢,我國諸多高等院校將Python語言程序設(shè)計(jì)作為必修或選修的技術(shù)型通識(shí)課程,培養(yǎng)學(xué)生運(yùn)用程序設(shè)計(jì)方法來解決實(shí)際問題的能力。
Python程序設(shè)計(jì)是一門應(yīng)用性、實(shí)踐性、創(chuàng)新性很強(qiáng)的課程。在課堂教學(xué)中,運(yùn)用任務(wù)驅(qū)動(dòng)教學(xué)模式,面向產(chǎn)業(yè)需求調(diào)整教學(xué)內(nèi)容,對(duì)培養(yǎng)高素質(zhì)復(fù)合型人才具有積極意義。
1? Python語言特點(diǎn)
Python語言是一種面向?qū)ο蟮慕忉屝陀?jì)算機(jī)程序設(shè)計(jì)語言[1],語法簡潔優(yōu)雅,貼近人類自然語言,易學(xué)易用,有利于學(xué)習(xí)者專注于應(yīng)用計(jì)算機(jī)解決問題的思路和方法。Python語言開放、開源,生態(tài)良好,擁有大量功能豐富且強(qiáng)大的標(biāo)準(zhǔn)庫和擴(kuò)展庫,幾乎覆蓋所有領(lǐng)域,避免重復(fù)編程,有利于解決各學(xué)科領(lǐng)域的問題,提升編程效率。Python語言可以嵌入到C/C++語言中,提供腳本編程的功能,并且支持跨平臺(tái),源程序可以移植到Linux、Windows、MacOS等常見操作系統(tǒng)上直接運(yùn)行。
Python語言作為適應(yīng)新技術(shù)時(shí)代的輕語法程序設(shè)計(jì)語言,面向應(yīng)用,被廣泛應(yīng)用于各行業(yè)、各領(lǐng)域。因此,在教學(xué)過程中一定要輕語法、重應(yīng)用,加強(qiáng)對(duì)學(xué)生實(shí)際問題求解能力的培養(yǎng),從而達(dá)到讓學(xué)生具備應(yīng)用程序設(shè)計(jì)技術(shù)解決專業(yè)問題的能力的目的[2]。
2? 任務(wù)驅(qū)動(dòng)教學(xué)法
任務(wù)驅(qū)動(dòng)教學(xué)法是以情境為基礎(chǔ),以任務(wù)為載體,將知識(shí)與技能融合在學(xué)習(xí)者任務(wù)中完成教學(xué)過程的教學(xué)法[3]。“任務(wù)驅(qū)動(dòng)”緊緊圍繞任務(wù)活動(dòng)中心,創(chuàng)設(shè)情境激發(fā)學(xué)生的學(xué)習(xí)動(dòng)機(jī),喚起學(xué)生原有認(rèn)知結(jié)構(gòu)中的相關(guān)知識(shí)、經(jīng)驗(yàn)及表象,積極主動(dòng)篩選利用學(xué)習(xí)資源,進(jìn)行自主探索和互動(dòng)協(xié)作的學(xué)習(xí),在完成既定目標(biāo)任務(wù)的同時(shí),引導(dǎo)學(xué)生完成一定的學(xué)習(xí)實(shí)踐活動(dòng)[4]。
從本質(zhì)上說,任務(wù)驅(qū)動(dòng)教學(xué)法是建立在建構(gòu)主義學(xué)習(xí)理論之上的一種教學(xué)法[5]。建構(gòu)主義學(xué)習(xí)理論強(qiáng)調(diào)以學(xué)生為主體,以教師為主導(dǎo)。學(xué)習(xí)是一種學(xué)習(xí)者對(duì)目標(biāo)建構(gòu)和對(duì)其理解的過程,學(xué)生是知識(shí)意義的主動(dòng)建構(gòu)者,教師是學(xué)生在主動(dòng)建構(gòu)知識(shí)意義過程中的引導(dǎo)者、促進(jìn)者。
任務(wù)驅(qū)動(dòng)教學(xué)法在理論和實(shí)踐研究的發(fā)展中,呈現(xiàn)出各具特色的教學(xué)流程,比較著名的是何克抗教授提出的“分析教學(xué)目標(biāo)、創(chuàng)設(shè)真實(shí)情境、設(shè)計(jì)信息資源、構(gòu)建自主、協(xié)作學(xué)習(xí)環(huán)境、評(píng)價(jià)學(xué)習(xí)效果、強(qiáng)化知識(shí)練習(xí)”[6]的教學(xué)流程。
在教學(xué)實(shí)踐中,針對(duì)教學(xué)目標(biāo),往往需要綜合運(yùn)用多種教學(xué)方法,或者靈活運(yùn)用某一種教學(xué)方法。課堂教學(xué)是學(xué)校教育的主戰(zhàn)場,將傳統(tǒng)的任務(wù)驅(qū)動(dòng)教學(xué)法以敏捷方式應(yīng)用于Python程序設(shè)計(jì)課堂教學(xué),讓學(xué)生在完成任務(wù)的過程中體會(huì)和掌握利用計(jì)算機(jī)解決問題的方法與過程,并將其遷移到其他學(xué)科的問題解決當(dāng)中,對(duì)于培養(yǎng)和提高學(xué)生的實(shí)踐能力、自主創(chuàng)新能力具有積極意義。
3? 教學(xué)案例
結(jié)合企業(yè)實(shí)際應(yīng)用需求,融合知識(shí)點(diǎn),設(shè)計(jì)任務(wù)。整個(gè)教學(xué)活動(dòng)圍繞著教師設(shè)計(jì)的任務(wù)展開,在此過程中,以任務(wù)為主線,學(xué)生是實(shí)現(xiàn)任務(wù)的主體,教師則是指導(dǎo)者、幫助者的角色。在Python程序設(shè)計(jì)課堂教學(xué)實(shí)踐中,以敏捷方式運(yùn)用任務(wù)驅(qū)動(dòng)教學(xué)法,主要包含以下幾個(gè)教學(xué)環(huán)節(jié):設(shè)計(jì)任務(wù)、分析任務(wù)、實(shí)現(xiàn)任務(wù)、思考與拓展。應(yīng)用于Python程序設(shè)計(jì)的敏捷式任務(wù)驅(qū)動(dòng)教學(xué)模式流程圖如圖1所示。
3.1? 設(shè)計(jì)任務(wù)
教學(xué)目標(biāo):熟悉Python與Excel協(xié)同進(jìn)行數(shù)據(jù)處理的方法。
情景設(shè)計(jì):某公司人事部門需要采集員工信息進(jìn)行分析處理。
具體任務(wù):將不同學(xué)歷員工的信息歸類,按學(xué)歷建立多個(gè)新文件;分別為每名員工制作一份個(gè)人履歷文件,文件格式均為Excel。
數(shù)據(jù)資源:個(gè)人履歷模板文件一份、各部門提交的具有相同數(shù)據(jù)結(jié)構(gòu)的員工信息文件若干份,文件類型均為Excel。
員工信息文件格式:
文件名格式:2021年-科技公司-XX部-人員信息.xlsx。
數(shù)據(jù)內(nèi)容:序號(hào)、部門、姓名、性別、年齡、學(xué)歷、身份證號(hào)、手機(jī)號(hào)碼、備注。
履歷表文件格式如圖2所示。
3.2? 分析任務(wù)
Python程序設(shè)計(jì)的學(xué)習(xí)原則是輕語法、重應(yīng)用,培養(yǎng)學(xué)生解決實(shí)際問題的能力。在分析任務(wù)階段,通過喚起學(xué)生原有認(rèn)知結(jié)構(gòu)中的相關(guān)知識(shí)、經(jīng)驗(yàn),使學(xué)生主動(dòng)利用學(xué)習(xí)資源,進(jìn)行自主探索和互動(dòng)協(xié)作式的學(xué)習(xí),探索思考問題的方式和解決問題的辦法。
首先,學(xué)生使用已習(xí)得的Excel知識(shí)尋找方法,發(fā)現(xiàn)可以通過在各文件中進(jìn)行數(shù)據(jù)的復(fù)制、粘貼完成任務(wù),操作簡單、可行。此方式適合于數(shù)據(jù)規(guī)模較小的情況,如果所針對(duì)的數(shù)據(jù)量較大,比如十幾個(gè)部門、幾百名甚至幾千名員工的信息,顯然應(yīng)用這種方式是比較耗費(fèi)時(shí)間的,效率低下。由此,學(xué)生必然會(huì)對(duì)Python數(shù)據(jù)處理能力抱以期待。
然后,引導(dǎo)學(xué)生探索著名的第三方庫Pandas。學(xué)生通過閱讀書本、查閱網(wǎng)絡(luò)資料,了解到Pandas是一種用于數(shù)據(jù)處理和數(shù)據(jù)分析的工具,包含大量處理數(shù)據(jù)的函數(shù)和方法,可以方便快捷地處理Excel、CSV、TXT和HTML等文件數(shù)據(jù),廣泛應(yīng)用于金融、統(tǒng)計(jì)、數(shù)理研究、物理計(jì)算、社會(huì)科學(xué)、工程等領(lǐng)域。
針對(duì)本任務(wù),引導(dǎo)學(xué)生以小組形式進(jìn)一步探索Python與Excel進(jìn)行文件交互的方法,各小組很快便匯集出多個(gè)庫(如xlwings、xlrd、xlwt、openpyxl等)可以支持Python與Excel交互。由小組內(nèi)成員自行選擇使用哪個(gè)庫,從而繼續(xù)探索實(shí)現(xiàn)任務(wù)的具體方法。學(xué)習(xí)思路始終是圍繞問題想辦法、找方法,重應(yīng)用,輕語法。
3.3? 實(shí)現(xiàn)任務(wù)
經(jīng)過有針對(duì)性、逐層深入的查閱、了解,根據(jù)個(gè)人獲取的知識(shí),以及組內(nèi)討論,相互分享設(shè)計(jì)思路,通過分析、比較,最終明確較為合理的算法:
(1)將各部門的員工信息匯總為一個(gè)Excel文件。
(2)從匯總文件中篩選不同學(xué)歷的員工信息,同一類學(xué)歷生成獨(dú)立文件。
(3)從匯總文件中提取各人所需信息,生成各人的履歷文件。
無論數(shù)據(jù)規(guī)模如何,運(yùn)用此算法皆可實(shí)現(xiàn)高效的自動(dòng)化數(shù)據(jù)處理。結(jié)合以上算法的思考與設(shè)計(jì),某小組成員組內(nèi)分工、合作,將各步驟分別編寫出三段程序代碼:
#由各部門人員信息表批量合并匯總為一個(gè)Excel文件
import os
import pandas as pd
data_list = []
for fname in os.listdir("."):
if fname.startswith("2021年-科技公司-") and fname.endswith("人員信息.xlsx"):
data_list.append(pd.read_excel(fname))
data_all = pd.concat(data_list)
data_all.to_excel("2021年-科技公司-人員信息匯總表.xlsx",index=False)
#以“學(xué)歷”字段為條件,批量生成新文件
Import os
Import pandas as pd
df=pd.read_excel("2021年-科技公司-人員信息匯總表.xlsx")
products=df["學(xué)歷"].unique()
for product in products:
df_product=df[df["學(xué)歷"]==product]
df_product.to_excel(f"學(xué)歷-{product}.xlsx",index=False)
#批量從匯總表提取數(shù)據(jù),填寫模板表,并生成單獨(dú)命名文件
Import os
Impor tpandas as pd
Import xlwings as xw
app=xw.App(visible=False,add_book=False)
wb1=app.books.open(r'履歷表.xlsx')
worksheet=wb1.sheets['Sheet1']
data=pd.read_excel('2021年-科技公司-人員信息匯總表.xlsx')
for index,row in data.iterrows():
worksheet.range('B2').value=row['部門']
worksheet.range('B3').value=row['姓名']
worksheet.range('D3').value=row['性別']
worksheet.range('B4').value=row['年齡']
worksheet.range('D4').value=row['學(xué)歷']
worksheet.range('B5').value=row['手機(jī)號(hào)碼']
wb1.save(row['部門']+'_'+row['姓名']+'_履歷表'+'.xlsx')
wb1.close()
app.quit()
基于以上分析,將子任務(wù)的代碼進(jìn)行綜合,調(diào)整為總?cè)蝿?wù)的代碼,完成既定目標(biāo)任務(wù)。本任務(wù)批量生成Excel文件的執(zhí)行效果如圖3所示。
教師要鼓勵(lì)學(xué)生積極完成每一個(gè)步驟,充分認(rèn)可學(xué)生的個(gè)體努力與團(tuán)隊(duì)合作,善于捕捉學(xué)生的閃光點(diǎn),并激勵(lì)學(xué)生不斷努力。
3.4? 思考與拓展
在完成總?cè)蝿?wù)之后,與學(xué)生總結(jié)本次任務(wù)習(xí)得的知識(shí)點(diǎn),讓學(xué)生反思學(xué)習(xí)過程中遇到的問題,并啟發(fā)學(xué)生探索發(fā)現(xiàn)新問題。例如:問題1,本次以學(xué)歷為條件生成多份新文件,如果以任意字段生成新表格文件,應(yīng)該如何調(diào)整?問題2,本例以已經(jīng)收集到的各部門文件為前提,而在實(shí)際工作中,員工信息往往是以各種形式分布在人事部門與各部門,如何通過技術(shù)手段高效處理數(shù)據(jù)的收集與分發(fā)工作?由學(xué)生在課外進(jìn)行自主探索,由已完成任務(wù)遷移到新問題,逐步拓寬學(xué)生思維的廣度與深度,激發(fā)學(xué)生的主動(dòng)性與創(chuàng)新性,以積極的心態(tài)應(yīng)對(duì)未來多樣需求的工作環(huán)境。
經(jīng)過本次在任務(wù)驅(qū)動(dòng)下完成程序設(shè)計(jì),學(xué)生感受到Python生態(tài)圈的強(qiáng)大,以及與Excel強(qiáng)強(qiáng)聯(lián)合在處理數(shù)據(jù)方面的優(yōu)勢。使學(xué)生在分析任務(wù)、實(shí)現(xiàn)任務(wù)的過程中培養(yǎng)計(jì)算思維;完成任務(wù)之后進(jìn)行思考,幫助學(xué)生拓展思維的廣度與深度,將形成的思維與方法進(jìn)行遷移,培養(yǎng)學(xué)生的融合創(chuàng)新能力。
4? 結(jié)? 論
隨著全球數(shù)字化轉(zhuǎn)型步伐的加快,在實(shí)際工作中,數(shù)據(jù)的處理需求更具多樣性、多變性,Python語言能夠助力各專業(yè)領(lǐng)域高效完成工作任務(wù)。在Python程序設(shè)計(jì)課程的教學(xué)實(shí)踐中采用敏捷方式的任務(wù)驅(qū)動(dòng)教學(xué)法,結(jié)合實(shí)際需求設(shè)計(jì)案例,能夠賦能學(xué)生的計(jì)算思維能力。學(xué)生在課堂上既有獨(dú)立思考,又有相互交流,提高了學(xué)生自我探索的主動(dòng)性,學(xué)生在分析任務(wù)、完成任務(wù)中獲得成就感,全過程思維活躍,參與度高。
教學(xué)是一個(gè)動(dòng)態(tài)的過程,結(jié)合產(chǎn)業(yè)需求、實(shí)際應(yīng)用,進(jìn)行教學(xué)改革、創(chuàng)新,使學(xué)生成為學(xué)習(xí)的主體,主動(dòng)探索,主動(dòng)實(shí)踐,主動(dòng)構(gòu)建知識(shí)體系,對(duì)培養(yǎng)學(xué)生創(chuàng)新實(shí)踐能力具有重要意義。
參考文獻(xiàn):
[1] 嵩天,彭遠(yuǎn)紅,宋文婷.理解和運(yùn)用計(jì)算生態(tài)推動(dòng)Python語言教學(xué)改革 [J].計(jì)算機(jī)教育,2017(8):6.
[2] 趙廣輝.面向新工科的Python程序設(shè)計(jì)交叉融合案例教學(xué) [J].計(jì)算機(jī)教育,2017(8):23-27.
[3] 郭紹青.任務(wù)驅(qū)動(dòng)教學(xué)法的內(nèi)涵 [J].中國電化教育,2006(7):57-59.
[4] 雷鋼.“目標(biāo)導(dǎo)向、問題求解、任務(wù)驅(qū)動(dòng)”三位一體的雙創(chuàng)實(shí)踐教學(xué)平臺(tái)研究 [J].實(shí)驗(yàn)室研究與探索,2021,40(1):221-225+299.
[5] 范建新,李劍.任務(wù)驅(qū)動(dòng)的課程學(xué)習(xí)質(zhì)量保證機(jī)制創(chuàng)設(shè)——開放大學(xué)有效學(xué)習(xí)模式與機(jī)制探索 [J].中國遠(yuǎn)程教育,2013(4):69-72.
[6] 何克抗.建構(gòu)主義的教學(xué)模式、教學(xué)方法與教學(xué)設(shè)計(jì) [J].北京師范大學(xué)學(xué)報(bào)(社會(huì)科學(xué)版),1997(5):74-81.
作者簡介:賈凌(1980—),女,漢族,山東濰坊人,講師,碩士,研究方向:計(jì)算機(jī)應(yīng)用。
3167500338260