iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 2
5
Software Development

活用python- 路遙知碼力,日久練成精系列 第 2

Day2 – 來學習基礎python特性吧

  • 分享至 

  • xImage
  •  

路遙知碼力,日久練成精- 只要在程式之路鑽研的夠深,便能夠充分發揮程式碼的力量; 練習的日子夠久,便能夠練成寫出精簡代碼的能力。

開發環境: Anaconda 下的spyder,python版本3.7

簡介一下自己用的開發環境,
我的作業系統為win10。

安裝anaconda教學如下:
下載的網址點這裡
進到這個網站後,視窗稍微往下拉,會看到
https://ithelp.ithome.com.tw/upload/images/20190603/20117114x8sncFswW1.jpg

請選擇自己電腦的作業系統,例如我自己的電腦是windows,就點一下windows標籤(預設是Mac,記得要點一下windows標籤才會下載到windows版的),然後點左邊python3.7的download,按「執行」,等待它下載完成,會看到以下的安裝視窗:

https://ithelp.ithome.com.tw/upload/images/20190603/20117114CinHj3PgzB.jpg

安裝anaconda真的超簡單,就像你安裝普通程式一樣,一直按下一步就可以了。
安裝好之後,你可以在開始->程式集的地方找到一個叫anaconda的資料夾,大概如下:

https://ithelp.ithome.com.tw/upload/images/20190603/20117114CGfC6IXX1t.jpg

點第一個 Anaconda Navigator,然後你會看到很多工具:

https://ithelp.ithome.com.tw/upload/images/20190603/20117114fYghskChAi.jpg

這些是用來寫程式的開發環境,新手只需要知道jupyter notebook 跟 spyder 這兩個就可以了(像我個人習慣用spyder),在spyder那邊點選Launch。

Why anaconda?

你或許能夠google到多種安裝python的方式,
為何我選用anaconda 做為自己的開發工具呢?
原因不外乎是好裝。
在學習新語言時,很多人可能會因為複雜的安裝程序及環境設定而卻步,
然而anaconda安裝上非常直覺,
你就一直按「下一步」(next)就可以裝好。

甚至說python中常用的模組,
什麼numpy啦,scipy啦,
通通一併幫你安裝好,
真的是非常方便。

Spyder 特點介紹

如果大家有順利安裝anaconda,
可以點選spyder進入開發環境。

https://ithelp.ithome.com.tw/upload/images/20190906/20117114XYviX6kF3y.png

spyder還有很方便的地方,
當你忘記完整函數名稱(或變數名稱)時,你可以按一下鍵盤上的tab鍵,
相關函數就會自動跑出來,
可以大大節省打字時間,範例如下:

https://ithelp.ithome.com.tw/upload/images/20190906/20117114YDwocBwCx2.png

另外,輸入函式後,
spyder還會提醒你函數的規格,
範例如下:

https://ithelp.ithome.com.tw/upload/images/20190906/20117114mIA7NRbKtU.png

spyder的右下角是Ipython視窗(或稱shell視窗),
也就是使用者互動介面,
在上面輸入一行程式,就會跑出一行結果。
這邊以基礎四則運算做範例:

https://ithelp.ithome.com.tw/upload/images/20190906/20117114M4TLAV71HU.png

比較特別的是,
加法符號作用在數字上跟字串上不太一樣,
如果對兩個字串做加法,
則是直接把兩個字串接起來。

python基礎十一問

環境都建好之後,來開始打程式吧。

假設你會的第一種程式語言不是python,
python的語法很可能與你所學的語法有點差異,
以致於一開始用會不太習慣

簡介一下多數程式語言都有的基礎概念,
如何在python中實現呢?

Q1: 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視窗輸入程式的意思,
而非在編輯程式的視窗打程式。
如下圖所示:

https://ithelp.ithome.com.tw/upload/images/20190906/20117114tbP9V8dGPa.png

Q2: Python 如何宣告一個變數?

學c/c++或java的朋友會知道宣告一個變數形式是這樣int x= 0
學js的朋友會知道宣告一個變數是這樣var x= 0
在python中不必告訴程式變數的型態是什麼,
直接寫x=0即可,程式將自動判斷類型。

x = 0

Q3: Python 有哪些常用的變數型態?

最常用的應該屬數字(含float 與 int)、字串(str)、列表(list,類似其它語言說的陣列),
另外還有布林值(bool)、元組(tuple)、集合(set)、字典(dict)這些變數,
後續篇章會更進一步介紹它們的屬性。

Q4: Python 如何宣告一個陣列及取得陣列元素?

python的列表大致上相當於其它程式語言說的陣列,
宣告方式中一個中括號把元素包起來:

L = [1,2,3]

取得陣列元素的方式也很像其它語言,
陣列的index是從0開始,
如此例L[0]=1,L[1]=2,L[2]=3。

>>> L[0]
1

Q5: Python如何表示程式碼區塊?

很多程式語言會用大括號{}把程式碼包起來,
例如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")

Q6: Python 如何做條件判斷?

附上幾個表供大家參考。

比較運算子

比較運算子可以比較兩個數值的大小,得到的結果為一個布林值。
(我們假設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 運算式 結果會與原本運算式的結果相反

Q7: Python 如何跑迴圈?

範例: 各自使用for與while印出數字0,1,2,…,9(每個數字換行顯示)
for 版本:

for i in range(10):
    print(i)

while版本:

i=0
while i<10:
    print(i)
    i += 1

Q8: Python如何讀入或輸出文字?

讀入使用input()函數,輸出使用print()函數。

Q9: Python如何寫註解?

註解是在程式碼中不會被執行的一段文字,
用來輔助說明程式碼的內容。
在python中,用一個井字號#做為單行註解,
用三個雙引號做多行註解將文字包起來。
範例如下:

# 井字號後面可以寫一行的註解
# 程式功能: 在螢幕上顯示'Hello, World!'
"""
我是多行註解,
這段文字不會影響程式執行的結果。
"""
print('Hello, World!')

Q10: Python如何自定義一個函數?

使用def關鍵字,範例定義一個函數,將兩個數字做加總:

def add(a,b):
    return a+b

(後續篇章有更詳細介紹)

Q11: Python有沒有指標?

(不了解指標者可先略過此段)
若你了解指標這個詞,
你很可能學過較深入的c/c++概念,
python並沒有像c/c++使用「*」符號取得變數地址的方法,
但在做陣列複製的時候確實有類似概念藏在裡面,
留著後續再談。


上一篇
Day1- 前言: python簡潔之「路遙知碼力,日久練成精」
下一篇
Day3 - 天啊我只有「螢幕十行」,python簡力救救我啊!
系列文
活用python- 路遙知碼力,日久練成精30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言