學 Python 多長時間,才能 「做點東西」 ?

我知道這個問法非常「虛」,所以趕快來補充背景信息。

本人情況:

文科狗+上班狗。

即,無任何數學、理工基礎;能用的時間是晚上、周末。

本人智力尚可,所讀大學在魔都文科中算好的。

在此前提下,學python多久,才能做點「實」的東西出來?

什麼叫「實」的東西?我來舉幾個例子:

比較小的:編一些在自己電腦上運行、解決生活中小問題的小程序,例如鬧鐘程序、秒錶程序、一堆東西里隨機抽一個的程序、記賬算賬程序。

比較大的:獨自或幾個人造一個小遊戲出來,複雜度類似於「拍翅膀小鳥」這類。

很大的:覺得某些軟體(例如Adobe家族)甚至操作系統本身有用著不爽的地方,自己修改之。

很大的:真的到社會上的企業里上班,做網站後台、網站架構、資料庫、大數據運算,等等等等,上不封頂。

我聽一個人說過,他也是毫無基礎,比較鬆散地學Java三年,現在靠Java吃飯。

我想知道的答案,越具體、細節越多、越接地氣越好,例如:

你原來是什麼基礎?是本來就是程序猿?還是至少是理工狗?或者像我一樣是文科狗?

你學python多長時間?6個月?一年?三年?

在此期間,是別的啥事都不幹、只學python?還是課餘/業餘、周末學?或是更鬆散?

目前到什麼程度?編出什麼成品程序了?或在什麼公司里上班?具體幹什麼活?干這個活市面上月薪值多少錢?


我覺得噴功利心強,應該馬上動手的過於主觀了。

問題出在這裡:對於有整套軟體工程知識體系的人來說,從學習Python到做個小工具是5分鐘的事情,所以我們習慣認為應該立即動手。但是對於一個文科生,題主所說的其實不只是學習Python,而是學習Python+基礎軟體開發知識。

具體我等題主回答我評論里的問題再答

------------------------------------------------------------------------------------------------

先回答題主問題,就是到各個程度需要的時間,以下時間標準是每天兩個小時的時間計算。具體時間是我假設自己零基礎的情況下估計出來的。同時也是我建議的一個學習順序。

1 配置開發環境+從總體上了解語言特性(通過書籍或網上的資料,這時會有很多不懂得,先無視掉)+第一個HelloWord能正常運行。這部分一天時間(兩個小時)

2 然後逐個研究基礎語法,嘗試運行書里的例子。這裡的比如函數,比如循環,比如基礎數據類型,比如字元串處理,數組分片。這部分要一周。(其實對新手可能不夠,但是這部分不對應實際任務可能知其然不知其所以然,所以可以先淺薄點的學習,以後實際遇到再加強)

3 嘗試一些API,就是題主所說的定時提示聲音的小工具的例子,這裡由於沒有系統的學習過,題主會需要通過Google來獲取知識。多找一些網上的例子學習一下。與此同時,會需要了解一些技術的網站或圈子,以便於獲取知識。這個過程中也會熟練基礎語法。這部分要1-3個月

4 閱讀一些類似《計算機組成原理》,《Python核心編程》之類的稍進階的書籍,來保證自己學習的系統性。對數據結構和演算法有一點基礎的了解。當有一個想法時,能想清楚實現的邏輯和需要查閱那些資料。這時你已經對編程有所了解了。這個階段你應該能實現你所說的簡單的遊戲的邏輯(不包括繪製界面),比如24點,掃雷,貪食蛇,俄羅斯方塊之類的。這時你已經具有學習圖形界面編程(GUI)的能力了。這部分需要3個月。

5 學習GUI編程,能繪製簡單界面。同時去熟練3,4的內容。這時你應該能獨立完成4中的那些小遊戲了。3個月。

至此,如果夠勤奮的話,不到一年,你的目的已經達到了,以後你可以多看看一些小demo和開源的小遊戲,逐步提高自己,甚至能實現自己設計的一些遊戲的idea。也可以去了解其他語言和平台(只要學會了編程的思想,再學其他語言很容易),做個Android上的小遊戲什麼的。

至於你說的這個:

很大的:覺得某些軟體(例如Adobe家族)甚至操作系統本身有用著不爽的地方,自己修改之。

很大的:真的到社會上的企業里上班,做網站後台、網站架構、資料庫、大數據運算,等等等等,上不封頂。

這個非科班出身,想利用業餘時間來做到這個程度,基本不可能的。需要大量的知識體系和經驗,以及長期訓練出來的邏輯思維能力,工程能力,debug能力。想做,就要用大量時間學習+在工作中實踐。

我聽一個人說過,他也是毫無基礎,比較鬆散地學Java三年,現在靠Java吃飯。

人家全日制的學習好吧!人家在工作中得到練習好吧!


小東西你除了會python語法之外還得學GUI開發,做遊戲可能得去學pygame.

還有不需要任何庫或者其他技術的小工具,比如說寫個重複文件查找腳本,只需要遍歷某個文件夾,然後計算md5值,最後比較一下就完事了,簡單好用,如果你電腦里亂七八糟的東西很多,想排重就可以寫這麼東西

或者你可以寫點東西自動生成文件,我以前寫過一個程序幫我生成excel文件,幫我省去了不少重複勞動。

或者寫個簡單的網頁爬蟲,只需要requests,基本http協議及html知識就可以了,我以前用來下載小說。

做網站什麼的比修改adobe,操作系統容易多了,web開發基本要求你會資料庫+html+css+js+web 框架,不推薦django,webpy,flask,bottle容易學多了。

至於學多久,不知道啊。先把python學會再說吧 雖然那個文科答主推薦了py3,我覺得還是學py2的好,為啥呢?py3還有好多庫不兼容。。。

我學python比較曲折,07年就接觸,但沒正式學,12年才正式用它作為工作語言。不過我覺得只是入門的話,看《dive into python》,時間足夠的話一個月就夠了(假設你沒編程基礎),不會就問人吧。


幾個小時。


我也是文科出身, 也不是什麼211 212 985 986之類的學校, 而且可能比你還要"文科" 因為我就是學中文的 :)

我的數學, 可以實話告訴你 高中時150的卷子, 我每次都在70-90分之間徘徊,

我現在做前端, 所以是在工作,

我有php基礎,

然後我的第一個問題是, python2 還是 python3, 我沒有遲疑地就選了 python3, 如果從全新開始, 還是python3吧, 3 &> 2(我的想法其實很簡單) :D

我自我承認的學習python正式時間是兩個星期, 主要課程是用的教材 Y.Daniel Liang教授所著的"Python語言程序設計"原版, (記得當時學php還是在學校, 我用了一個星期正式看一本教材,從圖書館借的), 說實話, 我還是建議你看教材, 雖然比較迂腐和過時(比如這本書, 好多地方在講 如何實現圖形界面, 但是對我來說, 完全沒用到過, 也沒興趣用它來寫 GUI 程序(推薦用 node-webkit, 簡單快速實用), 但是人們發明教材, 總是有它的道理的, 所以我學任何東西, 我都會嘗試去找該方面的教材.

當然, 其餘時間去書店看書, 上網看python教程等時間均要算在總的時間裡面, 這些時間大概已經持續了有4, 5個月左右吧, 因為我不是後端, 所以不是每天學(但我很留心,只要有機會接觸到,我就會好奇和耐心的去看一看),

期間我學習寫了一些python腳本, 比如最常用的數據抓取功能

然後我開始看 pyramid 框架 和 sqlalchemy 教程(不是 django 因為一來我不太喜歡django的緊耦合設計, 二來bottle, flask, web.py 等等要麼就是太"輕量"了, 啥都沒有, 要麼就是不支持python3),

了解了 python 網站部署的 wsgi 方式並學習了 uwsgi 部署python web項目的方法, 期間遇到了各種挫折,

邊做邊看, 最近逐步把我的博客從php 遷移到了python, 還沒完,但是總算是有一點頭緒了, 期間遇到的各種 502 錯誤差點擊垮了我, 但我最終扛住了 :)

算是基本知道了很多初學python的人都很好奇的一個問題: "用python怎麼做網站"的問題了, 不知道這算不算是你所說的 "做點東西", 但是對於我這個不拿python 吃飯的人來說(也說不定未來會不會), 我覺得我自己算是能 "做點東西"了,

順便說句我們公司現在用django, 雖然我不是太喜歡django, 但是也別無他法, 只能慢慢適應了, 畢竟python不比php, 能用的web框架就那麼幾個, django是事實上的老大 :)

祝你成功, 哥們, 關鍵是要有 興趣 + 恆心 :)


鬧鐘程序、秒錶程序、一堆東西里隨機抽一個的程序、記賬算賬程序

這些學十分鐘就可以開始寫了。


寫數千行的小程序只需要點小聰明就可以了,超過5000行的程序就需要懂很多計算機基礎知識才可以寫出來,寫超過50000行程序基本上就需要有體系化的計算機科班知識才可以(可以自學,但必須學全)。

一般來說,一個商業項目里的代碼量大致是數十萬到數百萬行(這裡是指c語言,主要是手工編寫)的區間。

計算機編程語言是很簡單的,需要下功夫的是計算機基礎知識。一般來說,工作5年後的碼農接觸到一個新的編程語言,大致花費2周時間就應該能輸出生產力。


樓主這也太功利了吧,天花亂墜說了許多,想起李笑來老師在《把時間當作朋友》一書中所提到的一種病,叫「時間恐慌症」,這種癥狀的人「既勤奮又懶惰」,這種怪異現象來自於他們對「時間壓力」感受,所以終日尋找捷徑。

其實想學一個東西就馬上開始學最好了,本人去年就打算學python,但是一直拖延著,直到今年四月份才開始真正學,上班族,也是業餘時間學,根本沒有花多少時間,不過本人是java程序員,你是文科生,可能需要時間長一些,推薦一下幾個學習資源吧

Python快速教程

Python教程 - 廖雪峰的官方網站

看書的吧,《python核心編程》《python基礎教程》,這兩本書只需認真看一本就行,看完后座一些小程序寫一些腳本應該是沒問題了


單說python的話就1天。

第一天看python語法。

第二天配django框架環境。

第三天看django語法。

第四、五天看系統源碼、資料庫結構等。

下周就開始code了,剛到某度實習的時候就是這樣的。

基礎:理工狗。


如果你不做伺服器相關

那麼可以嘗試pyqt或者pyside

做幾個桌面的ui找人炫

找成就感讓自己堅持下去


小工具的話應當都難不到哪去,跟你一樣,文科加上班,只有晚上有時間,python不是很了解,說說我學OC吧。

我是看了今年的蘋果開發者大會視頻,看到swift的介紹,當時覺得不是很難嘛,動了寫點自己手機上用,工作上需要的小工具的想法。實際一搜,當時swift幾乎沒資料…只好學OC,學的時候感覺OC和C#比好怪異,磕磕絆絆看了一星期,基本把語法搞定。再花兩天熟悉和安裝xcode(別噴我,真心覺得除了外觀,VS比xcode各種好用…)

之後寫代碼,把在PC上用C#寫過的一個小工具用OC重寫一遍大概花了兩三天,然後appstone審核一星期,運氣不錯,一次過。根據身邊同事的反饋,挺不錯,哈哈。

所以,如果只是做點實用小工具的話,應當是很快的。


1.編程語言本身是很簡單的一個方面,主要的困難是編程思想。

拿樓主說的小程序來說:

鬧鐘、秒錶、記賬程序,本身用任何語言都能完成。重要的是建立解決這些問題的編程模型。

這些能力是在你解決這些小問題過程中逐漸積累的。把解決小問題的能力逐漸積累拼湊起來,就可以解決更大的問題。

如果用蓋房子來對比,開始的時候只是大概知道你要的蓋的是個房子,需要四面牆,需要留2窗戶一扇門。按照既定目標,把磚頭堆上去就好了。

更大的目標好比高樓大廈。開始你只是在蓋豬圈,要求很低。當你想蓋一個精美的3層別墅的時候,可能更多的需要考慮的是實用性問題,布局要合理,要防震,不能漏雨,如果可以,更希望它美觀,裝修是非常重要的問題等等(python在UI方面能力並不突出)。

再大的問題,可能就是蓋摩天大樓,這個時候整體構架遠比如何把磚頭擺上去重要。構架決定了系統的穩健性,可用性,維護難度,擴展性等等。這個時候需要的是建築師而不是搬磚的。

至於靠這行混飯吃,從民工到建築師有很大到差別,看能力能走多遠,搬磚容易,會造高樓大廈難。


3min.

琳現學現賣教徒弟用的Python。

儘管我有6年C/C++基礎。

(其實之前在Nokia 6670上玩過Py)


我覺得Python這種語言只要有點基本邏輯的人都能學的上手吧。

人生苦短,我用Python


10000小時定律,想要做點東西保障3000小時夠了。


一周


半個小時左右吧。


某易讓一周學會,第二周做東西要用。


你說的是寫hello word 嗎


最簡單的十幾分鐘吧,有點意義的可能幾天或者幾周


非常感謝兩位的回答!

我之所以會問這個問題是因為,我自學了兩個月後,由於是上班狗,工作突然繁重了,覺得沒有餘力在這上面耗了,所以赫然想到,如果「能做點東西」需要的時間要以年計算,那我還是耗不起,之前的兩個月算「沉沒成本」還承受得起,反之,如果「能做點東西」以月計算就行,那我還是拼一下吧!


曾經給一個零基礎攝影狗推薦了 Codecademy,一周後他就寫了個小工具,根據 exif 批量改照片文件名。

(Codecademy 上的 Python 課程是 13 個小時,他花了一周算是慢的了)。

鑒於題主已經伸手到了如此地步,我覺得可能花的時間也許會比我那朋友稍微長點,2、3 年應該可以吧,反正您也不急。


推薦閱讀:

如何自學電路知識?
數學不好的妹子通過自學可以把編程學好嗎?
成為數學家需要牛人帶領嗎?
21歲怎麼從零開始學畫畫?

TAG:程序員 | Python | 編程 | 信息技術IT | 自學 |