Python 入門 2

許君愷
資工系二年級
- GDG on Campus NTPU 核心幹部 技術組成員
- 『北大法規問答小幫手』專案負責人
- 擅長撰寫 Swift 及 SwiftUI

講座內容摘要
一、資料型別
1. 數字
- 整數(Integer):沒有小數部分的數字,例如:5, -3, 42。
- 浮點數(Float):有小數部分的數字,例如:3.14, -0.001, 2.0。
2. 字串(String)
- 字串是一串字符,用於表示文本。
- 可以使用單引號 ' 或雙引號 " 定義字符串。
3. 布林值(Boolean)
- 布林值只有兩個取值:True 和 False,且它們在電腦記憶體中的儲存值分別為 1、0。
- 常用於條件判斷。
is\_student = True
is\_teacher = False
print(is\_student) # 輸出: True
print(is\_teacher) # 輸出: False
二、變數
- 變數是用來存儲數據的容器,可以用來保存各種類型的數據。
- 在 Python 中,變數型別是動態的,不需要事先宣告,而可自動判斷。
# 定義變數
x = 5 # 整數(int)
y = 3.14 # 浮點數(float)
name = "Alice" # 字串(str)
is\_student = True # 布林值(boolean)
# 輸出變數的值
print(x) # 輸出: 5
print(y) # 輸出: 3.14
print(name) # 輸出: Alice
print(is\_student) # 輸出: True
*補充【變數命名規則】
- 建議使用有意義的變數名稱,以提高代碼的可讀性。
- 變數名稱只能以英文字母、數字以及底線( _ )組成。
- 變數名稱不能以數字開頭,且不能只包含數字。
- 變數名稱區分大小寫(name 和 Name 是不同的變數)。
- 變數名稱不能使用 Python 的保留字(指已經被賦予特定意義的單字,e.g. if、for、while、def...)。
- 在 Python 的 PEP 8 標準中,我們於命名習慣上通常會使用小寫字母命名變數,並以底線分隔多個單詞(e.g. student_name)。
三、運算子
- 指定運算子(=):將等號右邊的內容存進左邊的東西裡,常用以定義變數。
- 比較運算子:用以描述數字間的相對關係,包含等於(==)、大於(>)、小於(<)、大於等於(>=)、小於等於(<=)。
- 算術運算子:
a = 6
b = 2
print(a+b) # 相加取和 # 輸出:8
print(a-b) # 相減取差 # 輸出:4
print(a\*b) # 相乘取積 # 輸出:12
print(a\*\*b) # 計算次方 # 輸出:36(註:6的2次方)
print(a/b) # 相除取商到小數 # 輸出:3.0
print(a//b) # 相除取商到整數 # 輸出:3
print(a%b) # 相除取餘數 # 輸出:0
4. 邏輯運算子:
a = 6
# and:當左右兩邊的條件都成立,則其值為 True,否則 False
print((a > 1) and (a < 7)) # True and True -> 輸出:True
print((a > 1) and (a > 7)) # True and False -> 輸出:False
print((a < 1) and (a > 7)) # False and False -> 輸出:False
# or:只要左右兩邊的條件其中一者成立,則其值為 True,反之為 False
print((a > 1) or (a < 7)) # True and True -> 輸出:True
print((a > 1) or (a > 7)) # True and False -> 輸出:True
print((a < 1) or (a > 7)) # False and False -> 輸出:False
# not:會反轉條件的布林值。如果條件為 True 則轉為 False、False 轉為 True
not(a > 1) # NOT True -> 輸出:False
not(a < 1) # NOT False -> 輸出:True
5. 位元運算子(進階補充):把數字轉換成二進制,並逐位比較、做運算。
a = 6 # 二進制:0110
b = 2 # 二進制:0010
print(a & b) # &(按位 AND):當某一位的對應位元都是 1,則該位運算結果為 1,否則為 0
` `# 運算過程:
` `# 0110 (a)
` `# 0010 (b)
` `# ----
` `# 0010 (-> 十進位制為 2)
` `# 輸出:2
print(a | b) # |(按位 OR):只要某一位對應位元有一個是 1,則運算結果為 1,否則為 0
` `# 運算過程:
` `# 0110 (a)
` `# 0010 (b)
` `# ----
` `# 0110 (-> 十進位制為 6)
` `# 輸出:6
print(a ^ b) # ^(按位 XOR):當某一位對應位元只有一個是 1,則運算結果為 1,否則為 0
` `# 運算過程:
` `# 0110 (a)
` `# 0010 (b)
` `# ----
` `# 0100 (-> 十進位制為 4)
` `# 輸出:4
print(~a) # ~(按位 NOT):反轉所有位元(1 變 0、0 變 1),並以「二補數」表示結果
` `# 運算過程:
` `# 0110 (a) -> 1001 (反轉後)
` `# 在 Python 中,~n 的運算結果等於 -(n + 1)
` `# 因此,~a = ~6 = -(6 + 1) = -7
` `# 輸出:-7
6. 應用練習:輸入國文成績以及英文成績,顯示是否通過。
# 參考解答
chinese = int(input()) # 讓使用者輸入國文成績
english = int(input()) # 讓使用者輸入英文成績
# 建立兩個判斷是否及格的變數(若前面輸入的分數大於等於 60,則變數值為 True)
passChinese = chinese >= 60
passEnglish = english >= 60
# 顯示是否及格
print(passChinese)
print(passEnglish)
# 建立兩個判斷成績狀態的變數
passBoth = passChinese and passEnglish # 兩個科目都過
passOne = passChinese or passEnglish # 至少一個科目過
# 顯示結果(會輸出 True 或 False)
print(passBoth)
print(passOne)
四、字串操作**
1. 字串拼接:使用 + 拼接多個字串。
first\_name = "John"
last\_name = "Doe"
full\_name = first\_name + " " + last\_name
print(full\_name) # 輸出: John Doe
2. 相關常用函式
- len():以字元計算字符串的長度,並回傳其值,意即數字、字母、符號(含空格)都會被納入計算。
text = "Hello, world!"
print(len(text)) # 輸出: 13
- .upper():將字符串轉換為全大寫。
text = "hello"
print(text.upper()) # 輸出: HELLO
- .lower():將字符串轉換為全小寫。
text = "HELLO"
print(text.lower()) # 輸出: hello
- .strip():移除字符串開頭和結尾的空白字符。
text = " Hello, world! "
print(text.strip()) # 輸出: Hello, world!
- .replace():將字符串中的某個子字符串替換為另一個子字符串。
text = "Hello, world!"
print(text.replace("world", "Python")) # 輸出: Hello, Python!
- .find():回傳子字符串在某母字符串中的起始位置(即索引值,母字符串的第一個字元會以第 0 位開始算),未找到則返回 -1。如果子字符串出現多次,會返回首次出現的位置。
text = "Hello, world!"
position = text.find("world")
print(position) # 輸出: 7
五、格式化字串輸出
1. format() 方法:Python 2.7(含)以後的版本都有支援。
(1) 將變數或值插入字串中的特定位置:
name = "Alice"
age = 25
print("我的名字是 {},我今年 {} 歲。".format(name, age))
# 輸出:我的名字是 Alice,我今年 25 歲。
(2) 使用索引值插入,或直接在 .format() 中命名變數:
print("姓名:{0}, 年齡:{1}".format(name, age))
print("姓名:{name}, 年齡:{age}".format(name="Alice", age=25))
# 兩種寫法皆輸出:姓名:Alice, 年齡:25
(3) 調整輸出格式
- 基本語法(兩種語法的效果相同)
- format(變數,'格式化字符')
- ’%格式化字符'%(變數)
- 常用之位置調整方法
- <:將內容向左對齊、右側補空格。
:將內容向右對齊、左側補空格(因預設置左對齊)。
- ^:將字串置中。
# 使用範例
a=123
b=123.456
c='Python'
print(format(a,'<5d')) # 輸出:123
print(format(b,'>10.2f')) # 輸出: 123.46
print(format(c,'^10s')) # 輸出: Python
# 注意:這三種格式化方式適用於『整數、浮點數和字串』,
# 但對於列表、字典等資料型別,則需要額外轉換為字串後才能使用。
- 格式化為十進位制內容
- nd:格式化為最小寬度 n 的整數(若不夠則前面填空格)。
- n.kf:格式化為最小長度 n、k 位小數的浮點數(超過的位數四捨五入)。
- ns:格式化為最小長度為 n 的字串(若不夠則後面填空格)。
# 承上
print(format(a,'5d')) # 輸出: 123 # 會填兩位空格在前面
print('%5d'%(a)) # 輸出: 123 # 輸出結果相當於上一行的寫法
print(format(b,'10.2f')) # 輸出: 123.46 # 前面填四位空格、小數點後三位進位
print(format(c,'10s')) # 輸出:Python # 會填四位空格在後面
- 格式化為其他進位制
- nx(小寫 x):將整數轉換為小寫的十六進位字串。
- nX(大寫 X):將整數轉換為大寫的十六進位字串。
- no:將整數轉換為八進位字串。
- nb:將整數轉換為二進位字串。
a = 123
print(format(a, '5x')) # 輸出: 7b # 轉十六進制(小寫)、置右,總寬度 5 -> 空三格
print(format(a, '5X')) # 輸出: 7B # 轉十六進制(大寫)、置右,總寬度 5 -> 空三格
print(format(a, '5o')) # 輸出: 173 # 轉八進制、置右,總寬度 5 -> 空兩格
print(format(a, '5b')) # 輸出:1111011 # 轉二進制,置右,總寬度 5 -> 不用空格(二進制結果有 7 個字元,超過最小寬度 5)
# 注意:這些格式化方式僅適用於『整數』,
# 但其他資料型別則需要額外轉換為整束後才能使用。
**2. f’’(f-string):**在 Python 3.6 之後才引入的字串格式化方式,特性是簡潔、易讀,可直接嵌入變數到字串中:
# 使用範例1:嵌入變數
name = "Alice"
age = 25
print(f"我的名字是 {name},我今年 {age} 歲。")
# 輸出:我的名字是 Alice,我今年 25 歲。
# 也等同於上文「print("我的名字是 {},我今年 {} 歲。".format(name, age))」寫法哦!
# 使用範例2:嵌入變數與表達式,並格式化表達式計算結果
a = 123
b = 123.456
print(f'Count {a} + {b} = {a+b:.2f}')
# 輸出:Count 123 + 123.456 = 246.46

辛苦啦~ 恭喜你完成了第二個【Python語法基礎】學習單元!可點擊下方連結回到學習總目錄。