嗨,大家好,我是心原一馬,
內心原來一心喜歡打程式碼,
久違的又要來發系列教學文啦,
這次的系列文為【python入門教室】,
希望做為【Python 超入門】的延續,
更進階的探索python語法
與【Python 超入門】系列文不同的是,
【Python 超入門】的對象是給完全程式零基礎的讀者看的,
【python入門教室】則是想寫比【Python 超入門】更進階一點的題材,
給有一些程式基礎的人看的,
如果你讀過【Python 超入門】便可繼續閱讀本系列學習
其實自己去年參加鐵人賽寫系列文時,
就是寫Python的語法教學為主題,
但小馬自己事後來看覺得有點篇幅過大,
順序編排可能不夠好,
索性重新編排再重構為【python入門教室】系列文,
希望能寫出更循序漸進的好教學
小馬的教學文歡迎有心想學的讀者互動,
如果對教學有看不懂的地方,
或寫練習題卡關,
都可以在留言區留言,
小馬會一一回覆的
那麼便進入教學吧
開發環境: Anaconda的spyder,python版本3.7
如果懶的安裝的話也可使用「線上程式編譯器- repl.it」,
直接在線上打python程式碼 (目前用repl.it的python版本則是3.8)
教學說明
spyder的右下角有個Ipython視窗(或稱shell視窗),
也就是使用者互動介面,
在上面輸入一行程式,就會跑出一行結果。
譬如在上面打簡單的基礎四則運算做範例:
有時候,一些簡單的程式指令可以直接在使用者互動介面測試,
這時,小馬即會用三個大於符號「>>>」表示你可以直接在使用者互動介面輸入程式,如:
>>> 2+3
5
>>> 6*8
48
>>> '8'+'9'
'89'
基礎知識
【Python 超入門】這篇有為python基礎語法做蠻詳盡的統整,
如果你看一看覺得很簡單那大概需要的基礎知識就沒問題
Q1: Python 如何宣告一個變數?
許多程式語言(如: c/c++)變數必須指出變數的形態,例如int x= 0,
宣告x這個變數時同時告訴程式x是一個「整數」(int)型別
在python中不必告訴程式變數的型態是什麼,
程式將自動判斷類型,
如果寫x = 0,x就是一個「整數」(int),
寫x = 3.1,x就是一個「浮點數」(float),
寫x = [1,2,3],x就是一個「列表」(list)
如果想知道一個變數是什麼型態,
可以用內建函數type()查看
譬如說你打了一行程式x = 3.0,
你不確定它應該是「整數」還是「浮點數」,
輸入type(x)即知道它是float
>>> x = 3.0
>>> type(x)
Q2: Python 有哪些常用的內建變數型態?
python有「整數」(int)、「浮點數」(float)、字串(str)、列表(list,類似其它語言說的陣列),
「布林值」(bool)、「元組」(tuple)、「集合」(set)、「字典」(dict)
在【Python 超入門】已介紹過整數、浮點數、字串、列表、布林值五種型態,
後續會將「元組」(tuple)、「集合」(set)、「字典」(dict)教完
補充那些【Python 超入門】沒講完的語法
由於【Python 超入門】系列文講的非常的淺,
有些較複雜的語法便先行略過,
再這邊把它補上
一、其實python的list可以從後面取元素
python的列表其實就是我們口語習慣說的陣列,
宣告方式中一個中括號把元素包起來:
L = [1,2,3]
陣列的index是從0開始,
譬如說L[0]=1,L[1]=2,L[2]=3。
>>> L[0]
1
>>> L[1]
2
那如果我們今天的需求比較特別,
我們要取得列表的「倒數第一個元素」,
那怎麼辦?
有一個看起來比較不那麼優雅的寫法,
觀察發現,當陣列有n個元素時,
L[n-1]就代表最後一個元素的位置,
內建函數len()可以取得一個列表的長度,
所以L[len(L)-1]即是倒數第一個元素
但有更漂亮的寫法,
python支援你直接寫負數的index,
例如說L[-1]就是L的倒數第一個元素,
L[-2]就是L的倒數第二個元素
二、range有三個參數: range(init, end, step)
在【Python 超入門】時,我們教過這樣的語法:
for i in range(1, 101):
print(i)
結果就會是
1
2
3
…
100
range(a,b)表示從a~b的整數區間, 包含a但不含b
但range亦可寫第三個參數,
意思是數字間隔大小,
譬如說range(1, 10, 3)指的就是「1,4,7」(不包含10)
如果range只有寫一個參數,如range(10),
其實是省略了第一個參數(默認為0),
range(10)與range(0, 10)同義,指的便是在0~9範圍的整數
如果range只有寫一個參數,如range(1, 10),
則是省略了第三個參數(默認為1),
range(1, 10)與range(1, 10,1)是同義的
基礎知識先講到這邊,
來做課後練習吧
課後練習
這邊小馬主要會挑幾題CodeWar上的題目供大家練習,由淺入深
畢竟程式語言是需要練習的,
光看語法教學不知道自己會了沒
使用CodeWar需註冊帳號,但應該不會太難 (不會的可參考這篇教學)
蠻推薦如果你真的是零基礎自學的話可以在這邊找簡單的題目練習,
應該可以找到一些打程式的手感
CodeWar的特色是只需要完成題目指定的函數,
不必自己從頭打使用者的輸入和輸出(也就是不必寫到input()和print()兩個函數)
有些人會不太習慣這種模式,如果你也卡關了,
歡迎留言諮詢
超簡易範例-兩數加法
在CodeWar做題的形式像是這樣:
(不過實際CodeWar網站是英文的,若英文不佳請自行加強)
題目要求: 希望實作一個函數,可以把兩個數字加總,譬如輸入3跟5,你的函數要回傳8
題目原型:
def add(a, b):
# your code here
解答: 函數直接回傳a+b即可
def add(a, b):
return a+b
習題