WEI-CHENG CHEN

1. 程式(Program)

簡單來說就是「劇本」,只是這個劇本是寫給電腦(computer)看的。

由一條條指令(command)所組成,每一條指令是讓電腦執行特定動作的命令。

2. 程式語言基本區分

程式語言基本可以分為高階語言(high-level languages)與低階語言(low-level languages)

3. 認識 Python

3.1. 直譯式 vs 編譯式

類型 說明 例子
編譯式語言 需先將程式整體編譯成機器碼再執行 C、C++、Java
直譯式語言 透過直譯器逐行解譯並立即執行 Python

4. 變數

Python 本身是動態語言,在 Python 中,變數本身不是值,而是指向記憶體中某個值的參考(reference)。

類型 儲存觀念 範例語言 圖示說明
靜態語言 變數與記憶體空間直接對應 C 語言 x=10 → x 儲存的是內容
動態語言 變數是參照(reference)位址 Python x=10 → x 儲存的是「指向 10 的參照」
![upgit_20250713_1752405278.png 1102x716](https://raw.githubusercontent.com/kcwc1029/obsidian-upgit-image/main/2025/07/upgit_20250713_1752405278.png)

5. 資料型態

Python 的基本資料型態可分為:

# 資料型態:查看型態:type()
a = 10 # int
a = 15.2 # float
s = "ABC" # string
flag = True

# 容器
arr = [1,2,3] # 有順序且可以變動的資料集合。
tuple = (1,2,3) # 有順序且不可變的資料集合。
set = (1,2,3) # 無順序的資料集合。
dict = {"A":120} # key-value pair的集合。

print(type(10)) # <class 'int'> #整數
print(type(3 + 5j)) # <class 'complex'> #複數
print(type('hello python')) # <class 'str'> #字串
print(type(True)) # <class 'bool'> #布林值

6. bit/bytes

7. 整數

8. 不同進制

電腦底層只認識二進位(Binary),而人類閱讀習慣是十進位(Decimal)。

開發者與硬體工程師也常使用「十六進位(Hex)」與「八進位(Octal)」來簡化位元表示。

8.1. 範例:十進轉二進:不斷除以 2,記下餘數,倒著寫。

十進位 13 → 二進位:`1101`
13 / 2 = 6 ... 1
6 / 2 = 3 ... 0
3 / 2 = 1 ... 1
1 / 2 = 0 ... 1

8.2. 範例:二進轉十進:每一位乘以 2 的 n 次方後相加。

二進位 10110 → 十進位:1×2⁴ + 0×2³ + 1×2² + 1×2¹ + 0×2⁰ = 22

8.3. 範例:實作不同進位的整數表示法

##### Binary
x = 0b1101    # 二進位表示 13
print(x)      # 顯示為 10 進位:13
print(bin(x)) # 顯示二進位形式:0b1101
##### Octal
x = 0o57      # 八進位表示 47
print(x)      # 顯示為 10 進位:47
print(oct(x)) # 顯示八進位形式:0o57
##### Hexadecimal
x = 0x5D      # 十六進位表示 93
print(x)      # 顯示為 10 進位:93
print(hex(x)) # 顯示十六進位形式:0x5d

9. 浮點數

9.1. 強制資料型態的轉換(Casting)

在 Python 中,有時候我們需要將資料從一種型態轉換成另一種型態,以便進行正確的運算或符合函式要求。

型態轉換是明確指定的動作,非自動轉換。若不做轉換,某些運算可能會出錯或導致精度問題。

可以使用 type() 可以檢查變數目前的型態。

這邊討論的範疇,先設定在 int 與 float 之間

函式 說明
int() 將資料轉換成整數型態(int)
float() 將資料轉換成浮點數型態(float)

9.2. 範例:將浮點數轉換為整數

x = 10.5
print(x)
print(type(x))         # 查看原本型態為 float

y = int(x) + 5         # 將浮點數轉換為整數後再加法
print(y)
print(type(y))         # 查看加法後的型態為 int

9.3. 範例:將整數轉換為浮點數

x = 10
print(x)
print(type(x))         # 查看原本型態為 int

y = float(x) + 10      # 將整數轉換為浮點數後再加法
print(y)
print(type(y))         # 查看加法後的型態為 float

10. 常見內建函數

函數 功能與說明
abs(x) 回傳變數 x 的絕對值
pow(x, y) 回傳 xy 次方
round(x) 採用「Bankers Rounding」四捨六入、五留雙策略。若小數為 .5,依奇偶數進位處理。
round(x, n) 進行小數點第 n 位的處理,n 表示要保留的位數

10.1. 範例:進位轉換器

描述:請撰寫一個程式,接收一個十進位整數與目標進位(2、8 或 16),輸出轉換後的結果。

輸入格式:一行輸入包含兩個整數 n b,表示十進位整數 n 要轉換成 b 進位。

輸出格式:輸出一行代表轉換後的字串表示

##### 輸入範例
13 2
47 8
255 16
##### 輸出範例
0b1101
0o57
0xff

10.2. 範例:整數型別與精確度

描述:給你一串整數與一串浮點數,請將所有整數強制轉為浮點數後與對應浮點數相加,並列出每組相加前與相加後的型別(使用 type() 輸出)。

輸入格式:兩行,第一行是整數串,第二行是浮點數串(長度相同)。

輸出格式:每行輸出:int_type float_type result result_type

##### 輸入範例
10 5 7
1.5 2.5 3.5
##### 輸出範例
<class 'int'> <class 'float'> 11.5 <class 'float'>
<class 'int'> <class 'float'> 7.5 <class 'float'>
<class 'int'> <class 'float'> 10.5 <class 'float'>

10.3. 範例:整數的運算排序與推理

描述:你將會得到一組整數與一組操作(如 abs, round, pow),請你依序對每個整數應用對應的函數,並輸出結果。

輸入格式:兩行,第一行是整數數列,第二行是操作數列(長度相同)

##### 輸入範例
-5 4.7 3
abs round pow2
##### 輸出範例
5
5
9

11. 字串

學習連結:https://www.youtube.com/watch?v=dNFI2c007Sw

可以使用單引號或雙引號來定義

print(111+333)
print("111"+"333")

11.1. 範例:處理多於一行的字串

str1 = """
今天天起真好
今天天起真好
今天天起真好
今天天起真好
"""

11.2. 範例:使用 * 來重複字串

repeat_str = "ha" * 5
print(repeat_str)  # 輸出: hahahahaha

11.3. 範例:字串長度 len()

sentence = "Hello, world!"
print(len(sentence))  # 輸出: 13

11.4. 範例:查找與替換

message = "Hello, Python!"
index = message.find("Python")
print(index)  # 輸出: 7

new_message = message.replace("Python", "World")
print(new_message)  # 輸出: Hello, World!

11.5. 範例:字串的索引(index)及切片(slice)

在 python 中,字串是有順序的,並且從 0 開始計算。

# indexing
my_str = "helllo"
print(my_str[0])
print(my_str[1])
print(my_str[-1])
print(my_str[-2])
# print(my_str[-10]) # index error

# slicing
x = "abcdefg"
print(x[2:]) # cdefg
print(x[:4]) # abcd
print(x[2:6]) # cdef
print(x[1:5:2]) # bd

12. ASCII 碼

ASCII(American Standard Code for Information Interchange)是一種字元編碼標準,用來表示文字、符號與控制字元。

每個可顯示字元(如英文字母、數字、標點)或控制字元(如換行、退格)對應一個唯一的數字(整數)編碼。

類型 範圍 說明
控制字元 0–31, 127 如換行(\n)、退格(\b)等
可顯示字元 32–126 包含空白、數字、大小寫字母等
字母 ‘a’–’z’ 97–122 小寫英文字母
字母 ‘A’–’Z’ 65–90 大寫英文字母
數字 ‘0’–’9’ 48–57 阿拉伯數字
函數 說明
ord(char) 回傳字元對應的 ASCII 整數
chr(number) 將 ASCII 整數轉為對應字元

12.1. 範例:字元與整數互轉

print(chr(97))    # 輸出 'a'
print(ord("a"))   # 輸出 97
print(ord("A"))   # 輸出 65

12.2. 範例:字元驗證

輸入一個字元,判斷它的種類(大寫字母、數字、其他)

char = input("請輸入一個字元: ")

if ord(char) >= 65 and ord(char) <= 90:
    print(f"{char} 是大寫字母")
elif ord(char) >= 48 and ord(char) <= 57:
    print(f"{char} 是數字")
else:
    print(f"{char} 是其他字元")

13. bytes 資料

str 是 Python 常用的字串型別,用於儲存與處理一般文字。

bytes 是 Python 中用來儲存「二進位資料」的型別,常見於:

編碼格式 說明
'ascii' 7 位元 ASCII 編碼
'utf-8' Unicode 通用編碼(推薦使用)
'cp950' 繁體中文 Windows 系統編碼
'unicode-escape' Unicode 轉義格式(如 \uXXXX
字母轉 byte .encode('編碼格式'):
byte 轉字母 .decode('編碼格式')

13.1. 範例:英文字串轉 bytes

string = 'abc'
stringBytes = string.encode('utf-8')
print(stringBytes)  # b'abc'
print(len(string))  # 3
print(len(stringBytes))  # 3

13.2. 範例:中文字串轉 bytes

name = "王小明"
nameBytes = name.encode('utf-8')
print(nameBytes)  # b'\xe6\xb4\xaa\xe9\x8c\xa6\xe9\xad\x81'
print(len(name))  # 3
print(len(nameBytes))  # 9 (一個中文字 = 3 bytes)

13.3. 範例:英文 bytes 轉字串

stringBytes = b'abc'
stringUcode = stringBytes.decode('utf-8')
print(stringUcode)  # abc

13.4. 範例:中文字 bytes 轉字串

nameBytes = b'\xe7\x8e\x8b\xe5\xb0\x8f\xe6\x98\x8e'
nameUcode = nameBytes.decode('utf-8')
print(nameUcode)  #

Copyright © 2025 Wei-Cheng Chen