路遙知碼力,日久練成精- 只要在程式之路鑽研的夠深,便能夠充分發揮程式碼的力量; 練習的日子夠久,便能夠練成寫出精簡代碼的能力。
簡介一下自己用的開發環境,
我的作業系統為win10。
安裝anaconda教學如下:
下載的網址點這裡。
進到這個網站後,視窗稍微往下拉,會看到
請選擇自己電腦的作業系統,例如我自己的電腦是windows,就點一下windows標籤(預設是Mac,記得要點一下windows標籤才會下載到windows版的),然後點左邊python3.7的download,按「執行」,等待它下載完成,會看到以下的安裝視窗:
安裝anaconda真的超簡單,就像你安裝普通程式一樣,一直按下一步就可以了。
安裝好之後,你可以在開始->程式集的地方找到一個叫anaconda的資料夾,大概如下:
點第一個 Anaconda Navigator,然後你會看到很多工具:
這些是用來寫程式的開發環境,新手只需要知道jupyter notebook 跟 spyder 這兩個就可以了(像我個人習慣用spyder),在spyder那邊點選Launch。
你或許能夠google到多種安裝python的方式,
為何我選用anaconda 做為自己的開發工具呢?
原因不外乎是好裝。
在學習新語言時,很多人可能會因為複雜的安裝程序及環境設定而卻步,
然而anaconda安裝上非常直覺,
你就一直按「下一步」(next)就可以裝好。
甚至說python中常用的模組,
什麼numpy啦,scipy啦,
通通一併幫你安裝好,
真的是非常方便。
如果大家有順利安裝anaconda,
可以點選spyder進入開發環境。
spyder還有很方便的地方,
當你忘記完整函數名稱(或變數名稱)時,你可以按一下鍵盤上的tab鍵,
相關函數就會自動跑出來,
可以大大節省打字時間,範例如下:
另外,輸入函式後,
spyder還會提醒你函數的規格,
範例如下:
spyder的右下角是Ipython視窗(或稱shell視窗),
也就是使用者互動介面,
在上面輸入一行程式,就會跑出一行結果。
這邊以基礎四則運算做範例:
比較特別的是,
加法符號作用在數字上跟字串上不太一樣,
如果對兩個字串做加法,
則是直接把兩個字串接起來。
環境都建好之後,來開始打程式吧。
假設你會的第一種程式語言不是python,
python的語法很可能與你所學的語法有點差異,
以致於一開始用會不太習慣
簡介一下多數程式語言都有的基礎概念,
如何在python中實現呢?
給你下表做為參考:
運算子 | 說明 | 運算 | 結果 |
---|---|---|---|
+ | 把兩個數相加 | 8+9 | 17 |
- | 把兩個數相減 | 8-9 | -1 |
* | 把兩個數相乘 | 8*9 | 72 |
/ | 把兩個數相除 | 8/10 | 0.8 |
// | 整數除法取商數 | 40//6 | 6 |
% | 整數除法取餘數 | 40%6 | 4 |
** | 次方運算 | 2**5 | 32 |
python比較特別的是可以做次方運算,
請注意,程式語言次方符號不是「^」(雖然數學上是用這個符號),
「^」在程式裡是「xor」的意思。
另外,要注意的是python以「/」和「//」,
區分浮點數的除法與整數的除法。
如果你是從C/C++過來學python的讀者要注意囉,
c/c++和python對負數除法的結果不一樣,
舉例說明如下:
假設做 -10 除法 3的整除除法,
在python的商數為 -4,餘數為2;
在C語言的商數為 -3,餘數為-1。
(在python裡看做是 -10 = 3*(-4) +2,
在C語言則看做是 -10 = 3*(-3) + (-1)。)
我們實際用程式碼測試結果:
>>> -10//3
-4
>>> -10%3
2
初學者可能會疑惑三個大於符號「>>>」是什麼東西,
其實就是直接在shell視窗輸入程式的意思,
而非在編輯程式的視窗打程式。
如下圖所示:
學c/c++或java的朋友會知道宣告一個變數形式是這樣int x= 0
,
學js的朋友會知道宣告一個變數是這樣var x= 0
在python中不必告訴程式變數的型態是什麼,
直接寫x=0
即可,程式將自動判斷類型。
x = 0
最常用的應該屬數字(含float 與 int)、字串(str)、列表(list,類似其它語言說的陣列),
另外還有布林值(bool)、元組(tuple)、集合(set)、字典(dict)這些變數,
後續篇章會更進一步介紹它們的屬性。
python的列表大致上相當於其它程式語言說的陣列,
宣告方式中一個中括號把元素包起來:
L = [1,2,3]
取得陣列元素的方式也很像其它語言,
陣列的index是從0開始,
如此例L[0]=1,L[1]=2,L[2]=3。
>>> L[0]
1
很多程式語言會用大括號{}把程式碼包起來,
例如C++的if:
if (x>0){
cout << "這是在if語句裡的區塊" << endl;
cout << "x的值大於0" << endl;
}
若你看不懂cout
沒關係,
這邊是告訴你若變數x
大於0,
將會執行{}包住的這兩行程式碼。
在python裡不必寫大括號,
只需要在if語句內空四格(稱為縮排),
區分程式碼內外。
範例如下:
if x>0:
print("這是在if語句裡的區塊")
print("x的值大於0")
附上幾個表供大家參考。
比較運算子可以比較兩個數值的大小,得到的結果為一個布林值。
(我們假設apple=2,banana = 3)
運算子 | 說明 | 比較運算 | 結果 |
---|---|---|---|
== | 等於 | apple == banana | False |
!= | 不等於 | apple != banana | True |
< | 小於 | apple < banana | True |
> | 大於 | apple > banana | False |
<= | 小於或等於 | apple <= banana | True |
>= | 大於或等於 | apple >= banana | False |
邏輯運算子針對運算式的True,False做邏輯判斷,
例如 and、or、not都是(相當於口語的「且」、「或」、「不」),
運算子 | 用法 | 說明 |
---|---|---|
and | 運算式1 and 運算式2 | 只有兩個運算式都是True時才是True |
or | 運算式1 or 運算式2 | 只要任一個運算式是True就是True |
not | not 運算式 | 結果會與原本運算式的結果相反 |
範例: 各自使用for與while印出數字0,1,2,…,9(每個數字換行顯示)
for 版本:
for i in range(10):
print(i)
while版本:
i=0
while i<10:
print(i)
i += 1
讀入使用input()
函數,輸出使用print()
函數。
註解是在程式碼中不會被執行的一段文字,
用來輔助說明程式碼的內容。
在python中,用一個井字號#做為單行註解,
用三個雙引號做多行註解將文字包起來。
範例如下:
# 井字號後面可以寫一行的註解
# 程式功能: 在螢幕上顯示'Hello, World!'
"""
我是多行註解,
這段文字不會影響程式執行的結果。
"""
print('Hello, World!')
使用def關鍵字,範例定義一個函數,將兩個數字做加總:
def add(a,b):
return a+b
(後續篇章有更詳細介紹)
(不了解指標者可先略過此段)
若你了解指標這個詞,
你很可能學過較深入的c/c++概念,
python並沒有像c/c++使用「*」符號取得變數地址的方法,
但在做陣列複製的時候確實有類似概念藏在裡面,
留著後續再談。