為什麼我覺得Python的學習很沒有條理?
我是一個高中學生。對編程很有興趣。最近開始認真學習Python,作為入門的一門語言
我之前對C有一些涉獵,但也僅僅是對語法有一些了解。那些編程的理論也是不知道的。學習Python用的是《Python基礎教程》這本書,內容似乎很簡略,才第7章就講到OOP。我看的時候覺得自己的思路很不條理,而且從看OOP那章開始覺得很困難,對於什麼「魔法方法」就更是不明就裡。學到現在,我也就能那簡單遞歸寫個比較「複雜」的楊輝三角。知乎er們能幫幫我嗎?^_^
麻省理工學院公開課:計算機科學及編程導論個人覺得這是學Python最好的入門教程,先跟著看一遍,比看國內的書好多了。看第二遍的時候結合Learn Python The Hard Way這本書一起看,同時開始編程。先明白編程的目標和原理是最重要的,直接啃無聊的書只會把自己的興趣抹殺掉。以上,希望對你有幫助。
你要是決定將來從事計算機方面的專業工作,我建議你去學scheme,
去讀一讀sicp, the little schemer。
這些才能讓你明白為什麼計算是一門科學,而寫代碼不是。正如建築是一門科學,而砌牆不是。如果只想做一名賺錢的碼農,學什麼都一樣。那麼多公開課隨便挑幾個看一看,比如udacity上大神Peter Norvig的。
然後在去自己做幾個玩具,基本上就入門了。=====
為什麼你覺得沒有條理,因為你對這個領域根本沒有經驗。 就像是手裡只有一個手電筒,卻要讓你探索一大片原始森林,你怎麼可能覺得有條理。 人的認知都是建立在已有經驗的基礎上,你總需要跟自己已有的知識來類比,並且不斷修正,才能擴大自己的認知領域。沒開發過軟體基本上很難理解oop,學習本身就是一個過程,你需要更耐心一點。另外就是不要只見樹木不見樹林,死抱著一本書不放。更好的學習資源還有很多。
另外你不要小看遞歸,the little schemer整本書可以算是就是在教人什麼是遞歸,怎樣遞歸。遞歸可以算的上是整個計算機科學入門時最重要的概念。去了解一下recursive descent parser,你就會領會遞歸的強大和美。
作為一名高中生,要把自己的期望定的更高一點。我建議你可以去搞搞編程競賽,去研究演算法,這些東西能讓你將來不至於停留在碼農的水平上。並且你也能因此遇到一群將來這個領域裡最聰明最有能力的人。
你要知道具體的技術具體的語言都是可能過時的,但是計算機里永恆的精靈與世長存。隨便做點啥吧,成績管理,圖書館借入借出管理,自己的音樂管理之類的,不斷的重構,不斷加新功能,從單機到CS再到BS再到雲端。
我說說我的看法,既然是初學者,那麼就是三點最重要,樂趣或者說成就感,條理性以及結構。
樂趣不用說,自學任何東西最強力的驅動力,但是如何保持驅動力,不同的教材有不同的側重,比如我學python看的《python核心編程》,對於我而言非常合適,後來給幾個人推薦過之後發現效果不好,我回頭仔細看看,通篇嚴謹,初學者從這本書找不到一點樂趣,必然pass。所以這方面,可以參考《可愛的Python》
條理性……就個人而言,看到的書一般如果保持了樂趣很少能兼顧到條理的,所以我個人的建議是,學好一個語言,只看一本書是肯定而且絕對不夠的。所以,這方面,《Python核心編程》我還是很推薦的。
至於結構,就是從大局觀來看了(9神勿怪)。一般來說,書很少,我也還沒到這地步,對於Python而言,PEP是不錯的文獻,然後多看看其他「高貴的語言」比如lisp之類的,這都是慢慢積累的。
除此之外,一本工具字典之類的書也是必要的,比如《Python標準庫示例》
手機作答,排版較差請原諒。
#!!!!!!
更新
最重要的是,找個東西寫!!實踐!!
學習Python是一個很大的範圍,最好找個目標,是要做網站開發,還是想做桌面級別的應用軟體,或者其他的什麼,單學語法當然很沒意思,也不條理,也不是不可以,只是效果可能差一點,也容易忘.
你也許剛入門或者沒入門,基礎淺功底差,有些不知所措都是必經之路,不必著急,只要堅持就行.
我也在看Python基礎教程這本書,最近有其他事就放下了,其實還沒你看的快,但是有些東西大同小異,要急緩得當,詳略適度,建議你先把除項目示例的部分大概過一遍,不要想一次吃透,先理解一些概念,樹立一些觀念,然後在看第二遍,第三遍,深入理解,把書上的代碼多敲一敲,自然也就快得多,這本書最寶貴的就是後面的幾個項目示例,當然也需要其他的一些知識,比如網站開發的知識,資料庫的知識等等,你需要自己拓展,可以看看head first系列的書,入門很好.
在高中就能學習編程說明你很有想法,我高中學過很少的一點pascal上了大學學其他語言都比其他同學快很多,如果將來你在大學能夠進行相關專業的學習,此時的積累也是很寶貴的.
加油.
(五中的同學啊,好吧,估計學習不錯~~)更新: 現在回過頭來看這本書,真的很不錯。高級特性和模塊做到了雨露均沾,至少以後再看到相關的詞時不會發怵。最好每到不會或者不理解的地方,都取stackoverflow上查一下例子博客什麼的,幫助理解。
初學者強答一下:對比入門的headfirst來說,其實簡明教程這本書整!本!都特別晦澀。第九章對我已經到了不能閱讀的地步……需要查找其他的書籍對照理解下。
類=特定數據結構+處理該數據的函數。魔法方法即是對繼承的類(object or str, list)中方法的重寫,包括操作符,常用函數都可以。還有訪問控制和自定義序列的功能。這樣即使看上去相同的函數作用於不同的類上,可以有不同的結果,而不會產生衝突。只要創建一個類,「.」後面就可以看見可以重寫的魔法方法。總之魔法方法是服務於特定數據結構的。一個例子。class Word(str):
"""單詞類,按照單詞長度來定義比較行為"""
def __init__(self,a_add):
str.__init__(self)
self.add=a_add
def __gt__(self, other):
return len(self) &> len(other)
def __lt__(self, other):
return len(self) &< len(other)
def __ge__(self, other):
return len(self) &>= len(other)
def __le__(self, other):
return len(self) &<= len(other)
def __len__(self):
return len(self.add)+1
a=Word("a")
b=Word("b")
&>&>&> a&>=b
True
&>&>&> "a"&>="b"
False
&>&>&> len(a)
2
你看的這是目錄
推薦閱讀:
※非計算機專業的程序員能達到什麼樣的高度?
※想學編程,請問從哪個開始較好:C/C++,Python 還是 Lisp?
※熱愛編程,什麼時候開始學習?
※Python中實現 (a and b or c) in xx 這種邏輯最簡潔的方式是怎樣的?
※關於學習數據結構與演算法的一些疑惑?