---
# System prepended metadata

title: Python
tags: [ckefgisc23rd]

---

# Python

---

[TOC]

---

## \[1] 簡介

Python 是一種直譯式、物件導向的程式語言，擁有完整函式庫，社群上也有大量的第三方模組，有著易上手、應用廣泛的特性，是一個很適合初學者的語言。

與 Python 3 不相容的 Python 2 已確定不會再推出新版本，所以建議都從 Python 3 開始學，這篇講義也是以 Python 3 為主所編寫的。

---

## \[2] 整合開發環境

### Python IDLE

最簡單的直譯器，雖然功能不多但很方便，可以直接在 shell 輸入指令，可以拿來測試程式之類的。

### Jupyter Notebook

支援很多種直譯語言，很多網站上的討論也是以 Jupyter Notebook 的方式呈現，還有一些很實用的小功能，是很不錯的 IDE。

### Visual Studio
微軟開發的 IDE，功能很多且支援多種語言，用熟練後是個非常強大的工具。

---

## \[3] 輸入輸出

```python=
print(value, sep = "", end = "\n")
```

多個輸出值用逗號隔開。
sep 為輸出值的分隔字元，預設是空白。
end 為輸出結束所插入之字元，預設是換行字元。

```
變數名稱 = input()
```

輸入之資料預設為字串，( ) 內可寫入欲輸出變數。

---

## \[4] 變數

英文、數字、底線、中文組成，大小寫有別，建議使用英文與數字。
不可用系統保留字或內建函數。
不必先宣告，也不必設定資料型態。

---

## \[5] 資料型態轉換

### int(value)、float(value)、str(value)

可以強制轉換資料型態。

### type(value)

列出該變數的資料型態。

### eval(value)

將字串轉為 int 或 float，可以用作運算。

### None

有些人習慣先把變數先予以定義，尚未用到時就可以把變數的值設為 None，此時變數的資料型態為 NoneType。

---

## \[6] 關係運算子


| 大於 | 大於等於 | 小於 | 小於等於 | 等於 | 不等於 |
|:----:|:--------:|:----:|:--------:|:----:|:------:|
|  >   |    >=    |  <   |    <=    |  ==  |   !=   |

---

## \[7] 邏輯運算子

* and
* or
* not

---

## \[8] 條件判斷

if… elif… else，不可以寫 else if。

```python=
a = 5
if a:    #變數 a 存在
    print(a)
```

變數存在回傳 True。

---

## \[9] 字串

字串由字元組成，可以想成字元序列，可以取索引值、長度、切片。


| 逸出字元 | \\' 單引號 | \\'' 雙引號 | \\n換行 | \\\ 反斜線 |
| -------- | --------- | ---------- | ------ | --------- |

### 字串常見用法與函數

![](https://i.imgur.com/fTwQmaf.jpg)

---

## \[10] 格式化輸出

```
print("字串" % (變數區))
```

| 字元 | 字串 | 整數 | 浮點數 |
|:----:|:----:|:----:|:------:|
|  %c  |  %s  |  %d  |   %f   |

![](https://i.imgur.com/wcELNVi.png)

在程式實例中，可以看出這樣無法控制浮點數的輸出。

![](https://i.imgur.com/Do8VVDy.png)

%+5d 中的 5 代表留 5 格，正號表示如果數值資料是正的話會加上正號。
%3.2f 中的 3 代表總共留 3 格，2 代表小數部分留 2 格。
%-5d 中的 5 代表 5 格，負代表靠左對齊。

---

## \[11] format

```
print("字串內容".format(變數區))
```

字串中的變數一律用 { } 表示。

![](https://i.imgur.com/uiGVcGV.png)

0, 1 可不編號，Python 會照順序對應。

![](https://i.imgur.com/6vLrZt1.png)

第一行 > 表示向右對齊，總共留 5 格，小數留 2 格。
第二行 < 表示向左對齊，總共留 6 格，其餘用 x 補滿。

---

## \[12] 串列

串列是一系列元素組成的序列，而且裡面的元素可以是不同的資料型態。
元素放在中括號內，用逗號隔開。
索引值正方向從 0 開始，反方向從 -1 開始。

### 串列常見用法與函數

![](https://i.imgur.com/Fpyz0Rf.jpg)

---

## \[13] 迴圈

### while 迴圈

通常運用在不知道迴圈執行次數的情況。
寫法同其他語言，記得加冒號與縮排。

### for 迴圈

```
for 變數 in 物件:
    程式碼
```

通常運用在知道迴圈執行次數的情況。
物件可以是串列、字串、元組或字典。

```python=
ian = ["b", "a", "r", "o"]
for m in ian:
   print(m) 
```

for 迴圈第一次執行時，m 的內容是 "b"，所以印出 b，接著執行第二次迴圈，這時 m 的內容是 "a"，所以印出 a……就這樣跑到串列最後一個元素。

```
for 變數 in range(start, end, step):
    程式碼
```

for 配合 range( ) 函數，start 預設是 0，step 預設是 +1。

### for… else 迴圈
當 for 迴圈中的所有 if 敘述條件為 False 時會執行 else。

```python=
num = int(input())
if num == 2:
    print("是質數")
else:
    for n in range(2, num):
        if num % n == 0:    #如果整除則跳出迴圈
            print("不是質數")
            break
    else:    #都沒有整除則是質數
        print("是質數")
```

### break continue

跟其他語言一樣。

---

## \[14] 元組 Tuple

元組中的元素值和個數不可修改，除非重新定義該元組。
元素放在小括號內，用逗號隔開。
應用在串列上的用法與函數如果不會更改內容，就可以應用在元組上。

![](https://i.imgur.com/9hratbd.jpg)

---

## \[15] 字典 Dictionary

字典的元素是用鍵（key）對應值（value）的方式配對儲存，鍵與值用冒號分開。
元素放在大括號內，用逗號隔開，元素排列並沒有固定順序。
key 只能是數字、字串、元組，且不可重複，value 可以是任何物件。

### 字典常見用法與函數

![](https://i.imgur.com/18ahnSZ.jpg)

---

## \[16] 函數

自己設計一個函數，可以在主程式中使用，讓程式更精簡。

```
def 函數名稱(參數):
    程式碼
    return 回傳值
```

參數可以有多個，彼此用逗號隔開。
回傳值也可以有多個，彼此用逗號隔開。

```
def 函數名稱(參數, 參數1 = value):
```

參數可以被賦予預設值，有預設值的參數要放在右邊。

```python=
def icecream(icecream, *toppings):
    print(icecream, "冰淇淋的配料有", end = "")
    for topping in toppings:
        print(topping, end = " ")
```

![](https://i.imgur.com/NasUZ50.png)

前面加上 ``*`` 的參數代表可以有多個參數傳入，要放在最右邊。

---

## \[17] 程式異常

捕捉程式異常，執行特殊程序，然後程式可以繼續執行。

```
try:
    程式
except 異常物件:
    程式
```

執行 try 下面程式，如果有異常，檢查是否是指定的異常物件，如果是就執行 except 下面程式。

### 常見的異常物件

![](https://i.imgur.com/bcH5Uzy.jpg)

---
###### tags: `ckefgisc23rd`