所有號稱精通XX語言的面試者,簡歷可以直接Pass!
所有號稱《21天精通XXX語言》的書籍,都可以直接扔進(jìn)垃圾桶,不要猶豫!
在IT界慣用的黑名單詞當(dāng)中,《21天精通C++》、《21天精通Java》、《21天精通Python》等都名列前茅。那么你說,21天精通Python可能嗎?一萬小時定律,在IT界是永恒的真理。
如何學(xué)好Python呢?下面談?wù)勛约旱慕?jīng)驗:1、編程環(huán)境搭建
說的再多不如直接動手實踐,這里推薦直接入手Python3系列,畢竟Python核心團(tuán)隊目前已經(jīng)停止對Python2的維護(hù)。Windows平臺直接在官方網(wǎng)站下載安裝包,一鍵傻瓜式安裝即可。Linux更簡單,直接apt-get install或者yum install一條命令即可完成。
2、書籍推薦
書籍是人類進(jìn)步的階梯,編程行業(yè)亦不例外。下面推薦幾本入門、提升的Python書籍,其中Python官方文檔目前已經(jīng)中文版上線,所有你遇到的基礎(chǔ)問題都可在此找到答案。
簡明 Python 教程
Python編程,從入門到實踐
Python核心編程
Python官方教程文檔
看書學(xué)習(xí)過程中切不可只看書不實戰(zhàn),看書學(xué)習(xí)的基礎(chǔ)上,一定要對課后習(xí)題動手實戰(zhàn),編碼總結(jié)。
寫代碼的時間一定要大于看書看視頻的時間!
寫代碼的時間一定要大于看書看視頻的時間!
寫代碼的時間一定要大于看書看視頻的時間!
3、編程工具選擇
Python開發(fā),重點推薦兩款工具:
Pycharm
Python開發(fā)首選IDE,無需額外配置,直接下載后傻瓜式安裝,完成后即可使用。
VSCode
微軟出品,必屬精品。旨在替代Sublime、Atom之流,跨平臺支持,插件豐富,安裝包小巧,和其他IDE相比,最大的好處就是啟動快,搭配Python插件,亦可達(dá)到語法智能提示之妙。
4、遇到問題怎么辦?
授人以魚不如授人以漁,在編程的道路上,一定會遇到各種各樣的問題,真正的勇士敢于直面慘淡的 BUG。
善用搜索引擎,善用Google,學(xué)會科學(xué)上網(wǎng)是每一個IT人士必備的技能;
融入圈子,多和同行大佬交流,這里重點推薦GitHub、StackOverflow。
5、項目實戰(zhàn)
參與各類項目,不僅可以幫助我們對之前學(xué)習(xí)的基礎(chǔ)知識融會貫通,更可培養(yǎng)我們的興趣。你可以試著去寫個小爬蟲,去爬取豆瓣Top50熱門電影,爬取微博漂亮小姐姐的私房圖等等!
本文為作者“一個程序員的奮斗史”悟空問答原創(chuàng)文章,未經(jīng)允許轉(zhuǎn)載、抄襲必究!作為一名IT從業(yè)者,同時也是一名計算機專業(yè)的教育工作者,我來回答一下這個問題。
首先,當(dāng)前讓青少年接觸編程知識是比較不錯的選擇,孩子通過學(xué)習(xí)編程知識不僅能夠鍛煉自己的邏輯思維能力,同時也會為后續(xù)的學(xué)習(xí)和發(fā)展奠定一個較好的基礎(chǔ),在未來的智能化時代,編程語言將是一個與世界溝通的重要方式。
目前青少年編程通常會集中在Scratch和Python這兩門編程語言上,Scratch編程是MIT專門為青少年開發(fā)的,適合6到16歲的孩子來學(xué)習(xí),對于沒有過任何編程基礎(chǔ)的孩子來說,從Scratch開始學(xué)起會有一個更好的學(xué)習(xí)體驗。
Scratch是典型的圖形化編程方式,在編程方式上有點類似于“積木”組合的方式,不僅編程過程很直觀,娛樂性也很強,這會在一定程度上提升孩子的學(xué)習(xí)興趣。雖然Scratch本身是圖形化編程方式,但是也會培養(yǎng)一定的編程思維,而且Scratch本身也可以寫出比較復(fù)雜的程序代碼。
相對于Scratch編程來說,Python編程對于孩子的學(xué)習(xí)能力有更高的要求,通常9歲以上的孩子可以學(xué)習(xí)Python編程。雖然Python編程對于成年人來說比較簡單易學(xué),但是對于思維能力不強的孩子來說,Python編程還是比較難理解的。
學(xué)習(xí)Scratch編程和Python編程都需要注重動手實踐,最好能夠一邊使用一邊學(xué)習(xí),這也會在一定程度上激發(fā)孩子的學(xué)習(xí)興趣。另外,由于Python語言本身需要進(jìn)行代碼的編寫和操作,所以也需要具有一定的英語基礎(chǔ),但是要求并不高。
最后,鑒于當(dāng)前編程語言的重要性逐漸提升,我將在互聯(lián)網(wǎng)直播平臺(頭條和抖音)開始免費講解Scratch、Python和Java編程,計劃利用1年的時間完成三門編程語言的細(xì)致講解,對于想學(xué)習(xí)編程的小朋友們和大朋友們,可以跟我一起學(xué)習(xí)。
我從事互聯(lián)網(wǎng)行業(yè)多年,目前也在帶計算機專業(yè)的研究生,主要的研究方向集中在大數(shù)據(jù)和人工智能領(lǐng)域,我會陸續(xù)寫一些關(guān)于互聯(lián)網(wǎng)技術(shù)方面的文章,感興趣的朋友可以關(guān)注我,相信一定會有所收獲。
如果有互聯(lián)網(wǎng)、大數(shù)據(jù)、人工智能等方面的問題,或者是考研方面的問題,都可以在評論區(qū)留言,或者私信我!
無論是實用性還是易用性,Python 都是學(xué)習(xí)編程最具性價比的選擇。在今年,Python早已超越Java成為第一大編程語言。
如果你學(xué)過其他的語言,再學(xué) Python 將會讓你的技能樹大大地拓寬,有能力涉足更多的領(lǐng)域。
學(xué)習(xí)編程從入門到放棄的人不計其數(shù),很大程度上是因為,產(chǎn)出和投入的精力完全不成正比。
而學(xué)習(xí) Python,幾行代碼就可以實現(xiàn)一個爬蟲,幾個函數(shù)就可以做簡單的數(shù)據(jù)分析,寫一個小工具、小游戲也是分分鐘的事情……這種成就感,會激發(fā)你最原始的興趣。
那如何系統(tǒng)學(xué)習(xí)Python呢?一般我們會經(jīng)歷以下幾個階段。
1、了解編程基礎(chǔ)
一是變量、編程規(guī)范、基礎(chǔ)語法等,這也是能夠上手編寫 Python 代碼的前提。
二是數(shù)據(jù)結(jié)構(gòu),字符串、列表、字典、元組這些需要非常熟練,數(shù)據(jù)類型將貫穿你整個編程的始終。
這個部分一些簡單的練習(xí)就是,自己構(gòu)造一個數(shù)據(jù)類型,然后去實現(xiàn)基本的用法。比如你自己構(gòu)造一個列表,實現(xiàn)列表中數(shù)據(jù)的訪問、更新、刪除等基本操作,比如 len()、max()、min() 函數(shù),以及 append()、count()、extend() 等方法。
函數(shù)和方法是實現(xiàn)數(shù)據(jù)增刪改查的基本途徑,如果你在實際操作中遇到數(shù)據(jù)操作的問題,可以在具體的數(shù)據(jù)類型下查找相關(guān)用法。
PS:這些理論基礎(chǔ)可以在網(wǎng)上找視頻學(xué)習(xí)或者看書學(xué)習(xí)。
2、Python函數(shù)及流程控制
學(xué)習(xí) Python 的函數(shù)和控制語句,是真正去解決問題的過程。如何實現(xiàn)判斷和循壞,如何將固定的功能模塊封裝成函數(shù),這些不僅是寫出代碼的必要條件,也是訓(xùn)練編程思維的必經(jīng)之路。
函數(shù)這個部分無外乎函數(shù)的定義、函數(shù)調(diào)用以及參數(shù)傳遞,但是要能夠嫻熟地寫出函數(shù)實現(xiàn)對應(yīng)的功能,需要注意的細(xì)節(jié)很多,也需要不斷地訓(xùn)練。
流程控制則相對要好掌握一些,條件語句和循壞語句在不同的場景下練習(xí)幾遍,知道判斷和循環(huán)實現(xiàn)的過程,基本上就沒問題了。
其實到這個地方,基本的Python知識你已經(jīng)掌握了,你可以自己去做一些小項目,比如猜數(shù)字、各種轉(zhuǎn)換器、記賬工具……
3、利用 Python 做些事情
通常在學(xué)習(xí)一段時間之后,你就會有自我懷疑的過程,貌似真的懂了,但是離做出實際的東西又很遠(yuǎn),這些東西是否有用?
這個時候不妨了解一些第三方庫,你可以做更多的事情。比如用pandas作數(shù)據(jù)處理,用matplotlib做數(shù)據(jù)可視化分析,用BeautifulSoup寫爬蟲,利用Flask搭建網(wǎng)站……這些別人搭好的輪子,你直接拿來用就可以了。當(dāng)然像寫爬蟲和網(wǎng)站,你還需要了解其他方面的一些知識(比如HTTP、HTML、JS、數(shù)據(jù)庫等)。
對于不同的庫,內(nèi)部的方法、函數(shù)你還需要去熟悉,開始的時候先掌握少部分最常用的方法,在遇到實際的問題的時候,再去查對應(yīng)的更多的用法,這樣會更高效。
4、深入 Python 編程
其實第三個階段反復(fù)練習(xí)實踐,你已經(jīng)基本具備一些工作的技能了,比如Python 數(shù)據(jù)分析、網(wǎng)絡(luò)爬蟲、寫工具腳本……
首先你要了解Python的高級特性,如迭代器、生成器、裝飾器等,了解類和面向?qū)ο蟮睦砟睢I钊胂氯ィ憧梢匀ヌ剿鱌ython的實現(xiàn)原理,Python的性能優(yōu)化,跳出Python語言本身,去了解計算機的交互原理,還有很長的路要走,但并不是每一個人都需要這個過程。
但這些高屋建瓴的東西,又是你在這個領(lǐng)域立足生根的重要條件,對于堅定走技術(shù)方向的人來說,這個過程是有必要的。這個時候你再去做應(yīng)用層面的一些東西,又會有更加深刻的理解。
PS:到了這個階段,自己很可能遇到一個小坎就過不去,這樣急需一個前輩或者老師的指導(dǎo),也許一句話就能解決你一個月解不開的難題。
總結(jié)下來,學(xué)習(xí)Python,最常見的坑有這些:
1.很難找到合適且優(yōu)質(zhì)的學(xué)習(xí)資源,難以下手,或者隨便找一些材料開始學(xué)習(xí),極其容易從入門到放棄;
2.遇到問題不知道如何尋找解決辦法,甚至連問題都描述不清楚,經(jīng)常被一些細(xì)小的問題卡住,學(xué)習(xí)效率不高;
3.在理論學(xué)習(xí)中無法自拔,學(xué)習(xí)很久之后,發(fā)現(xiàn)還是不知道如何在實際的項目中去應(yīng)用,缺乏解決問題的能力;
4.看到別人的案例覺得好像是那么回事,但是自己去寫代碼的時候依然很困難,無法訓(xùn)練編程思維。
我畢業(yè)于克萊門森大學(xué)政治學(xué)專業(yè)。我曾考慮過是否選擇學(xué)習(xí)計算機科學(xué)專業(yè),還在大一那年報名參加了“編程概論”課程,不過很快就退出了。實在是太難了。
畢業(yè)后我一直住在硅谷,我發(fā)現(xiàn)我需要學(xué)習(xí)編程。一年后,我成為了eBay公司的一名中級軟件工程師。我不想讓大家覺得這是很輕松就能做到的。實際上,這是極具挑戰(zhàn)的一件事。在這一年的不斷嘗試努力過程中,我得到了很多樂趣。
1.1 自學(xué)的優(yōu)勢雖然與擁有計算機科學(xué)學(xué)士、碩士甚至是博士學(xué)位的同事一起工作的壓力很大,但別忘記了你還有“自學(xué)的優(yōu)勢”。你選擇學(xué)習(xí)Python編程,不是出于老師布置的任務(wù),而是因為你內(nèi)心學(xué)習(xí)的渴望,這一點是你所擁有的最大優(yōu)勢。蘋果公司的創(chuàng)始人斯蒂夫·沃茲尼亞克(Steve Wozniak)就是一位自學(xué)成才的程序員;還有因在美國宇航局的阿波羅登月計劃中做出卓越貢獻(xiàn)而獲得總統(tǒng)自由勛章的瑪格麗特·漢密爾頓(Margaret Hamilton);還有Tumblr 的創(chuàng)始人大衛(wèi)·卡普(David Karp),Twitter的創(chuàng)始人杰克·多西(Jack Dorsey),Instagram 的創(chuàng)始人凱文·斯特羅姆(Kevin Systrom),他們都是自學(xué)成才的程序員。
1.2 為什么應(yīng)該學(xué)編程不管你從事什么工作,編程都有助于你的職業(yè)發(fā)展。學(xué)習(xí)編程將給你自己賦能。我喜歡嘗試新想法,時刻都有希望啟動的新項目。學(xué)會編程后,我就可以坐下來自己實現(xiàn),而不需要依賴他人。
編程也會提升你在其他方面的技能。因為你熟練掌握了問題解決能力,鮮有其他工作不會因此而受益。我最近要在Craiglist上租房,搜索并篩選房子是個非常費力的活兒。但是我寫了一個程序來代替我搜索,最后將結(jié)果以郵件形式發(fā)送給我。學(xué)會編程,將把你從重復(fù)性工作中解放出來。
如果你想成為軟件工程師,市場上對這類崗位的需求也日益增長,但是符合要求的候選者卻總是供不應(yīng)求。到2020年,預(yù)計將有一百萬個編程崗位空缺。即使你的目標(biāo)不是成為軟件工程師,科學(xué)和金融等領(lǐng)域的崗位也開始傾向那些擁有編程經(jīng)驗的申請者。
1.3 沒有編程經(jīng)驗怎么辦?如果你之前沒有任何編程經(jīng)驗,擔(dān)心自己無法勝任編程工作,我想想告訴你的是:你完全有能力做到。人們對程序員有一些常見的誤解,比如程序員都得擅長數(shù)學(xué)。這是錯誤的印象,不過編程確實是一件困難的工作。幸運的是,專欄涵蓋的內(nèi)容將讓這一切變得比你想象得更加容易。
為了提高編程技巧,你應(yīng)該每天練習(xí)編程。擋在你面前的唯一障礙就是無法堅持,所以我們要采取一些措施確保自己能夠堅持不懈。準(zhǔn)備一張檢查清單,來確保每天都有做練習(xí),而且也能夠幫助你保持專注。
如果你還需要其他幫助,效率專家Tim Ferris建議采用如下技巧來保持驅(qū)動力。事先給家人或朋友一筆錢,如果你在規(guī)定的時間內(nèi)完成了目標(biāo),就讓他們把錢還給你,否則就將錢捐獻(xiàn)給你討厭的機構(gòu)。
1.4學(xué)習(xí)前你需要了解《零基礎(chǔ)學(xué)Python》不僅是教你如何使用某種特定的語言編程,還會介紹標(biāo)準(zhǔn)教材中所不包括的其他所有知識點。專欄內(nèi)分享的是我在成為軟件工程師過程中不得不自學(xué)的內(nèi)容。專欄不適合那些想要隨意了解下編程知識、將寫代碼作為愛好的人,而是專門寫給那些希望以編程為職業(yè)的人。不管你的目標(biāo)是成為一名軟件工程師、企業(yè)家,還是在其他的崗位上使用編程技能,你都是專欄的目標(biāo)讀者。
學(xué)會一門編程語言還不夠,你還需要學(xué)會其他技能,才能像計算機科學(xué)家一樣地工作。我會教授大家我從編程新手到專業(yè)軟件工程師過程中學(xué)到的一切。這個專欄,是為了向有志于編程崗位的人分享他們需要掌握的知識框架。
我經(jīng)常從自學(xué)編程的朋友那聽到這樣的反饋:我現(xiàn)在該做什么?我還不是一名程序員,也不知道下一步該學(xué)什么?因此我設(shè)計了下面的專欄結(jié)構(gòu)。
1.5 專欄的結(jié)構(gòu)我的目標(biāo)不是包羅你需要了解的每個主題的所有細(xì)節(jié),而是提供一份指引——一個編程職業(yè)發(fā)展所需要的所有技術(shù)路線圖。由此我將專欄分成五個部分。
第一部分:編程簡介。讓你盡快寫出自己的第一個程序,最好在今天。
第二部分:面向?qū)ο缶幊毯喗椤_@部分將介紹不同的編程范式,著重闡述面向?qū)ο缶幊獭D銜_發(fā)一個游戲,體會編程的強大能力。讀完這部分后你會沉迷于編程。
第三部分:編程工具簡介。將介紹提升編程生產(chǎn)力的不同工具。這時,你已經(jīng)沉迷于編程,并希望變得更好。你將會學(xué)習(xí)相關(guān)的操作系統(tǒng)、使用正則表達(dá)式提升效率、安裝并管理他人的程序,以及使用版本控制與其他工程師協(xié)作的知識。
第四部分:計算機科學(xué)簡介。將簡要介紹計算機科學(xué)知識,主要涵蓋兩個主題——算法和數(shù)據(jù)結(jié)構(gòu)。
第五部分:找到工作。最后一部分是關(guān)于最佳編程實踐,如何找到軟件工程師的工作,團(tuán)隊協(xié)作以及程序員的自我提升。我會分享如何通過技術(shù)面試與團(tuán)隊協(xié)作的建議,以及如何進(jìn)一步提升自己的技能。
1.6 從終點出發(fā)我學(xué)會編程的方式,與計算機科學(xué)通常的教學(xué)方式正好相反。專欄的結(jié)構(gòu)是根據(jù)我自己的方式組織的。一般來說,你會先花很多時間學(xué)習(xí)理論,理論知識學(xué)的太多以至于許多計算機科學(xué)的畢業(yè)生甚至不知道如何動手編程。杰夫·阿特伍德(Jeff Atwood),在其博客“為什么程序員不會編程”中寫道:“和我一樣,許多人都碰到了這樣的情況,編程崗位的200位申請者中,有199個根本不會寫代碼。重申一遍:他們一點代碼都不會寫。”這種現(xiàn)象直接促使Atwood發(fā)明了FizzBuzz代碼挑戰(zhàn),一種用來在面試中篩選申請者的編程測試。
《王者之旅》電影中的主角喬什(Josh Waitzkin),在《學(xué)習(xí)的藝術(shù)》一書中回憶了他如何反向?qū)W習(xí)國際象棋。他沒有和其他人一樣研究開局,而是從學(xué)習(xí)象棋殘局(棋盤上只剩下少數(shù)幾個棋子)開始。這樣做讓他對國際象棋有了更深的理解,并贏得了多次大賽冠軍。與此類似,我認(rèn)為先學(xué)習(xí)如何編程再學(xué)習(xí)理論的方法更高效,因為你會擁有了解背后原理的強烈驅(qū)動。這就是為什么專欄一直到第五部分才介紹計算機科學(xué)理論,而且內(nèi)容也盡量精簡。雖然理論很重要,但是在你擁有了編程經(jīng)驗之后,理論的價值才更大。
1.7 專欄的格式專欄的各個章節(jié)緊密相關(guān)。如果你讀到了某些看不懂的概念,可能在前一章已經(jīng)做了介紹。專欄內(nèi)盡量避免重復(fù)解釋,所以牢記這個特點。在給重點詞匯下定義時,會使用斜體。每個章節(jié)的末尾都有一個詞匯表,對該章內(nèi)出現(xiàn)的斜體名詞進(jìn)行解釋。
專欄代碼段前的注釋為GitHub的網(wǎng)址,讀者可于網(wǎng)站直接復(fù)制代碼。
1.8 專欄使用的技術(shù)為了讓讀者盡可能的積累編程經(jīng)驗,專欄會介紹多種技術(shù)。在某些情況下,必須在許多不同的技術(shù)中做出選擇。在第20章“版本控制”中,我們將會學(xué)習(xí)Git的基礎(chǔ)知識。Git是一個流行的版本控制系統(tǒng),選擇介紹Git是因為筆者認(rèn)為它已經(jīng)成為版本控制的業(yè)界標(biāo)準(zhǔn)。專欄中用Python來編寫大部分的編程示例,因為它是一門很流行的初學(xué)者語言,而且即使從來沒有使用過Python的人學(xué)習(xí)起來也比較簡單。此外,目前幾乎每個領(lǐng)域?qū)ython開發(fā)者的需求都非常大。不過,專欄會盡量做到內(nèi)容與技術(shù)無關(guān)——注重概念,而非技術(shù)本身。
1.9初學(xué)者需要準(zhǔn)備的工具首先需要有一臺計算機,以便跟著每個專欄內(nèi)容進(jìn)行示例練習(xí)。計算機有一個操作系統(tǒng)(operating system),即一個扮演人與計算機物理硬件之間的中間人的程序。可以在屏幕上看到的稱為圖形用戶界面(Graphical User Interface,GUI),它是操作系統(tǒng)的一部分。
臺式計算機和筆記本電腦目前有3種常用的操作系統(tǒng):Windows、UNIX和Linux。
Windows是微軟推出的操作系統(tǒng)。UNIX操作系統(tǒng)發(fā)明于20世紀(jì)70年代,目前最流行的UNIX操作系統(tǒng)是蘋果的OS X。Linux則是目前世界上大部分服務(wù)器(server)都在使用的一款開源操作系統(tǒng)。服務(wù)器指的是執(zhí)行托管網(wǎng)站等任務(wù)的計算機或計算機程序。開源(open-source)意味著軟件不歸某個公司或個人所有,而是由一群志愿者維護(hù)。Linux和UNIX都是類UNIX操作系統(tǒng),意味著二者之間非常相似。
如果你喜歡歡迎關(guān)注我的專欄《零基礎(chǔ)學(xué)Python3》,有問題歡迎給我留言,我會第一時間反饋給您。https://learning.snssdk.com/feoffline/toutiao_wallet_bundles/toutiao_learning_wap/online/article.html?item_id=6681141509619712520&app_name=news_article