宋鴻梅 曹志民 韓連福 付長(zhǎng)鳳 韓建
摘要:以Python編程語(yǔ)言課程為例,探索教學(xué)實(shí)例的設(shè)計(jì)與發(fā)掘。結(jié)合傳統(tǒng)文化和生活實(shí)踐的實(shí)例可以引發(fā)學(xué)生共鳴,產(chǎn)生良好的教學(xué)效果。設(shè)計(jì)典型案例,和學(xué)生討論并選擇方案,把Python語(yǔ)言要素融入案例中講解,引導(dǎo)學(xué)生完善程序功能和優(yōu)化,提高學(xué)生編程技能,培養(yǎng)編程習(xí)慣。
關(guān)鍵詞:Python教學(xué);課程思政;傳統(tǒng)文化;實(shí)例教學(xué)
中圖分類號(hào):G642 ? ? ? ?文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2022)02-0158-02
編程是工科大學(xué)生必須掌握的一項(xiàng)技能,尤其是電子、計(jì)算機(jī)相關(guān)專業(yè)。而Python語(yǔ)言簡(jiǎn)單易學(xué)、功能強(qiáng)大,尤其在人工智能、大數(shù)據(jù)方面的應(yīng)用,成為最為歡迎的編程語(yǔ)言之一[1]。
1 Python教學(xué)存在的問(wèn)題
Python語(yǔ)言以其簡(jiǎn)單易學(xué)吸引著廣大初學(xué)者,同時(shí)應(yīng)用廣泛促使大學(xué)紛紛開(kāi)課,但是由于學(xué)時(shí)限制,只能做入門級(jí)的引導(dǎo),而未實(shí)現(xiàn)其功能強(qiáng)大的優(yōu)勢(shì)。有限的課程學(xué)時(shí)能夠讓學(xué)時(shí)掌握Python的基本語(yǔ)言要素和基本規(guī)則,未能進(jìn)一步深入探討。學(xué)校的教學(xué)方式和學(xué)生們?nèi)蝿?wù)式學(xué)習(xí)往往使得學(xué)生完成任務(wù)之時(shí)便是拋棄Python之日,難以令其成為有效的學(xué)習(xí)研究工具。那么把學(xué)習(xí)Python變?yōu)槭褂肞ython,讓Python融入生活,真正使Python成為除了母語(yǔ)、外語(yǔ)的第三門語(yǔ)言,才是真正達(dá)到了學(xué)習(xí)Python的目的。
2 學(xué)生情況分析
年輕學(xué)生的自我意識(shí)的覺(jué)醒達(dá)到了前所未有的高度,他們思維更加活躍,獨(dú)立思考能力和判斷能力極強(qiáng),如果沒(méi)有得到他們的認(rèn)同,很難激發(fā)學(xué)習(xí)積極性,這當(dāng)然是國(guó)家的發(fā)展社會(huì)的進(jìn)步,我們需要這樣的年輕人,但是這種與眾不同的新青年同時(shí)給教育工作者帶來(lái)一定的困難,經(jīng)典的編程案例,如溫度轉(zhuǎn)換、計(jì)算完美數(shù)、輸出素?cái)?shù)等,可以完美體現(xiàn)程序的實(shí)質(zhì),即規(guī)則+算法,但是類似的例子比較枯燥,要么過(guò)于簡(jiǎn)單,完成程序編寫沒(méi)有成就感,要么沒(méi)有明確的物理意義,沒(méi)有辦法直觀感受應(yīng)用。這類實(shí)例雖好,但很難達(dá)到激發(fā)學(xué)習(xí)熱情,刺激獨(dú)立思考的目的。針對(duì)學(xué)生特點(diǎn)和教學(xué)知識(shí)點(diǎn),設(shè)計(jì)合適的教學(xué)案例對(duì)于教學(xué)效果和培養(yǎng)學(xué)生學(xué)習(xí)習(xí)慣是非常重要的。
3 教學(xué)實(shí)例設(shè)計(jì)
設(shè)計(jì)教學(xué)案例的基本原則就是要向?qū)W生灌輸我們學(xué)習(xí)編程是為了用,“用”是出發(fā)點(diǎn)也是立足點(diǎn),設(shè)計(jì)教學(xué)案例時(shí)圍繞著“用”,這樣可以比較容易引起學(xué)生共鳴,激發(fā)學(xué)生學(xué)習(xí)熱情。
3.1 案例1. 應(yīng)用Turtle庫(kù)繪制太極圖
在學(xué)習(xí)Turtle庫(kù)繪圖時(shí),按照Turtle的官方文檔通常繪制多邊形、五角星等幾何圖形,這些很難引發(fā)學(xué)生的興致,而太極圖案與我們有著深遠(yuǎn)的文化淵源,是我國(guó)傳統(tǒng)文化的瑰寶,充滿了神秘色彩,令人神往遐思。太極圖案也可以很好覆蓋Turtle繪圖指令,并且可簡(jiǎn)可繁,滿足程序優(yōu)化和功能拓展的需求,同時(shí)學(xué)習(xí)編程與傳承民族文化有機(jī)結(jié)合,達(dá)到知識(shí)傳授和技能培養(yǎng)與思政教育同行同向的要求。
繪制如圖1所示的太極圖案,圖案由圓和直線組成,顏色有黑白兩色,確定其相對(duì)位置關(guān)系就可以完成圖案的繪制。
Turtle是Python的標(biāo)準(zhǔn)庫(kù),在使用時(shí)首先要導(dǎo)入庫(kù),使用指令為import turtle。Turtle基本繪圖指令如表1所示。
3.2 案例2:查詢某人出生的天干紀(jì)年及生辰屬相
中華優(yōu)秀傳統(tǒng)文化是中華民族的精神命脈,是中華民族的“根”與“魂”,前輩們?yōu)榱宋幕瘋鞒凶龀隽似D苦的努力,而在當(dāng)今的教學(xué)中,可以與時(shí)俱進(jìn),結(jié)合自己的教學(xué)內(nèi)容肩負(fù)起新時(shí)代傳統(tǒng)文化傳播的重任。天干地支紀(jì)年和生肖是中華特有民族文化,并且可以如星座一般測(cè)試,這就成功地引發(fā)了學(xué)生的興趣,在實(shí)際教學(xué)中的確也如預(yù)想一樣,較之其他的案例,學(xué)生們更加興致盎然,甚至紛紛對(duì)程序進(jìn)行擴(kuò)展,把自己感興趣的內(nèi)容加到程序中,課程項(xiàng)目取得了空前的成功,果然“知之者不如好之者,好之者不如樂(lè)之者”。
天干、地支中國(guó)古代為方便農(nóng)時(shí),常以天干地支來(lái)紀(jì)年、紀(jì)月、紀(jì)日、紀(jì)時(shí)。共有十天干和十二地支。其中十二地支與屬相一一對(duì)應(yīng),它們分別是:[2]
十天干:
甲、乙、丙、丁、戊、己、庚、辛、壬、癸
十二地支:
子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥
對(duì)應(yīng)的十二屬相:
鼠、牛、虎、兔、龍、蛇、馬、羊、猴、雞、狗、豬
兩者按固定的順序互相配合,組成了干支紀(jì)法。公元紀(jì)年和干支紀(jì)年的換算關(guān)系為:
天干算法:用公元紀(jì)年數(shù)減3,除以10所得余數(shù),就是天干所對(duì)應(yīng)的位數(shù);
地支算法:用公元紀(jì)年數(shù)減3,除以12所得余數(shù),就是地支所對(duì)應(yīng)的位數(shù)。
以2021年為例:
天干算法:(2021-3)%10=8, 8對(duì)應(yīng)天干第8位是辛,即天干為辛;地支算法:(2021-3)%12=2,2對(duì)應(yīng)地支第2位是丑,即地支為丑。所以公元2021年對(duì)應(yīng)的干支紀(jì)年為辛丑(牛)年。
編寫程序如圖2所示。
這里有一個(gè)問(wèn)題,輸入的年份需要是農(nóng)歷,如果是公歷,那么在年初的時(shí)候,換算結(jié)果是基本上不會(huì)正確。以2021年元旦為例,運(yùn)行程序,會(huì)得到如下結(jié)果:
請(qǐng)輸入出生日期(格式樣例:2000 01 01)2021 01 01
您出生于辛丑年,屬牛。
但是2021年元旦這天按照萬(wàn)年歷是庚子年 鼠。所以需要修正這個(gè)程序,有兩種修正方案,一個(gè)是在輸入出生日期時(shí)輸入農(nóng)歷,這個(gè)不太符合案例要求;另外一個(gè)方式是要把公歷轉(zhuǎn)換為農(nóng)歷。農(nóng)歷是天文歷,公歷是計(jì)算歷,換算起來(lái)非常復(fù)雜,有人做了轉(zhuǎn)換模塊,可以拿來(lái)直接使用,這也是Python倡導(dǎo)的理念之一,“不要制造重復(fù)的輪子”。通過(guò)pip直接安裝:pip install zhdate[3-4]程序代碼如圖3所示。
測(cè)試改程序,仍然使用2021年元旦:
請(qǐng)輸入出生日期(格式樣例:2000 01 01)2021 01 01
您出生于庚子年,屬鼠。
程序的bug得到了修正。
這個(gè)案例用于教學(xué)取得了非常理想的效果,通過(guò)編程查詢生肖,看似簡(jiǎn)單,但是埋藏著陷阱。公歷紀(jì)年和農(nóng)歷紀(jì)年的大部分都可以重合,第一個(gè)程序也非常簡(jiǎn)單,只要了解兩種紀(jì)年法的換算關(guān)系,并且會(huì)使用Python的字符串就可以編寫程序,而且每一位同學(xué)都可以拿自己做測(cè)試,參與度高。在實(shí)際教學(xué)活動(dòng)中,學(xué)生們也十分活躍,積極參與,取得了意想不到的效果,比方說(shuō)生日在年初的學(xué)生甚至發(fā)現(xiàn)了程序中存在的問(wèn)題,在幫助學(xué)生修正bug的時(shí)候向?qū)W生灌輸Python的編程理念,介紹第三方庫(kù)的使用,如何把自己的需求和已有的資源有機(jī)結(jié)合起來(lái),從而快速高效地解決問(wèn)題。
4 結(jié)束語(yǔ)
實(shí)例教學(xué)的推廣已經(jīng)很多年了,在教學(xué)實(shí)踐證明中更好的實(shí)例選擇才能達(dá)到更好的教學(xué)效果,好的實(shí)例可以激發(fā)學(xué)生學(xué)習(xí)興趣,培養(yǎng)良好的思維習(xí)慣。多年的教學(xué)經(jīng)驗(yàn)證明,從學(xué)生本身和學(xué)生生活中發(fā)掘的實(shí)例更加有親和力,學(xué)生的參與度會(huì)顯著提高,并且可以培養(yǎng)學(xué)生習(xí)慣課堂中學(xué)到的知識(shí)和技能解決生活中的問(wèn)題。引導(dǎo)學(xué)生轉(zhuǎn)變被動(dòng)的學(xué)習(xí)態(tài)度,扎根于生活,靈活地運(yùn)用知識(shí),把學(xué)和用形成正向激勵(lì)的機(jī)制,才是真正完成教學(xué)任務(wù)。
參考文獻(xiàn):
[1] 朱雄泳,張菲菲,陳憶群,等.新工科《Python程序設(shè)計(jì)》課程改革探索[J].電腦知識(shí)與技術(shù),2020,16(24):131-133.
[2] 干支紀(jì)年[EB/OL].[2021-03-10].https://baike.baidu.com/item/%E5%B9%B2%E6%94%AF%E7%BA%AA%E5%B9%B4/3383226?fr=aladdin.
[3] 農(nóng)歷和陽(yáng)歷日期互轉(zhuǎn),Python實(shí)現(xiàn).[EB/OL].[2021-03-10].https://blog.csdn.net/eylier/article/details/111145748.
[4] 不用網(wǎng)絡(luò)接口直接本地計(jì)算中國(guó)農(nóng)歷,支持農(nóng)歷陽(yáng)歷互轉(zhuǎn).[EB/OL].[2021-03-10].https://github.com/CutePandaSh/zhdate.
【通聯(lián)編輯:王力】
1819500783389