?這個編程系列我采用的方法是,照著老師課件一步步跟做,遇到問題就記錄,能搜索解決就搜索解決,搜不到的去提問,盡量找到解答。
簡書專欄里有非常完備的新手上路指南(從下載軟件開始),我就不一步步搬運了。
這里主要是根據我在操作時出錯的地方,從小白的角度做下總結,同時也分享入門路上的體驗,希望能對你有點幫助。
本文分兩部分,第一部分是我自己做的課程知識總結,第二部分是錯誤匯總及心得。
一、上課內容復盤:
Lesson2和Lesson3兩節課總的來說都是基礎介紹。
如果說第一節課是入門、安裝,以及熟悉界面的話,第二節和第三節主要就是最基本的功能介紹,簡單概括為四部分,數據結構、條件語句、循環和函數。
數據結構部分,講了編程時用到的基礎元素都叫什么名字、長什么樣、能干什么。
◆整型int(比如2)
◆浮點型float(比如2.15)
◆復數型(比如1+i,課上沒講,估計使用范圍不太多)
◆布爾bool(True/ False)
◆字符串str(一串字符“hello world“)
◆列表list(比如family=[‘dad’, 1.6, 'mom', 2.0, 1.7, 'dog', 1.5])
? ? 列表用「,」分割,用「:」切片,什么類型都能存,可以增改刪。
◆元組tuple (比如 team=[poppy, 5, honey, 3.1, money])
? ?元組與列表高度相似,相關操作也可使用,但不能增改刪。
◆字典dictionary (一堆一一對應的鍵和值,比如score={'marry':68, 'cuihua':86, 'tom':35})
?「:」前是鍵key,「:」后是值value,鍵指向值,字典無序,可以增改刪。
小結:
1、比較容易搞混的是列表、元組、字典的表現形式,即各種不同括號。好在列表和元組基本長一樣,剩下一個就是不常用的{},專屬于字典。
2、字符串、列表、元組和字典,均可使用[ ]取其一部分,只不過[ ]里的內容略有不同,前三個都是有序排列,因此按照0、1、2、3…的順序進行索引,最后一個字典無序,是用「鍵」進行索引。
(其實這么一總結,感覺要記住的東西也不算很多)
條件語句主要判斷是和非,以及如何讓計算機明白『在什么條件下做什么』。
◆布爾表達式(==? !=? <? >? is? is not)
◆邏輯運算符(and? or? not)
◆條件執行(if? elif? else…根據存在的可能性數量,選取對應的語句數)
循環主要是for和while,包括它們長什么樣、各自怎么用、組合在一起怎么用。
每個循環的開始,都要進行一次判斷,然后再逐個訪問元素,找到『目標』、實現『目的』。
◆for:遍歷任何序列的項目,即,逐個過一遍,誰也跑不掉(使用恰當方法,也是跑得掉的,比如continue)
常用格式
for xxx in XXX:
balabalabala
balabalabala
◆while :什么情況下做什么
常用格式
定義變量
while balabala:
balabalabala
balabalabala
更新變量
(在判斷出False時,循環結束)
◆在for和while中,使用break跳出循環,使用continue跳入下個循環
函數分為兩種,一種是Python的內置函數(自帶的工具包),直接拿來用就能出結果;另一種是自定義函數(自己做的工具包),是把具體問題拆分,再把一堆解決步驟打包到一起。
◆內置函數:type()、 int()、 float()、 str()、 len()、 range()、 max()、 min()…
◆自定義函數:形式是? def函數名(參數,可省略),最后返回/不返回結果均可,
調用時使用 ?函數名(參數)。
二、實操過程中的問題總結:
1、 ?變量名稱最好有意義,方便以后操作,比如用height代表高度,從一開始就應該養成好習慣。
2、調用函數時,用的是名稱.函數名()的方式,名稱在前,函數名在后,不要顛倒順序。
3、 對字符形式還是不夠敏感,比如打印時,應該記得加上’ ‘。
4、while循環里特別容易出問題的點就是,執行完一次循環后,忘記將變量更新(比如+1),結果變成了死循環。
5、死循環時,左邊顯示行數的In[ ],會變成In[*]。有*就是有錯。
6、將造成死循環的錯誤修改之后,要restart一次(kernel/restart),然后在運行一下(shift
+enter)才可以正常通行,restart代表把原來的內存清零,但是不代表運行。
(另,不建議用restate all,不然會從第一條重新運行,然后卡在你為了復習方便特意保留的出錯kernel,于是剩下的部分就要一條條手動run…別問了,我就是知道…)。
7、數字作為判斷條件時,要注意=的影響,以下是個錯誤案例,我在條件里多打了一個=(老師的例子里 number <20),實際上是沒有的。
以下是正確的:
8、在循環中出現的問題,有時候只是因為縮進的位置不對造成的,感覺python對于「對齊」還是有比較深的執念,不同的語句都要跟對等的條件保持對齊。
9、error出現在哪一行,不代表問題就在那一行,只是剛巧運行到它執行不下去了。出了問題多往前翻翻。
計算加班工資的練習,出現以下錯誤
實際上與21行沒關系,錯誤在于,先定義user = str,卻判斷時卻拿它和整型0對比
10、不要打錯字!不要打錯字!不要打錯字!
心得:
基礎知識看似簡單,但是學習過程中發現一個比較明顯的問題:學得越多,越感覺混亂。雖然每次做作業練習時還算順利,但等過后回頭去想,感覺各種知識點好像又都混在了一起。
感覺出現這個問題的主要原因在于,對于概念不夠清晰。
從數據結構開始,雖然從布爾、整型到元組、字典,每個都掌握了,但由于練習過少,對于它們之間的差別(包括()/[]/{},各種命令調取時的方式等等)都不能快速辨別。
一個有用的對策就是,像上面第一部分那樣,把學過的東西歸類和總結,過程中會發現一些共通點和差別,把這些內容重新歸類,就是個內化的過程。
合并同類項的好處是,給大腦減輕點負擔,而且也能夠查缺補漏。
另外分享一個學習課程時使用的方法,老師在講課時提出一個新的概念,在應用它之前,可以先暫停視頻,根據要求自己試著做一下,然后再與老師做的對比。
對于一直沒有在課前進行預習的同學來說,這種回看過程中的『迷你預習』,能讓自己更加投入,也印象更深點,算是對沖沒有課前預習的損失。
推薦閱讀:
歡迎關注微信公眾號,LY加油站。