我畢業于克萊門森大學政治學專業。我曾考慮過是否選擇學習計算機科學專業,還在大一那年報名參加了“編程概論”課程,不過很快就退出了。實在是太難了。
畢業后我一直住在硅谷,我發現我需要學習編程。一年后,我成為了eBay公司的一名中級軟件工程師。我不想讓大家覺得這是很輕松就能做到的。實際上,這是極具挑戰的一件事。在這一年的不斷嘗試努力過程中,我得到了很多樂趣。
1.1 自學的優勢雖然與擁有計算機科學學士、碩士甚至是博士學位的同事一起工作的壓力很大,但別忘記了你還有“自學的優勢”。你選擇學習Python編程,不是出于老師布置的任務,而是因為你內心學習的渴望,這一點是你所擁有的最大優勢。蘋果公司的創始人斯蒂夫·沃茲尼亞克(Steve Wozniak)就是一位自學成才的程序員;還有因在美國宇航局的阿波羅登月計劃中做出卓越貢獻而獲得總統自由勛章的瑪格麗特·漢密爾頓(Margaret Hamilton);還有Tumblr 的創始人大衛·卡普(David Karp),Twitter的創始人杰克·多西(Jack Dorsey),Instagram 的創始人凱文·斯特羅姆(Kevin Systrom),他們都是自學成才的程序員。
1.2 為什么應該學編程不管你從事什么工作,編程都有助于你的職業發展。學習編程將給你自己賦能。我喜歡嘗試新想法,時刻都有希望啟動的新項目。學會編程后,我就可以坐下來自己實現,而不需要依賴他人。
編程也會提升你在其他方面的技能。因為你熟練掌握了問題解決能力,鮮有其他工作不會因此而受益。我最近要在Craiglist上租房,搜索并篩選房子是個非常費力的活兒。但是我寫了一個程序來代替我搜索,最后將結果以郵件形式發送給我。學會編程,將把你從重復性工作中解放出來。
如果你想成為軟件工程師,市場上對這類崗位的需求也日益增長,但是符合要求的候選者卻總是供不應求。到2020年,預計將有一百萬個編程崗位空缺。即使你的目標不是成為軟件工程師,科學和金融等領域的崗位也開始傾向那些擁有編程經驗的申請者。
1.3 沒有編程經驗怎么辦?如果你之前沒有任何編程經驗,擔心自己無法勝任編程工作,我想想告訴你的是:你完全有能力做到。人們對程序員有一些常見的誤解,比如程序員都得擅長數學。這是錯誤的印象,不過編程確實是一件困難的工作。幸運的是,專欄涵蓋的內容將讓這一切變得比你想象得更加容易。
為了提高編程技巧,你應該每天練習編程。擋在你面前的唯一障礙就是無法堅持,所以我們要采取一些措施確保自己能夠堅持不懈。準備一張檢查清單,來確保每天都有做練習,而且也能夠幫助你保持專注。
如果你還需要其他幫助,效率專家Tim Ferris建議采用如下技巧來保持驅動力。事先給家人或朋友一筆錢,如果你在規定的時間內完成了目標,就讓他們把錢還給你,否則就將錢捐獻給你討厭的機構。
1.4學習前你需要了解《零基礎學Python》不僅是教你如何使用某種特定的語言編程,還會介紹標準教材中所不包括的其他所有知識點。專欄內分享的是我在成為軟件工程師過程中不得不自學的內容。專欄不適合那些想要隨意了解下編程知識、將寫代碼作為愛好的人,而是專門寫給那些希望以編程為職業的人。不管你的目標是成為一名軟件工程師、企業家,還是在其他的崗位上使用編程技能,你都是專欄的目標讀者。
學會一門編程語言還不夠,你還需要學會其他技能,才能像計算機科學家一樣地工作。我會教授大家我從編程新手到專業軟件工程師過程中學到的一切。這個專欄,是為了向有志于編程崗位的人分享他們需要掌握的知識框架。
我經常從自學編程的朋友那聽到這樣的反饋:我現在該做什么?我還不是一名程序員,也不知道下一步該學什么?因此我設計了下面的專欄結構。
1.5 專欄的結構我的目標不是包羅你需要了解的每個主題的所有細節,而是提供一份指引——一個編程職業發展所需要的所有技術路線圖。由此我將專欄分成五個部分。
第一部分:編程簡介。讓你盡快寫出自己的第一個程序,最好在今天。
第二部分:面向對象編程簡介。這部分將介紹不同的編程范式,著重闡述面向對象編程。你會開發一個游戲,體會編程的強大能力。讀完這部分后你會沉迷于編程。
第三部分:編程工具簡介。將介紹提升編程生產力的不同工具。這時,你已經沉迷于編程,并希望變得更好。你將會學習相關的操作系統、使用正則表達式提升效率、安裝并管理他人的程序,以及使用版本控制與其他工程師協作的知識。
第四部分:計算機科學簡介。將簡要介紹計算機科學知識,主要涵蓋兩個主題——算法和數據結構。
第五部分:找到工作。最后一部分是關于最佳編程實踐,如何找到軟件工程師的工作,團隊協作以及程序員的自我提升。我會分享如何通過技術面試與團隊協作的建議,以及如何進一步提升自己的技能。
1.6 從終點出發我學會編程的方式,與計算機科學通常的教學方式正好相反。專欄的結構是根據我自己的方式組織的。一般來說,你會先花很多時間學習理論,理論知識學的太多以至于許多計算機科學的畢業生甚至不知道如何動手編程。杰夫·阿特伍德(Jeff Atwood),在其博客“為什么程序員不會編程”中寫道:“和我一樣,許多人都碰到了這樣的情況,編程崗位的200位申請者中,有199個根本不會寫代碼。重申一遍:他們一點代碼都不會寫。”這種現象直接促使Atwood發明了FizzBuzz代碼挑戰,一種用來在面試中篩選申請者的編程測試。
《王者之旅》電影中的主角喬什(Josh Waitzkin),在《學習的藝術》一書中回憶了他如何反向學習國際象棋。他沒有和其他人一樣研究開局,而是從學習象棋殘局(棋盤上只剩下少數幾個棋子)開始。這樣做讓他對國際象棋有了更深的理解,并贏得了多次大賽冠軍。與此類似,我認為先學習如何編程再學習理論的方法更高效,因為你會擁有了解背后原理的強烈驅動。這就是為什么專欄一直到第五部分才介紹計算機科學理論,而且內容也盡量精簡。雖然理論很重要,但是在你擁有了編程經驗之后,理論的價值才更大。
1.7 專欄的格式專欄的各個章節緊密相關。如果你讀到了某些看不懂的概念,可能在前一章已經做了介紹。專欄內盡量避免重復解釋,所以牢記這個特點。在給重點詞匯下定義時,會使用斜體。每個章節的末尾都有一個詞匯表,對該章內出現的斜體名詞進行解釋。
專欄代碼段前的注釋為GitHub的網址,讀者可于網站直接復制代碼。
1.8 專欄使用的技術為了讓讀者盡可能的積累編程經驗,專欄會介紹多種技術。在某些情況下,必須在許多不同的技術中做出選擇。在第20章“版本控制”中,我們將會學習Git的基礎知識。Git是一個流行的版本控制系統,選擇介紹Git是因為筆者認為它已經成為版本控制的業界標準。專欄中用Python來編寫大部分的編程示例,因為它是一門很流行的初學者語言,而且即使從來沒有使用過Python的人學習起來也比較簡單。此外,目前幾乎每個領域對Python開發者的需求都非常大。不過,專欄會盡量做到內容與技術無關——注重概念,而非技術本身。
1.9初學者需要準備的工具首先需要有一臺計算機,以便跟著每個專欄內容進行示例練習。計算機有一個操作系統(operating system),即一個扮演人與計算機物理硬件之間的中間人的程序。可以在屏幕上看到的稱為圖形用戶界面(Graphical User Interface,GUI),它是操作系統的一部分。
臺式計算機和筆記本電腦目前有3種常用的操作系統:Windows、UNIX和Linux。
Windows是微軟推出的操作系統。UNIX操作系統發明于20世紀70年代,目前最流行的UNIX操作系統是蘋果的OS X。Linux則是目前世界上大部分服務器(server)都在使用的一款開源操作系統。服務器指的是執行托管網站等任務的計算機或計算機程序。開源(open-source)意味著軟件不歸某個公司或個人所有,而是由一群志愿者維護。Linux和UNIX都是類UNIX操作系統,意味著二者之間非常相似。
如果你喜歡歡迎關注我的專欄《零基礎學Python3》,有問題歡迎給我留言,我會第一時間反饋給您。https://learning.snssdk.com/feoffline/toutiao_wallet_bundles/toutiao_learning_wap/online/article.html?item_id=6681141509619712520&app_name=news_article
網上學習python的好地方?隨著python的興起和火熱,越來越多的開發者投入到python學習中來,沒有基礎,又不會編程的小白該如何學習,有哪些好的學習網站可以一用,這里簡單介紹一下,感興趣的朋友可以嘗試一下:
視頻類python教程B站說起B站,應該無人不知無人不曉,日常休閑娛樂,我們都會用到這個網站,其實除了娛樂性內容外,B站針對編程學習也提供了許多優質的視頻,涉及常見的c語言、java、python、c++、php,前后端、數據庫等都有廣泛介紹,既有基礎入門,也有高階深入,不管你是零基礎的入門者,還是有一定經驗的開發者,都可以從中學習專業知識,提高專業技能,學習編程來說,在合適不過:
慕課網這是一個眾所周知的編程學習網站,所有資料都是以視頻的方式在線學習,內容基礎全面、課程循序漸進,講解透徹、易于理解,同時自帶有練習小項目,如果你是零基礎的小白,對python非常感興趣,想全面了解一下相關模塊和應用,可以使用一下這個網站,邊學習邊練習,效果再好不過,但內容、題材方面沒有B站豐富:
文檔類python教程菜鳥教程這是一個比較基礎的編程學習網站,相信許多開發者都聽說過,所有資料都是以文檔的形式在線學習,內容非常基礎,淺顯易懂,即使沒有任何編程經驗的小白也可以輕松看懂,從軟件的下載到安裝,再到基本語法的講解、深入,這個網站都有詳細介紹,前后端、數據庫、python、java等都有涉及,入門編程來說,是一個非常不錯的選擇:
廖雪峰官網說起廖雪峰教程,許多開發者都應該聽說過,一個比較大眾、適合于初學者的編程學習網站,內容基礎全面,易于理解,都是以小白的角度來介紹和學習一門語言,從基本的語法變量,再到各個模塊的講解學習,這個教程都有詳細介紹,如果你零基礎、零經驗入門python,可以使用一下這個網站,效果也非常不錯:
目前,就分享這4個python學習網站吧,都是免費的,既有視頻類,也有文檔類,根據自己實際情況和喜好,選擇合適的網站就行,當然,“師傅請進門,學藝在個人”,最重要的還是要多看多練,這樣效果最好,提升也最快,網上也有相關教程和資料,介紹的非常詳細,感興趣的話,可以搜一下,希望以上分享的內容能對你有所幫助吧,也歡迎大家評論、留言進行補充。
廖雪峰Python教程 https://www.liaoxuefeng.com/wiki/1016959663602400
明確方向
首先,我們需要清楚自學Python編程的目的是什么,也就是將要是使用Python用于哪個方向的開發工作。Python作為一門被廣泛應用的編程語言,可以應用于數據挖掘分析、AI人工智能、前端應用開發、Linux運維、自動化、測試等多種方向,不同方向的Python學習曲線是不同的。
無論我們是希望通過學習Python尋求新的行業工作,還是希望在已有行業進行深耕,做更多事情,明確學習的目標是至關重要的。
明確方式我們在明確方向之后,然后再來看看學習Python的方式有哪些。
首先,對于 Python基礎部分,比如數據結構、語法、函數等等,如下圖。這些內容是可以通過一些網站、書籍進行自學的,難度很低。如果有其他語言的編程基礎,學起來將更加的容易。即使我們是想通過培訓的方式學習,也建議提前通過自學掌握Python基礎部分內容。
可以通過如下途徑學習Python基礎內容:
文檔教程
廖雪峰的官方網站
https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000
Python 基礎教程 | 菜鳥教程
http://www.runoob.com/python/python-tutorial.html
w3cschool
https://www.w3cschool.cn/position/kqc20f.htmlPython 100例
http://www.runoob.com/python/python-100-examples.html視頻教程
慕課網
https://www.imooc.com/網易云
https://study.163.com/社區
Python中文社區維基
https://python-chinese.github.io/PythonTab——python中文開發者社區
https://www.pythontab.com/
我們在掌握 Python基礎之后,然后根據自己的 Python應用方向,再確定后續的學習方式。
以我個人的理解,對于像 數據挖掘分析、自動化測試、Linux自動化運維、測試這類方向,有了Python基礎,如果又有相關行業經驗,基本上不需要考慮參加其他培訓了,因為此類學習曲線相對單一,整個知識與技能體系相對簡單,技術復雜度和學習成本相對較低,同時上面介紹了網絡上許多免費的教程,足夠幫助我們進行后續的學習。我們需要考慮的更多是如何將所學應用到實際工作當中,給工作效率和質量帶來提升。
除此之外,比如AI人工智能、前端應用開發等方向,需要體系化的知識結構,學習曲線復雜,如果通過自學的方式很難構建完整的知識、能力體系,效果也難以保障,容易事倍功半,偏離方向。因此這類方向建議參與培訓的方式來學習。
最后,如果我們是為了換一個工作方向(轉行)而選擇學習Python編程,雖然我們的主觀動能性能夠促使我們克服很多的困難,但還是建議考慮客觀存在的一些因素,比如所在城市目前相關行業的發展情況以及行業相關人才的用人需求、要求。 關于培訓學習,也需要結合上面所提到的。 在培訓機構選擇時建議多考慮就業問題,如根據自身條件及現狀咨詢相關培訓機構,先了解能夠培訓的技能及是否提供相關企業內推機會,機構該專業的就業率、薪資情況等等。
Pytho編程環境快速搭建兩步,先安裝Python環境,再安裝Python開發IDE,如下:
通過Anaconda安裝PythonAnaconda指的是一個開源的 Python 發行版本,其包含了conda、Python等180多個科學包及其依賴項。
我們從Anaconda 官網下載Anaconda,下載地址如下:
https://www.continuum.io/downloads建議選擇安裝Python 3.7版本,完成下載之后,雙擊啟動安裝程序,安裝過程注意以下幾點注意:
如上,我們選擇“Just Me(recommended)”安裝,若在安裝時選擇了“為所有用戶安裝”,則卸載Anaconda然后重新安裝。如上,安裝路徑中不要包含空格,也不要包含中文(unicode編碼)。
如上,在“Advanced Options”中不要勾選“Add Anaconda to my PATH environment variable.”(添加 Anaconda到我的環境變量)。如果勾選,可能會影響其他程序的使用。
如上,如果使用Anaconda安裝或者更新第三方庫,可以打開Anaconda Navigator或者在開始菜單中的“Anaconda Powershell Prompt”(類似于Windows中的“CMD終端”)中進行操作。
使用集成開發環境Pycharm編寫Python代碼PyCharm是一種Python IDE,帶有一整套可以幫助用戶在使用Python語言開發時提高其效率的工具,比如調試、語法高亮、Project管理、代碼跳轉、智能提示、自動完成、單元測試、版本控制。此外,該IDE提供了一些高級功能,以用于支持Django框架下的專業Web開發。PyCharm 的官網下載地址,如下:
http://www.jetbrains.com/pycharm/download/#section=windows完成下載之后,雙擊啟動安裝程序,安裝過程非常簡單,此處不做說明。
安裝完成后,如果需要運行程序,需要先添加解釋器。
如上,在Settings中設置Python解釋器,我們選擇Python3.exe,點擊Apply,等待系統配置,時間可能比較差,通過左下角可以看到配置進度。
使用Pycharm安裝、更新第三方庫
如上,如果我們需要添加新的模塊,點擊綠色加號,然后直接搜索pymysql,然后點擊“Install Package”進行安裝。
美好的開始,Hello World以下實例是我們使用Python開發的第一個實例,即 輸出"Hello World!" 。