---
# System prepended metadata

title: 【Python基礎教學】資料型態函數及方法（上）【part-8】
tags: [Python, 程式語言]

---

【Python基礎教學】資料型態函數及方法（上）【part-8】
===

目錄（Table of Contents）

[TOC]

---

哈囉大家好，很感謝你點進本文章，我是一名高中生，是電腦社社團的社長，由於我並不是 Python 這方面非常精通的專家，所以若文章有些錯誤請見諒，也可向我指正錯誤。另外本文章的用意是作為電腦社社團的教材使用而編寫的。

接下來，讓我們進入正題。

當我們在 part 7 談完迴圈以後，其實大部分的簡易實作題型都能勉強應付了，不過我們現在所缺少的是「演算法」、「Python 內建函數及方法」的認知學習及實際應用，接下來會慢慢教給各位上述所言，首先，讓我們先從資料型態的函數及方法開始。

數字（Number）
---

Number 的資料型態被定義為不可變物件，這意味著如果改變 Number 的數值的話，Python 將會自動分配記憶體空間給新的數值。

Python 支援以下三種不同的數值型態：

* 整數（integer-簡寫為 int）：通常被稱為是整數，可以是正或負整數，**「不含小數點」**。 Python3 整數是沒有限制大小的，可以當作 Long 型態使用，所以 Python3 沒有 Python2 的 Long 型態。布林 (bool) 是整數型態的子型態（所以 bool 也是整數）。

* 浮點數（float）：浮點數由「整數部分」與「小數部分」組成，浮點數也可以使用科學計數法表示（2.5e2 = 2.5 x 102 = 250 -> 這是電腦中使用科學記號的方式）。

* 複數（complex）：複數由「實數部分」和「虛數部分」構成，可以用 a + bj，或者是complex(a,b) 表示，複數的實部 a 和虛部 b 都是浮點數。

我們可以使用電腦中常用的二進位（binary）、八進位（octal）、十六進位（hexadecimal -> 簡稱：hex）來表示整數：

```python=
>>> number = 0xA0F # 十六進位
>>> number
2575

>>> number=0o37 # 八進位
>>> number
31

>>> number = 0b1011 # 二進位
>>> number
11
```

二進位以「0b」作為開頭，後面輸入二進位數字；八進位以「0o（小寫O）」作為開頭，後面輸入八進位數字；十六進位以「0x」開頭，後面輸入十六進位數字。

:::success
這樣整理就懂！

二進位 -> 0b + 二進位數字（0、1），0b 把它想成二進位的英文為 binary，0 是觸發二進位數字的關鍵字。
八進位 -> 0o + 八進位數字（1、2、3、4、5、6、7），0o 八進位的英文是 octal。
十六進位 -> 0x + 十六進位數字（1、2、3、4、5、6、7、8、9、A、B、C、D、E、F），0x 十六進位的英文是 hexadecimal。
:::

### 如何導入模組？
---

很簡單，我們可以使用 import <函式庫> 指令來引入模組，如下所示：

`import math`

這樣便能引入數學相關的模組，就可以使用相關的函數了。

覺得名稱太長？用以下方式可以簡短：

`import math as m`

又或者是你只想要引入幾個方法或函數就好，可這樣做：

```python=
from math import ceil
print(ceil(1.2)) # 2
```

:::danger
必須注意：這樣子引入模組只有引入 ceil() 而已，並沒有引入整個 math 函式庫，所以要呼叫 math.ceil() 不須加上 math.，打上 ceil() 就好。
:::

可以引入多個：

```python=
from math import ceil, floor
print(floor(1.2)) # 1
```

接下來將列出以下幾個較為常用的數學函數：

| Number | 函數 | 描述 |
| -------- | -------- | -------- |
| 1 | abs(x) | 回傳數字的絕對值，如 abs(-1) 回傳 1。 |
| 2 | math.ceil(x) | 回傳無條件進位後的數字，如 math.ceil(4.1) 回傳 5。 |
| 3 | math.floor(x) | 回傳無條件捨取後的數字，如 math.floor(4.9) 回傳 4。 |
| 4 | math.fabs(x) | 回傳數字的絕對值（以浮點數方式回傳），如 math.fabs(-1) 回傳 1.0。 |
| 5 | max(x1, x2, x3, ...) | 回傳所有引數中的最大值，引數可為序列（如列表、元組）。 |
| 6 | min(x1, x2, x3, ...) | 回傳所有引數中的最小值，引數可為序列（如列表、元組）。 |
| 7 | pow(x, y) | x**y 運算後的值。 |
| 8 | sqrt(x) | 回傳數字的平方根（二次方根）。 |

以下是一個範例：

```python=
import math

# 範例數字
num1 = -4.7
num2 = 16
num3 = 5

# 1. abs(x)
absolute_value = abs(num1)
print(f"abs({num1}) = {absolute_value}")

# 2. math.ceil(x)
ceiling_value = math.ceil(num1)
print(f"math.ceil({num1}) = {ceiling_value}")

# 3. math.floor(x)
floor_value = math.floor(num1)
print(f"math.floor({num1}) = {floor_value}")

# 4. math.fabs(x)
fabs_value = math.fabs(num1)
print(f"math.fabs({num1}) = {fabs_value}")

# 5. max(x1, x2, x3, ...)
maximum_value = max(num1, num2, num3)
print(f"max({num1}, {num2}, {num3}) = {maximum_value}")

# 6. min(x1, x2, x3, ...)
minimum_value = min(num1, num2, num3)
print(f"min({num1}, {num2}, {num3}) = {minimum_value}")

# 7. pow(x, y)
power_value = pow(num3, 2)
print(f"pow({num3}, 2) = {power_value}")

# 8. sqrt(x)
sqrt_value = math.sqrt(num2)
print(f"sqrt({num2}) = {sqrt_value}")
```

註：f"math.ceil({num1})" 表示字串格式化，想了解請至下文。

輸出：

```python=
abs(-4.7) = 4.7
math.ceil(-4.7) = -4
math.floor(-4.7) = -5
math.fabs(-4.7) = 4.7
max(-4.7, 16, 5) = 16
min(-4.7, 16, 5) = -4.7
pow(5, 2) = 25
sqrt(16) = 4.0
```

### 隨機數函數（Random Functions）
---

隨機數函數模組的引入：

`import random`

以下是幾個我們在 Python 中較為常用的隨機數函數：

| Number | 函數 | 描述 |
| -------- | -------- | -------- |
| 1 | random.choice(seq) | 從序列的元素中隨機挑選一個元素，例如random.choice(range(10))，從 0 到 9 中隨機挑選一個整數。 |
| 2 | random.randrange ([start,] stop [,step]) | 從指定範圍內，以指定基數遞增的集合中取得一個隨機數，基數預設值為 1 |
| 3 | random.random() | 隨機產生下一個實數，它在 [0,1] 範圍內。注意：產生的內容包含小數。 |
| 4 | random.shuffle(lst) | 將列表的所有元素隨機排序。 |
| 5 | random.randint(start, stop) | 隨機產生整數。 |

以下是一個範例：

```python=
import random

# random.choice(seq)
colors = ['red', 'blue', 'green', 'yellow', 'black']
chosen_color = random.choice(colors)
print(f"隨機挑選的顏色: {chosen_color}")

# random.randrange([start,] stop [,step])
random_number = random.randrange(1, 20, 2)
print(f"從1到19之間(奇數)隨機選擇的數字: {random_number}")

# random.random()
random_float = random.random()
print(f"隨機生成的小數: {random_float}")

# random.shuffle(lst)
cards = ['Ace', 'King', 'Queen', 'Jack', '10']
random.shuffle(cards)
print(f"隨機排序後的撲克牌: {cards}")

# random.randint(start, stop)
random_integer = random.randint(1, 10)
print(f"隨機生成的整數: {random_integer}")
```

輸出（由於隨機性，所以生成的答案不同）：

```python=
隨機挑選的顏色: blue
從1到19之間(奇數)隨機選擇的數字: 19
隨機生成的小數: 0.0009559929219729035
隨機排序後的撲克牌: ['Ace', '10', 'Jack', 'Queen', 'King']
隨機生成的整數: 8
``` 

### 三角函數（Trigonometric Functions）
---

注意：三角函數需要引入 math 模組。

在高中階段我們只會學到 sin、cos、tan，以及弧度、角度的轉換，所以我們只列出以下幾種：

| Number | 函數 | 描述 |
| -------- | -------- | -------- |
| 1 | math.sin(x) | 回傳 x 的正弦值。 |
| 2 | math.cos(x) | 回傳 x 的餘弦值。 |
| 3 | math.tan(x) | 回傳 x 的正切值。|
| 4 | math.degrees(x) | 將弧度轉換成角度，如 degrees(math.pi/2)，回傳 90.0。 |
| 5 | math.radians(x) | 將角度轉換成弧度。 |

註：math.pi 為圓周率。

```python=
import math

# math.sin(x)
angle_radians = math.pi / 6  # 30度的弧度值
sin_value = math.sin(angle_radians)
print(f"sin30: {sin_value}")

# math.cos(x)
cos_value = math.cos(angle_radians)
print(f"cos30: {cos_value}")

# math.tan(x)
tan_value = math.tan(angle_radians)
print(f"tan30: {tan_value}")

# math.degrees(x)
angle_degrees = math.degrees(math.pi / 2)
print(f"π/2 弧度轉角度: {angle_degrees} 度")

# math.radians(x)
angle_in_degrees = 180
angle_in_radians = math.radians(angle_in_degrees)
print(f"180 度轉弧度: {angle_in_radians} 弧度")
```

輸出：

```python=
sin30: 0.49999999999999994
cos30: 0.8660254037844387
tan30: 0.5773502691896257
π/2 弧度轉角度: 90.0 度
180 度轉弧度: 3.141592653589793 弧度
```

字串（String）
---

由於字串在前面章節已經有大致上說明及講解，所以於本章節會簡單帶過。

字串是由兩個雙引號或兩個單引號所組成，引號裡面可存放字元，如下所示：

```python=
"雙引號是字串"

'單引號也是字串'
```

:::danger
***不過要注意的是，單雙引號必須成對，不能寫單引號加雙引號，否則程式會出錯。***
:::

我們可以透過以下方式擷取字串值：

```python=
>>> a = "Hello"
>>> a[0]
'H'

>>> a[0:3]
'Hel'

>>>a[-1]
'o'
```

### 跳脫字元（Escape Character）
---

[跳脫字元](https://zh.wikipedia.org/zh-tw/%E8%BD%AC%E4%B9%89%E5%AD%97%E7%AC%A6)又可稱為逸出字元、轉義字元（大陸說法），而在 Python 中，若要使用跳脫字元，我們會在前面加上一個反斜線「\」。

接下來我們將來認識幾個較為常用的跳脫字元：

「\\」，作用是顯示出「\」，程式碼範例如下所示：

```python=
>>> print("\\")
\
```

「\'」，作用是顯示出一個單引號「'」，程式碼範例如下所示：

```python=
>>> print('\'')
'
```

若要顯示出雙引號，就如單引號的範例一樣，各位可以自己試試看。

「\n」，作用為換行，程式碼範例如下所示：

```python=
>>> print("1\n")
1

>>>
```

可以看到當 1 顯示出來後，便又跳了一行。

補充：這個東西我們在前面講基本資料型態時講過，在字串前面加上一個 r（無論大小寫），都能夠使跳脫字元無效化，就是讓他現出原形，如下所示：

```python=
>>> print(r"\n")
\n
```

### 字串格式化-舊版（String-formating）
---

在 Python 中，字串格式化就如同我們在 C 語言中使用 printf() 一樣的語法，我們可以先看到下面的範例，以下是在 Python 中使用字串格式化的範例：

```python=
print ("我叫 %s 今年 %d 歲!" % ('阿堯', 17))
```

輸出結果：

```python=
我叫 阿堯 今年 17 歲！
```

在 Python 中，我們會使用「%」這個符號來格式化字串，比如說 %s 就是格式化成字串，s 就是 string 的意思。

好，到底什麼是格式化呢？簡單來說就是當我們使用 %s 這個符號時，後面對應的資料（因為 %s 是各式化成「字串」）就會跟 %s 做替換，這個概念有點像是變數的賦值，也就是說 %s = "阿堯"，然後印出的結果就會是 "阿堯" 囉。

那麼接下來以下是字串格式化符號的統整表格：

| 符號 | 敘述 |
| -------- | -------- |
| %c | 格式化成「字元」及「ASCII碼」 |
| %s | 格式化成「字串」 |
| %d | 格式化成「整數」 |
| %u | 格式化成「無號整數」 |
| %o | 格式化成「無號八進位數」 |
| %x | 格式化成「無號十六進位數」 |
| %X | 格式化成「無號十六進位數（大寫）」 |
| %f | 格式化成「浮點數，且可指定小數點位數」 |
| %e | 用科學記號格式化浮點數 |
| %E | 同上 |

以下是一個範例：

```python=
char = 'A'
string = "Hello, World!"
integer = 42
unsigned_integer = 255
octal = 0o123
hexadecimal = 0xABC
float_number = 3.1415926535
scientific = 123456.789

print("字元及ASCII碼: %c" % char)
print("字串: %s" % string)
print("整數: %d" % integer)
print("無號整數: %u" % unsigned_integer)
print("無號八進位數: %o" % octal)
print("無號十六進位數: %x" % hexadecimal)
print("無號十六進位數（大寫）: %X" % hexadecimal)
print("浮點數（預設小數位數）: %f" % float_number)
print("浮點數（指定小數位數）: %.2f" % float_number)
print("科學記號格式化浮點數: %e" % scientific)
print("科學記號格式化浮點數（大寫E）: %E" % scientific)
```

輸出：

```python=
字元及ASCII碼: A
字串: Hello, World!
整數: 42
無號整數: 255
無號八進位數: 123
無號十六進位數: abc
無號十六進位數（大寫）: ABC
浮點數（預設小數位數）: 3.141593
浮點數（指定小數位數）: 3.14
科學記號格式化浮點數: 1.234568e+05
科學記號格式化浮點數（大寫E）: 1.234568E+05
```

上述需要使用「%」來進行格式化的方式，都屬於舊版使用，不過無礙，因為這種格式化方式通用於 Python 2、3。

### 字串格式化-新版（f-string）
---

> f-string 是 Python 3.6 之後版本新增的，稱之為字面量格式化字串，是較新的格式化字串之語法。

> 實字（或稱字面量：literal）用來表達原始碼中一個固定值的表示法（notation），整數、浮點數以及字串等等都是實字。

範例如下圖所示：

`a = 1`

a 是變數，1 是實字。

回到 f-string，f-string 是一種比使用 `%` 符號還要簡單方便的字串格式化用法，那麼到現在我相信各位一定很疑惑到底為什麼需要格式化字串呢？

其實很簡單，若我們想要在字串裡面加入變數，像是這樣：「Your number is : 0」，然後寫個迴圈程式讓他從 0 慢慢疊加到 100，有點像是進度條的概念。若我們沒有格式化這種東西，那麼就很難去實現這個動作了，或者是說幾乎不可能。也因為有格式化的關係，所以讓字串變得更加靈活。

好，話題回來，以下是 f-string 的用法，在字串前面加上一個 f，在用一個大括號 {} 括起來：

```python=
>>> name = 'Handsome Boy'
>>> f'Hello! {name}'  # 替換變數
'Hello Handsome Boy'
```

這種方法其實就不用特別去判斷是 %s 還是 %d，就會自動轉換資料型態了，是不是非常的方便好用呢？

> 在 Python 3.8 的版本中可以使用 = 符號來拼接運算表達式與結果：

```python=
>>> x = 1
>>> print(f'{x+1}')   # Python 3.6
2

>>> x = 1
>>> print(f'{x+1=}')   # Python 3.8
x+1=2
```

:::success
快速整理！
f-string 是 Python 3.6 之後的版本才有，使用方法：在字串前面加上小寫f，字串內部增加大括號 {}，裡面可以放運算式及變數。
:::

### .format()
---

> 「{}」和「format()」是 Python 3 所使用的「新式」格式化，操作方式為「格式化字串.format(資料)」，輸出結果會將資料插入格式化字串的位置，下面的例子，會將 world 和 oxxo 兩個字串，分別插入字串中的兩個 {}。

引用至：[文字與字串 ( 格式化 ) - Python 教學 | STEAM 教育學習網](https://steam.oxxostudio.tw/category/python/basic/format.html)

不過作者本人經過相關的查詢後，發現 .format() 其實早在 python 2.6 就已經有了，所以並不是 Python 3。

```python=
a = 'hello {}, I am {}'
b = a.format('world', 'oxxo')
print(b)   # hello world, I am oxxo
```

範例出處：[文字與字串 ( 格式化 ) - Python 教學 | STEAM 教育學習網](https://steam.oxxostudio.tw/category/python/basic/format.html)

使用 .format 的方式其實就有點像是填空格的感覺，不過 .format() 框框裡面的東西並不一定只要填入字串這個資料型態，例如填入 Number、list、tuple 等也是可以的，印出來的結果也如我們預期。

另外在 a 變數這邊，裡面的字串值中的 {} 裡面可以填入數字，用來代表填入資料的「順序」，跟序列（列表、元組那些）一樣，索引（index）預設從 0 開始。

以下是一個範例：

```python=
a = 'hello {1}, I am {0}'
b = a.format('world', 'oxxo')
print(b)   # hello oxxo, I am world (world 和 oxxo 互換了)
```

> {} 裡可以填入具名引數（Named Arguments），如果將上面程式裡的 {} 加入名稱，就會放入指定名稱的內容。

```python=
a = 'hello {m}, I am {n}'
b = a.format(m='world', n='oxxo')
print(b)   # hello world, I am oxxo
```

可以從上述程式碼中看到：在變數 a 裡面字串中的 {} 裡面分別填入 m、n，之後在第二行的 b 變數之字串裡面輸入 m、n 對應的內容。這個概念其實就跟我們之前學的函數中，關鍵字參數是非常類似的，只不過這種用法被移到 .format 的用法上而已。

忘記什麼是關鍵字參數的同學，[傳送門點我](https://luketsengtw.wordpress.com/2024/03/09/python-%e5%9f%ba%e7%a4%8e%e6%95%99%e5%ad%b8-matchcase-%e5%87%bd%e6%95%b8-%e5%ad%97%e5%85%b8%e3%80%90part-6%e3%80%91/)。

:::success
快速整理！
.format() 可想像成是新式 f-string 的變化版，以下表格整理相異處。

| 屬性 | `f-string` | `.format()` |
| -------- | -------- | -------- |
| Python 版本 | Python 3.6 及以上 | Python 2.7 及以上 |
| 語法 | `f"Hello, {name}!"` | `"Hello, {}!".format(name)` |
| 可讀性 | 直觀、可讀性較佳 | 可讀性較差，尤其是有多個變數時 |
| 效能 | 通常較 `.format()` 快 | 相對較慢 |
| 巢狀結構 | 不支援 | 支援（巢狀：`"Hello, {}!".format("{}".format(name.upper()))`） |
| 擴充性 | 不能處理較複雜的字串 | 比起 `f-string` 可處理比較多事情 |
| 便利性 | 較方便 | 較為複雜，適合使用在複雜的字串處理 |
| 難易度 | 易上手 | 較難，但是可以控制較多字串處理 |

:::

### 進階 .format()
---

> {} 裡可以填入字典的引數，如果將上面程式裡的 {} 加入對應的引數，就會放入指定的字典內容。

```python=
a = 'hello {0[x][m]}, I am {0[y][m]}'
b = {'x': {'m':'world', 'n':'oxxo'}, 'y':{'m':'QQ', 'n':'YY'}}
c = a.format(b)
print(c)    # hello world, I am QQ
```

看完以上範例的代碼後，不要慌張，接下來讓我替你解釋一下：

首先第一行，依舊是 .format 的那個標準格式，只是各位比較不清楚的是，為什麼要在 `[x][m]` 前面放一個 0 呢？而這個 0 其實是 .format 方法中引數列表的索引，簡單來說他所指的就是第一個引數，也就是 b。

所以 `{0[x][m]}` 的意思是：

1. 從 .format() 方法中的第一個引數 b 開始。
2. 在 b 引數中找到鍵 x 對應的字典。
3. 從字典中找到鍵 m 相對應的值，也就是 'world'。

接下來的 `{0[y][m]}` 依此類推，步驟都是一樣的。

> 新式的格式化字串和 % 定義略有不同，可以加入其他數值，來指定最小寬度、最大字元、對齊與精確度：

| 格式化數值 | 說明 |
| -------- | -------- |
| : | 開始需要加上冒號 |
| 不加東西、> | 靠右對齊 |
| < | 靠左對齊 |
| ^ | 置中對齊 |
| 填補字元 | 將不足最小寬度的空白，填滿指定字元 |
| 數字.數字 | 最小寬度.最大字元數，如果後方是 f (%f)，第二個數字表示小數點位數 |

> 資料的型態也由 % 改為「:」表示。

| 格式化字串 | 轉換型態 |
| -------- | -------- |
| :s | 字串 |
| :d | 十進制整數 |
| :x | 十六進制整數 |
| :o | 八進制整數 |
| :b | 二進制整數 |
| :f | 十進制浮點數 |
| :e | 指數浮點數 |
| :g | 十進制或指數浮點數 |

```python=
a = 'hello {}, I am {}'.format('world','oxxo')
b = 'hello {:10s}, I am {:10s}'.format('world','oxxo')
c = 'hello {:>10s}, I am {:>10s}'.format('world','oxxo')
d = 'hello {:-^10s}, I am {:+^10s}'.format('world','oxxo')
e = 'hello {:-^10.3s}, I am {:-^10s}'.format('world','oxxo')
f = 'hello {:-^10.3s}, I am {:^10.3f}'.format('world',123.456789)

print(a)  # hello world, I am oxxo
print(b)  # hello world     , I am oxxo
print(c)  # hello      world, I am       oxxo
print(d)  # hello --world---, I am +++oxxo+++
print(e)  # hello ---wor----, I am ---oxxo---
print(f)  # hello ---wor----, I am  123.457
```

以上圖表範例來自：[文字與字串 ( 格式化 ) - Python 教學 | STEAM 教育學習網](https://steam.oxxostudio.tw/category/python/basic/format.html)

### .format() 範例解析
---

a 變數的部分我們就不再贅述了，相信各位比較有問題的地方應該是 b 變數的地方：

裡面為什麼要放一個 10 呢？這個 10 又代表著什麼意思？

10 其實是代表字串的字元寬度，在當我們使用 .format() 時，可以在格式化字串中指定字元寬度，而{:10s} 中，表示將字串的寬度設為 10 ，如果字串不足 10 個字元，則會用空格填補。

我們可以從輸出結果中看到："world     , I am oxxo" 在 world 的部分，已經占掉了 5 個字元，而剩下的五個字元就再加上五個空格，等同於我們按五次空白鍵，去補充那剩下的 5 個字元。

接下來讓我們看 c 變數，使用了 > 符號，並且放在 10 前面，這代表說讓字串向右靠齊。可以從輸出結果中看到，world 的起始位置並不是在 hello + 空格開始，而是在最右邊、我們將字元寬度填滿的位置。

看到 d 變數，多了一個 ^ 符號，表示讓字串置中對齊，另外 ^ 符號的左邊還多加了 - 符號，代表除了字串 world 填滿的字元寬度之位置以外的空格，用 - 符號來代替。

簡單來說，多了一個 - 符號就是讓空格代替成 - 符號而已。

而變數 e 的部分，則是變動了 {:10.3} ，多了 0.3 出來，這代表只取引數中的字串 「3」 個字元，所以可以看到下面輸出結果只顯示 wor，便結束了。

變數 f 的後面，我們可以發現範例中將 s 換成 f，表示格式化成浮點數，同樣地，多了 0.3 表示只顯示小數點後三位，並且四捨五入。

那這個範例差不多就是這樣，至於大家想用什麼格式化的方式，取決於各位，我個人偏好使用 f-string，因為整體上看來還是這個方法較為便利，且不用特別去注意 %s、%f 什麼的。

### 字串常用方法（Methods）
---

| Number |   方法及描述   |
|------|--------------|
| 1      | **capitalize()**：將字串的第一個字元轉換為大寫 |
| 2      | **islower()**：如果字串中所有字元都是小寫，則回傳 True，否則回傳 False |
| 3      | **isupper()**：如果字串中所有字元都是大寫，則回傳 True，否則回傳 False |
| 4      | **isnumeric()**：如果字串中只包含數字字元，則回傳 True，否則回傳 False |
| 5      | **isspace()**：如果字串中只包含空白，則回傳 True，否則回傳 False |
| 6      | **join(seq)**：以指定字串作為分隔符，將 seq 中所有的元素（元素要是字串）合併為一個新的字串 |
| 7      | **len(str)**：回傳字串長度 |
| 8      | **lower()**：轉換字串中所有大寫字元為小寫 |
| 9      | **max(str)**：回傳字串 str 中最大的字母（ASCII碼） |
| 10      | **min(str)**：回傳字串 str 中最小的字母（ASCII碼） |
| 11      | **upper()**：轉換字串中所有小寫字元為大寫 |

總結
---

### 模組（Module）
---

兩種引入模組的方式：

`import <函式庫 or 模組名稱>`

or

`from <函式庫 or 模組名稱> import <物件>`

嫌模組名稱太長，可用 `as` 將模組名稱改名：

`import math as m`

以下是今日所學的相關模組：`import math`、`import random`

### 字串格式化（string-formating）
---

在 python 中共有三種字串格式化的方式：

* 百分比符號 `%`
* .format()
* f-string

用 `%` 是最原始的格式化方式，各方面的功能較其他兩種差。

f-string 為最新的格式化方式，主打快速方便使用的格式化方法。

.format() 介於 `%` 與 f-string 之間，最大特點是相容性極好，可同時有 `%` 跟 f-string 的性質，運算及操作起來會較為複雜一些，但優點是功能極多，適合用於處理複雜的字串。

好那本篇教學就到此為止～感謝您的觀看，以下是一些參考資料：

參考資料
===

[Python 3 數字(Number) | 菜鳥教程](https://www.runoob.com/python3/python3-number.html)

[Python 3 字串 | 菜鳥教程](https://www.runoob.com/python3/python3-string.html)

[文字與字串 ( 格式化 ) - Python 教學 | STEAM 教育學習網](https://steam.oxxostudio.tw/category/python/basic/format.html)

[菜鳥工程師 肉豬: 程式 什麼是實字 what is literal](https://matthung0807.blogspot.com/2021/05/what-is-literal-in-programming.html)

