簡單來說就是「劇本」,只是這個劇本是寫給電腦(computer)看的。
由一條條指令(command)所組成,每一條指令是讓電腦執行特定動作的命令。
程式語言基本可以分為高階語言(high-level languages)與低階語言(low-level languages)
類型 | 說明 | 例子 |
---|---|---|
編譯式語言 | 需先將程式整體編譯成機器碼再執行 | C、C++、Java |
直譯式語言 | 透過直譯器逐行解譯並立即執行 | Python |
Python 本身是動態語言,在 Python 中,變數本身不是值,而是指向記憶體中某個值的參考(reference)。
類型 | 儲存觀念 | 範例語言 | 圖示說明 |
---|---|---|---|
靜態語言 | 變數與記憶體空間直接對應 | C 語言 | x=10 → x 儲存的是內容 |
動態語言 | 變數是參照(reference)位址 | Python | x=10 → x 儲存的是「指向 10 的參照」 |
 |
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'> #布林值
電腦底層只認識二進位(Binary),而人類閱讀習慣是十進位(Decimal)。
開發者與硬體工程師也常使用「十六進位(Hex)」與「八進位(Octal)」來簡化位元表示。
十進位 13 → 二進位:`1101`
13 / 2 = 6 ... 1
6 / 2 = 3 ... 0
3 / 2 = 1 ... 1
1 / 2 = 0 ... 1
二進位 10110
→ 十進位:1×2⁴ + 0×2³ + 1×2² + 1×2¹ + 0×2⁰ = 22
##### 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
在 Python 中,有時候我們需要將資料從一種型態轉換成另一種型態,以便進行正確的運算或符合函式要求。
型態轉換是明確指定的動作,非自動轉換。若不做轉換,某些運算可能會出錯或導致精度問題。
可以使用 type() 可以檢查變數目前的型態。
這邊討論的範疇,先設定在 int 與 float 之間
函式 | 說明 |
---|---|
int() |
將資料轉換成整數型態(int) |
float() |
將資料轉換成浮點數型態(float) |
x = 10.5
print(x)
print(type(x)) # 查看原本型態為 float
y = int(x) + 5 # 將浮點數轉換為整數後再加法
print(y)
print(type(y)) # 查看加法後的型態為 int
x = 10
print(x)
print(type(x)) # 查看原本型態為 int
y = float(x) + 10 # 將整數轉換為浮點數後再加法
print(y)
print(type(y)) # 查看加法後的型態為 float
函數 | 功能與說明 |
---|---|
abs(x) |
回傳變數 x 的絕對值 |
pow(x, y) |
回傳 x 的 y 次方 |
round(x) |
採用「Bankers Rounding」四捨六入、五留雙策略。若小數為 .5,依奇偶數進位處理。 |
round(x, n) |
進行小數點第 n 位的處理,n 表示要保留的位數 |
描述:請撰寫一個程式,接收一個十進位整數與目標進位(2、8 或 16),輸出轉換後的結果。
輸入格式:一行輸入包含兩個整數 n b
,表示十進位整數 n
要轉換成 b
進位。
輸出格式:輸出一行代表轉換後的字串表示
##### 輸入範例
13 2
47 8
255 16
##### 輸出範例
0b1101
0o57
0xff
描述:給你一串整數與一串浮點數,請將所有整數強制轉為浮點數後與對應浮點數相加,並列出每組相加前與相加後的型別(使用 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'>
描述:你將會得到一組整數與一組操作(如 abs
, round
, pow
),請你依序對每個整數應用對應的函數,並輸出結果。
輸入格式:兩行,第一行是整數數列,第二行是操作數列(長度相同)
##### 輸入範例
-5 4.7 3
abs round pow2
##### 輸出範例
5
5
9
學習連結:https://www.youtube.com/watch?v=dNFI2c007Sw
可以使用單引號或雙引號來定義
print(111+333)
print("111"+"333")
str1 = """
今天天起真好
今天天起真好
今天天起真好
今天天起真好
"""
repeat_str = "ha" * 5
print(repeat_str) # 輸出: hahahahaha
sentence = "Hello, world!"
print(len(sentence)) # 輸出: 13
message = "Hello, Python!"
index = message.find("Python")
print(index) # 輸出: 7
new_message = message.replace("Python", "World")
print(new_message) # 輸出: Hello, World!
在 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
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 整數轉為對應字元 |
print(chr(97)) # 輸出 'a'
print(ord("a")) # 輸出 97
print(ord("A")) # 輸出 65
輸入一個字元,判斷它的種類(大寫字母、數字、其他)
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} 是其他字元")
str 是 Python 常用的字串型別,用於儲存與處理一般文字。
bytes 是 Python 中用來儲存「二進位資料」的型別,常見於:
編碼格式 | 說明 |
---|---|
'ascii' |
7 位元 ASCII 編碼 |
'utf-8' |
Unicode 通用編碼(推薦使用) |
'cp950' |
繁體中文 Windows 系統編碼 |
'unicode-escape' |
Unicode 轉義格式(如 \uXXXX ) |
字母轉 byte | .encode('編碼格式'): |
---|---|
byte 轉字母 | .decode('編碼格式') |
string = 'abc'
stringBytes = string.encode('utf-8')
print(stringBytes) # b'abc'
print(len(string)) # 3
print(len(stringBytes)) # 3
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)
stringBytes = b'abc'
stringUcode = stringBytes.decode('utf-8')
print(stringUcode) # abc
nameBytes = b'\xe7\x8e\x8b\xe5\xb0\x8f\xe6\x98\x8e'
nameUcode = nameBytes.decode('utf-8')
print(nameUcode) #
Copyright © 2025 Wei-Cheng Chen