【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)