摘要:來自作者鍋蜀黍背景本文主要根據(jù)作者個月以來對于人的零基礎(chǔ)教學(xué)經(jīng)驗總結(jié)而出,適合零基礎(chǔ)負(fù)基礎(chǔ)學(xué)習(xí)編程語言的同學(xué)閱讀。學(xué)生黨和工作黨的比例是。基礎(chǔ)幾乎都沒有。顯然這兩個人的學(xué)習(xí)方式勢必是不一樣的。而不是媽的如何又報錯了。
背景來自 GitChat 作者:鍋蜀黍
本文主要根據(jù)作者2個月以來對于 300 人的零基礎(chǔ)python教學(xué)經(jīng)驗總結(jié)而出,適合零基礎(chǔ)、負(fù)基礎(chǔ)學(xué)習(xí) python 編程語言的同學(xué)閱讀。
本文所述僅僅是方法,看完本文并不會讓你學(xué)會任何一門編程語言,僅僅能讓你少走一些彎路,少被毒害一些。
引子我們來探討的問題是 —— 如何從零開始學(xué)習(xí)python。
相信你能看到這篇文章,一定心里有一個學(xué)習(xí)編程或教編程的想法,本文分享的知識可以為這兩個目標(biāo)提供一些參考價值。
為什么是我來講這個事情呢?在過去的兩個月時間內(nèi),作者在自己開發(fā)的教育平臺——uband友班上面開辦了一個python班級,報名的用戶 75%是零基礎(chǔ)用戶,還有25%是之前學(xué)過,這25%中有一些負(fù)基礎(chǔ)用戶。
如何教?是不是我發(fā)一教材,然后讓大家順著開始學(xué)?是不是我們先進(jìn)行一些理論學(xué)習(xí),視頻授課?
我分析了一下情況,發(fā)現(xiàn)以下幾個比較有意思的點:
來學(xué)習(xí)的人之中有 70%是女生。
學(xué)生黨和工作黨的比例是 3:2。
絕大部分人一天只能抽出1~2個小時學(xué)習(xí)(非脫產(chǎn))。
基礎(chǔ)幾乎都沒有。
無疑這是一個極大的挑戰(zhàn),下面我就來講一下如何教學(xué)。
學(xué)編程從理論還是從訓(xùn)練開始?這個問題讓我回想到了自己的科班的學(xué)習(xí)過程,有這樣一個故事給大家分享:
“2012年,過年回家的火車上,我提著行李走上了擁擠的車廂,對面的小哥頂著蓬松的頭發(fā),我知道,這也許是我的同行。24小時的上海到貴州的旅程就沒那么孤單,因為我們都在討論架構(gòu)、算法、編程學(xué)習(xí)...這個工作了5 年的前輩給我的建議是,你現(xiàn)在看這個架構(gòu)、編程理論等書籍,不求甚解即可,等你有了大把經(jīng)驗,回來很快就能秒懂。
時間過去了2年,兩年中我也沒有看任務(wù)關(guān)于python的書籍,不過用它寫了七七八八不下幾萬行腳本解決各種問題。有一些我在圖書館等人,隨手翻看了一本《Python cookbook》,是一本500+頁的大部頭書,我就那么一頁頁翻看,等的人到了,我也看完了。
請問,我等了多久?
答案是:兩個小時”。
這個故事讓我思考了學(xué)習(xí)的兩種不同的模式。
學(xué)習(xí)的模式 — 創(chuàng)造還是模仿先給大家看兩個學(xué)習(xí)者:
想要通過學(xué)習(xí)python編程完成一個自己的個人網(wǎng)站。
想要通過學(xué)習(xí)python,對比python和其他腳本編程語言的設(shè)計優(yōu)劣,然后改進(jìn)之。
顯然這兩個人的學(xué)習(xí)方式勢必是不一樣的。
第一個人的學(xué)習(xí)重點在于 —— 模仿,這將是大多數(shù)程序員所做的工作,在這個階段,不要說編程是創(chuàng)造性的工作,頂多能說編程是一個有邏輯性的工作,模仿就可以了。
第二個人,顯然是一個編程科學(xué)家,北美的高校有一個研究方向叫做 programming language,我有幾個過去的同學(xué)都讀了這個專業(yè)的博士,還有我們著名的編程屆網(wǎng)紅“王垠”同學(xué)也是讀的這個專業(yè),這個專業(yè)的使命是什么—— “創(chuàng)造一門編程語言” or “改進(jìn)現(xiàn)有的編程語言”,他們的工作,模仿是遠(yuǎn)遠(yuǎn)不夠的,需要了解整個理論體系、設(shè)計原則、處理細(xì)節(jié)等等...他們不能靠模仿來學(xué)習(xí),因為沒有什么可以模仿。
而學(xué)習(xí)編程最大的悲劇 —— 就是明明自己的目的是模仿逐步形成自己的技能,而誤以為自己要去創(chuàng)造新事物。
所以學(xué)習(xí)編程之前需要搞懂 —— 做創(chuàng)造性的工作;還是做模仿性的工作。
創(chuàng)造性的工作舉例:?詩歌創(chuàng)作、生物學(xué)研究、新車設(shè)計、設(shè)計一門編程語言、設(shè)計一個新的web容器。
?模仿性的工作舉例:?朗讀英文詩歌、播音工作、編程一個APP、駕車、游泳、吉他彈唱、跳交際舞、雕刻小人、書法...
可以看到我們很大一部分事情,都是模仿類型的工作,模仿類型的工作時不需要從理論開始的,而是從練習(xí)開始的。比如學(xué)習(xí)游泳,沒有一個人是從看了一個月游泳的書籍開始的,而是教師在水下給你講,你去模仿他的動作,然后給你糾正。比如學(xué)習(xí)英語,就不說了,這么多的人學(xué)習(xí)了十幾年還不能用,就是缺乏練習(xí)。
而學(xué)習(xí)編程,還是教編程,大部分也是模仿式的學(xué)習(xí),模仿式的學(xué)習(xí)就要從練習(xí)開始,或者以練習(xí)為主的訓(xùn)練開始,不然很可能浪費了大量的時間而沒有看到成果而放棄。
(我們接觸到的編程學(xué)習(xí)者這樣的情況不在少數(shù))
了解了這個道理,我們開展教學(xué)就容易多了,那就是本著一個原則 —— 一開始就模仿寫代碼。
開始學(xué)習(xí)本文后面的部分是講 —— 如何進(jìn)行模仿性的python學(xué)習(xí),如果上面你的目的是創(chuàng)造性的,可以不看了。
那么我們就要開始做真正的學(xué)習(xí)了,以下我以我自己設(shè)計的教學(xué)流程作為參考,指導(dǎo)一個零基礎(chǔ)開始的教學(xué)過程。
從一個故事開始學(xué)習(xí)變量和判斷首先我們從一個老媽買菜的故事開始,第一周學(xué)習(xí)的內(nèi)容是學(xué)習(xí)變量,可以看下面一張圖,我們是如何教變量的,記住這個是第一天,第一天學(xué)習(xí)編程,就要開始寫代碼,這是我的教學(xué)過程要堅持的。不管寫的多,寫的少,都要開始模仿開始寫。
需求是下圖這樣的:
我們來看代碼
#!/usr/bin/python # -*- coding: utf-8 -*- # @author: Guoshushu # For beginner # 1. variable - num,str,boolean # 2. if # 3. > < >= <= == # 4. print def main(): who = "xiao的老媽 " good_price = 6 #小販的價格 good_description = "西雙版納大白菜" #小販的招牌 is_cheap = False #是否便宜 reasonable_price = 5 #老媽能接受的最高價格 buy_amount = 2 #準(zhǔn)備買 2 斤 # 開始你的表演 # go 我們來走一組 print "%s上街看到了%s,賣 %d 元/斤" % (who, good_description, good_price) if good_price <= reasonable_price: print "她認(rèn)為便宜" is_cheap = True print "她買了 %d 斤" % (buy_amount) else: print "她認(rèn)為貴了 " is_cheap = False print "她并沒有買,揚長而去" #homework #1. 看 day1-homework.py # run function if __name__ == "__main__": main()
看到了么,這一段代碼實現(xiàn)了我們的需求,而且完全是 自然語言編寫,普通人都可以看懂,我們教會了:
# For beginner # 1. variable - num,str,boolean # 2. if # 3. > < >= <= == # 4. print
可以注意到一點,我沒有教大家學(xué)習(xí) if __name__ = “__main__”: 這些事什么意思,而是讓大家開始模仿,大家都是成年人,都有悟性,不需要花費太多的時間去低效地學(xué)習(xí)理論,之后自然會明白。
上面這一段代碼,看懂就可以了么?
不,我會要求我的學(xué)員自己在電腦上打一遍,真正他們打了過后,就會發(fā)現(xiàn)其實看懂是沒有用的,因為他們會發(fā)生以下的問題。
跑代碼前沒有保存成.py的文件;
if之后的符號用了中文的:(冒號)。
縮進(jìn)寫錯了報 indent error。
True和False寫成了 true 和 false。
name 寫成了 name
64位的系統(tǒng)裝成了32位python,雖然已經(jīng)提醒過。
變量名字之間用了空格,報錯。
....
這些問題,不去實際寫代碼是發(fā)現(xiàn)不了的,但是好消息是,發(fā)現(xiàn)了一次,之后就基本不會再犯錯了,所以我們說編程模仿練習(xí)的必要,以及編程中犯錯報bug的必要。
如何學(xué)習(xí)列表這里再舉一個學(xué)習(xí)列表的例子,我們來看下面的代碼:
# -*- coding: utf-8 -*- # @author: Guoshushu def main(): good1 = "大白菜" good2 = "空心菜" good3 = "花菜" good4 = "生姜" good5 = "小龍蝦" # ....... 省略掉 100 個 good100 = "蚌殼" print "老媽看到了 %s "% (good1) print "老媽看到了 %s "% (good2) print "老媽看到了 %s "% (good3) print "老媽看到了 %s "% (good4) print "老媽看到了 %s "% (good5) def main2(): goods = "大白菜,空心菜,花菜,生姜,小龍蝦" print "老媽看到了 %s" %(goods) def main3(): print "-------" lst = ["大白菜", "空心菜", "花菜", "生姜", "小龍蝦"] #列表 for lst_item in lst: #遍歷 print "老媽看到了 %s "% (lst_item) if __name__ == "__main__": main() main2() main3()
相信大家已經(jīng)看到了,這一段是說明列表為何要使用,學(xué)習(xí)的過程需要了解為什么要用列表,那就是 變量不夠用了嘛。
我們看上述3個函數(shù)就能夠明白,列表這個數(shù)據(jù)結(jié)構(gòu)的演變過程,其實就是變量不夠用了,要用一個更牛逼的結(jié)構(gòu)來一次放很多個數(shù)據(jù),這樣理解起來會很自然。
相似的方法我用到了教授元祖、數(shù)組等等方面,你要如何學(xué)? 我給你的建議就是,用起來,用起來。
所有的 3 周的學(xué)習(xí)的代碼在我的github上,都可以自取,當(dāng)然我不可能在一篇文章里面全部講完,你可以去 github 下載我們的代碼記錄,模仿。
本文以下附件內(nèi)的github地址是我們 28 天的教學(xué)記錄和作業(yè)記錄,這個chat的同學(xué)可以試著開始寫,不過不好意思不能提供視頻教程。
一個月的碎片時間學(xué)習(xí)后,我們的學(xué)員可以完成以下的作業(yè):
你可以在這一周用github的代碼自學(xué)下,在chat里我們討論這個。
教學(xué)的體會 最好的心態(tài)是不斷犯錯、不怕犯錯我們的教育告訴我們,不要犯錯,犯錯是不好的,但是編程中,我們寫出了一個bug,編譯器給我們報錯了,那么就是一個學(xué)習(xí)的機會。
看到報錯的時候心態(tài)就是 —— 我又有了一次學(xué)習(xí)的機會。而不是 —— 媽的如何又報錯了。這是編程時候面對報錯的太多。
道理我都講完了,同時你可以跟著我的github代碼進(jìn)行學(xué)習(xí)模仿,最重要的當(dāng)然是堅持,但是我傾向于寫成 —— 用正確的方法堅持學(xué)習(xí)。就能很輕松學(xué)會。如果你是想要教編程老師,請一點要用模仿的方式教別人,不然會誤人誤己,切記。有任何問題,可以在我的chat中討論。
碎碎念我前面提到過,其中有大部分的編程學(xué)員都是女同學(xué),我發(fā)現(xiàn)她們的學(xué)習(xí)能力也是超強的,一個月的時間,而且?guī)缀醵际敲刻?1 小時左右的時間,就可以在引導(dǎo)下基本掌握編程的基礎(chǔ)知識,很了不起。
社群的力量還是非常之大的,一開始學(xué)習(xí),配置環(huán)境、寫第一行代碼的時候,群里的同學(xué)也是雞飛狗跳的,我真是感慨自己有勇氣開一個在線的教學(xué)生動手的編程課程,要知道,一般為了省事,大家都是采用錄視頻講一個看似非常詳細(xì)的課程,來規(guī)避這個麻煩。
不過實踐下來,這個效果的確最好,我們可以在chat里面聊一聊,我也會請我的學(xué)員來分享自己的學(xué)習(xí)經(jīng)歷。
資源編程班github
菜鳥教程python
其中 github 里包含了所有 4 周的作業(yè)和同學(xué)提交的作業(yè),在homework文件夾里面,大家可以下載下來模仿學(xué)習(xí)。菜鳥教程在這一個月的過程中,基本已經(jīng)教授完畢,而且是潛移默化的過程。
反饋和總結(jié)以下是幾篇學(xué)員的總結(jié),我貼出來給大家查看。
一個月的知識匯總:
學(xué)員寫來的部分郵件:
I really appreciate ShuShu"s coding class. It"s like he"s bringing a torch of enlightment to all of us "coding cavemen".
My girlfriend who is the organizer of "R Girl" in Taiwan is doing almost the samething. We all belive girls can do coding as well as boys. Just, who is the first person to devote in girls" education?
Anyway, thanks a lot. Hope I can join in this class next time.
開始報名的時候想的是反正這一個月是畢業(yè)季也不用上課,只要把論文答辯搞好就沒事了,還想著可以擴展一下自己的知識領(lǐng)域,我一個英專生腦子一熱就報了編程班。結(jié)果真的是忙成狗,沒打過n本論文的人都不好意思說自己要畢業(yè),要準(zhǔn)備答辯,還要幫著老師忙畢業(yè)季各種事情,更可怕的是我9月份還要考司法考試,真是在這個期間無數(shù)次想要放棄編程班的學(xué)習(xí)。。。但是我一直相信一句話,自己選的路,跪著也要走下去,所以呀,自己挖的坑不管怎樣都要自己填平。好在不是每天都要交作業(yè),只要有時間我就會聽蜀黍的視頻課,打個代碼練習(xí)一下,想不明白就放在一邊過一段時間再想想,在練習(xí)一下,實在跑不通就在群里問問小伙伴,于是,這一個月就這樣跌跌撞撞走過來了,真的覺得堅持下來自己已經(jīng)成功了!同時,感謝群里小伙伴和我的隊友對我的幫助,耐心解答我的問題;也真的真的很感謝篤師的細(xì)致講解,讓抽象的編程知識變得通俗易懂;也覺得篤師真的很辛苦,每天那么忙還要深夜錄制視頻,保證第二天的推送,老師這么認(rèn)真,作為學(xué)生也應(yīng)該對自己負(fù)責(zé),好好學(xué)習(xí)每天的知識。。。
個人感受
在大學(xué)期間,我只學(xué)習(xí)過簡單的計算機入門,后來自己考了個office,基本就是考前刷了點題就通過了,但是這真的和編程有很大的不同。隨著基礎(chǔ)知識的不斷深入,學(xué)習(xí)了更多的知識,我真的覺得編程是一個全新的世界。開始每次跑代碼,發(fā)現(xiàn)錯誤就很慌張,為什么又bug了呢,覺得變成好麻煩,自己是不是學(xué)不會了呢,但是蜀黍一直強調(diào)學(xué)好編程就是一個不斷debug的過程,于是我就每天接受自己各種花式報錯的襲擊,慢慢的自己的心態(tài)發(fā)生了轉(zhuǎn)變,學(xué)會分析自己的錯誤,一點一點去改正,最后跑成功的喜悅真的難以形容。還記得畫小烏龜?shù)哪枪?jié)課,看著屏幕上的效果圖,自己成就感十足;接觸類的概念,我覺得編程不只是要一個解決問題的方法,更重要的是要一條通向成功的捷徑,于是有了高度抽象化的概念;字典、元組、列表等等都使僵硬的數(shù)據(jù)變得有條理。一個月的編程課下來,我覺得自己具備了分析解決簡單問題的能力,一步一步規(guī)劃要實現(xiàn)的內(nèi)容,而不再只是看到需求背景就很慌張不知道怎么解決,這就是最大的進(jìn)步。
課程建議
建議在基礎(chǔ)知識講完之后,s2班級可以有不同篤師交替進(jìn)行授課講解,這樣也可以分擔(dān)蜀黍的教學(xué)任
務(wù),同時學(xué)生也能夠體會不同程序員的編程思路。
不足反思
在這一個月的學(xué)習(xí)當(dāng)中,我發(fā)現(xiàn)自己舉一反三的能力還有待提升加強,可能也是練習(xí)不夠,同樣的函數(shù)換了個小背景,就要想好久才能寫出代碼;同時,我的復(fù)盤只是自己回顧了一下每周學(xué)到的知識,但是如果能夠講給另一個人聽我覺得效果會更好,讓別人能夠聽懂自己才是真的明白了學(xué)到的知識;沒有系統(tǒng)總結(jié)自己的錯誤,有的時候犯過的錯誤會在下一次又不經(jīng)意的出現(xiàn),今后的學(xué)習(xí)應(yīng)當(dāng)多思考不要再重復(fù)自己的錯誤。
學(xué)習(xí)感悟
歷時一個月左右的編程班很快就結(jié)束了,在這一階段基本把python的基礎(chǔ)內(nèi)容學(xué)習(xí)了一遍,雖不能說完全精通,但也至少在我的腦海中留有印象,至少在蜀黍的指導(dǎo)下能夠輸出一些代碼,做些任務(wù)。從“一竅不通”到“入門”(算入門了吧),學(xué)習(xí)了不少,起初自己也想學(xué)點編程,后來總是不了了之,這次跟著蜀黍和大家堅持下來,還是蠻開心的。
但是,在日常的練習(xí)中,自己思考還是比較少,有所欠缺,常常跟著蜀黍的思路走,所以自己獨立思考解決問題還是比較少,可能自己練得太少,所以在寫大作業(yè)的時候基本沒什么思路,需要借助蜀黍的指點,才能完成作業(yè)(唉= =#看來學(xué)習(xí)能力不夠強,還要多多鍛煉,多多敲代碼)。
在最近的一段學(xué)習(xí)時間中,由于一段時間處于考試周,學(xué)習(xí)斷斷續(xù)續(xù)的,投入的時間并不是很多,經(jīng)常以完成任務(wù)就結(jié)束了(不應(yīng)該?。胰豪镉懻搮⑴c度也比較少,平時閱讀也比較少(敲腦袋,要反省)。
課程體驗
蜀黍備課詳細(xì),解釋地道,通俗易懂。
任務(wù)合理,基本能夠按要求完成。
很適合這種非專業(yè)、零基礎(chǔ)的學(xué)員。
群里的成員積極討論,能夠很好幫助大家解決問題,同時還有問題集錦,有助于復(fù)習(xí)。
下期計劃
繼續(xù)跟著蜀黍?qū)W習(xí),哈哈
反復(fù)學(xué)習(xí)蜀黍的學(xué)習(xí)資料。
認(rèn)真完成每天的作業(yè)。
認(rèn)真做總結(jié),和同伴交流。
學(xué)有余力,多閱讀相關(guān)材料、網(wǎng)站等。
多敲代碼,多敲代碼,多敲代碼。
無論如何,基于自己的興趣報了編程班(應(yīng)該不會產(chǎn)生厭學(xué)情緒吧),希望在編程班中和大家一起學(xué)習(xí),掌握一門技術(shù)(技多不壓身,哈哈),學(xué)以致用嘛!
更多的內(nèi)容將在chat里面提供。
后話Talk is cheap, show me your code.
練習(xí)在編程入門的過程中,的確是最重要的,希望看了這一篇文章的同學(xué),如果有對于編程學(xué)習(xí)的想法,一定不要止于看書、止于假學(xué)習(xí),這個技能,是一行一行敲出來的。
共勉。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/40768.html
摘要:菜鳥教程廖雪峰的官方網(wǎng)站第一個的偏基礎(chǔ)點,第二個或許對零基礎(chǔ)的不是很友好,有些字眼會看不懂,至于自己適合那個,還是要自己去看看。如果能看懂廖雪峰官方網(wǎng)站的話,推薦去看,因為我也是看這個來入門的差不多。 經(jīng)常有粉絲加了我之后就問,python零基礎(chǔ)怎樣入門?剛學(xué)python需要注意什么?沒有接觸過編程怎么學(xué)python?等等 之類問題,今天我就對這些問題說下我的淺見吧,希望對你們有用。 ...
摘要:大學(xué),光學(xué)工程研究生畢業(yè),和程序猿完全不搭邊。那怎么辦,試著學(xué)一學(xué)唄,學(xué)習(xí)才是程序猿的天性。所以我在想程序猿是不是都需要新知識刺激一下,才能保持興奮的頭腦。有句話說的很對程序猿就像好奇的貓,追著毛球的線頭玩,最后一個毛球在腦袋里攪漿糊。 說說我自己的經(jīng)歷。211大學(xué),光學(xué)工程研究生畢業(yè),和程序猿完全不搭邊。 畢業(yè)后進(jìn)了成都某國字頭研究所,在行業(yè)里摸爬滾打了四年,2018年機緣巧合在家養(yǎng)...
摘要:如果你仍然無法抉擇,那請選擇,畢竟這是未來的趨勢,參考知乎回答還是編輯器該如何選我推薦社區(qū)版,配置簡單功能強大使用起來省時省心,對初學(xué)者友好。 這是一篇 Python 入門指南,針對那些沒有任何編程經(jīng)驗,從零開始學(xué)習(xí) Python 的同學(xué)。不管你學(xué)習(xí)的出發(fā)點是興趣驅(qū)動、拓展思維,還是工作需要、想要轉(zhuǎn)行,都可以此文作為一個參考。 在這個信息爆炸的時代,以 Python入門 為關(guān)鍵字搜索出...
閱讀 3343·2019-08-29 16:17
閱讀 1992·2019-08-29 15:31
閱讀 2661·2019-08-29 14:09
閱讀 2561·2019-08-26 13:52
閱讀 757·2019-08-26 12:21
閱讀 2157·2019-08-26 12:08
閱讀 1008·2019-08-23 17:08
閱讀 1942·2019-08-23 16:59