講義1. 明 日 合 作 社 F u t u r e C o l l a b o r a t o r s
python
datetime.datetime(2018, 11, 17)
電 腦 工 程 師 工 作 坊
print('Hello World!')
3. 2
認識蛇蛇
變數
變數是儲存資料的地方。
語法
variable = value
說明
variable 是變數(的名稱),而 value 是要放入變數的值。
變數名稱的第一個字母不能使用數字。
變數不能使用保留字作為名稱。
保留字列表
保留字具有特定用途,例如今天會介紹到的 if 與 for,故不可以作為變數名稱。
False True if else elif and or
while for break continue import from not
is in class def pass lambda return
global nonlocal try except raise assert yield
with as finally del None
4. 3
運算子
算術運算子
類型 運算子 使用方式
加法、字串(序列)串接 + a + b
減法 - a - b
乘法、字串(序列)重複 * a * b
除法 / a / b
除法取商數 // a // b
除法取餘數 % a % b
指數 ** a ** b
比較運算子
類型 運算子 使用方式
等於 == a == b
小於 < a < b
大於 > a > b
不等於 != a != b
小於或等於 <= a <= b
大於或等於 >= a >= b
邏輯運算子
類型 運算子 使用方式
且 and p and q
或 or p or q
非 not not p
5. 4
常見型別
型別 名稱 例子
整數 (integer) int 0, 1365, -1000000
浮點數 (floating-point number) float 0.0, 3.14159, 1.6e-19
複數 (complex number) complex 1j, (-0.5+0.866j)
布林 (boolean) bool True, False
字串 (string) str 'Hello!', "apple", ""
序對 (tuple) tuple (1, 2, 3)
序列 (list) list [1, 2, 3]
集合 (set) set {1, 2, 3}
字典 (dictionary) dict {'a': 1, 'b': 2, 'c': 3}
數值型別 int, float, complex
儲存數字的型別被稱為數值型別,在 Python 3 中共有三種內建的數值型別:整
數 int、浮點數 float 與複數 complex。
int 型別可以存放任意大小的整數。可以運用 int()函數將字串或其他型別
轉為整數,例如 int('0')與 int(0.0)都會回傳 0。
float 型別是運用一種稱為 IEEE-754 的浮點數運算標準,以二進位的方式
儲存數字。由於二進位無法完整的表示大多數十進位的小數,在使用上會有
些許的誤差。可以運用 float()函數將字串或其他型別轉為整數,例如
float('0')與 float(0)都會回傳 0.0。
complex 型別會儲存一個複數,用 j 代表虛數單位。
字串型別 str
在 Python 中,字串會用單引號或雙引號包起來,表示一串字母。例如'string'
和"python"都是字串,而""是空字串。
字串可以用「+」來串接。例如'post' + 'card'會成為'postcard'。
字串可以用「*」搭配一個整數產生重複字串。
例如'z' * 3 會成為'zzz'。
6. 5
教蛇蛇如何抉擇
條件分支結構 if, else, elif
語法
if first_condition:
first_work
elif second_condition:
second_work
elif third_condition:
third_work
else:
default_work
說明
if 與 elif 後面加的都是條件,但 if 包含的部分只要後面的條件滿足就會
執行,而 elif 所包含的部分只有之前所有的 if、elif 的條件皆不滿足,
且自己後面的條件滿足是才會執行。
else 包含的部分在前面 if、elif 的條件皆不滿足時才會執行。
一個條件分支結構中 elif 的數目不限,也可以沒有。
一個條件分支結構中 else 僅能最多有一個,也可以沒有。
7. 6
教蛇蛇如何做功德
迴圈結構 for
語法
for item in bucket:
work_about_item
說明
bucket 是一個可迭代的物件(也就是說,可以找到當中的第一個物件、第
二個物件等等),例如序列就是一個可迭代的物件。
第一次進入迴圈時 item 會是 bucket 的第一個物件。而每進入一次迴圈,
item 就會更新成 bucket 中的下一個物件。直到 bucket 中不存在下一個物
件時,便會離開迴圈。
(若 bucket 中沒有物件,就不會進入迴圈。)
在迴圈中使用 break 可以離開迴圈,而使用 continue 可以直接進入下一
次迴圈。
迴圈結構 while
語法
while condition:
work
說明
condition 是一個條件。
每執行一次迴圈,就會檢查 condition 是否成立。若 condition 不成立,
便會離開迴圈。
(若 condition 一開始便不成立,就不會進入迴圈。)
在迴圈中使用 break 可以離開迴圈,而使用 continue 可以直接進入下一
次迴圈。
8. 7
range 迭代器
語法
range(end)
range(start, end)
range(start, end, step)
說明
range(start, end, step)會產生一個以從 start 開始,到 end 的前一個
元素,公差為 step 的迭代器,是一個可迭代的物件,故可以用在 for 迴圈
中。
例如 range(2, 11, 3)會依序產生 2, 5, 8 這幾個數字。
若沒有設定 step,則預設值是 1。
若沒有設定 start,則預設值是 0。
我們可以用 list()將 range 迭代器轉換成一個序列。
例如 list(range(5))會得到[0, 1, 2, 3, 4]。
9. 8
存取其中成員
語法
bucket[index]
說明
如果 bucket 是一個序列或字串,則我們可以用上述的語法取得其中索引值
為 index 的成員。
索引值由 0 開始算。
例如 array = ['a', 'b', 'c']這個序列中,'a', 'b', 'c'這三個成員
的索引值分別為 0, 1, 2,因此 array[1]會得到'b'。
可以用負數的索引值來表示倒(ㄉㄠˋ)數(ㄕㄨˇ)。
例如 array[-1], array[-2], array[-3]分別為'c', 'b', 'a'。
不能用超出範圍的索引值。
切片
語法
bucket[start:end]
bucket[start:end:step]
說明
以下以 array = ['a', 'b', 'c', 'd']進行舉例。
bucket[start:end]會產生一個新序列,包含 bucket 中索引值從 start
到 end - 1 的成員。範圍包含 start,但不包含 end。
例如 array[0:2]會得到['a', 'b'],而 array[1:-1]是['b', 'c']。
bucket[start:end:step]會產生類似的序列,只是索引值是由 start 開
始以 step 為公差的等差數列,直到最後一個小於 end 的數。
例如 array[0:3:2]會得到['a', 'c']。
如果想從第一個成員開始選取,可以省略 start;想選取到最後一個成員,
可以省略 end。
例如 array[1:]會得到['b', 'c', 'd'],而 array[:]會是和 array 相
同的一個序列。
10. 9
實作練習
實作一
給定一個 1 至 100 元的商品金額,請算出在使用最少硬幣的前提下,分別要用幾
個 50 元、10 元、5 元、1 元硬幣來付錢。
輸入範例
78
輸出範例
1
2
1
3
實作二
給定一個西元年份,檢查那年是不是閏年。
輸入範例一
2018
輸出範例一
False
輸入範例二
2020
輸出範例二
True
12. 11
其他有用的東東
print 函式
語法
print(data)
說明
這個函式會印出 data 的值並換行。
input 函式
語法
input(question)
說明
這個函式會先印出 question,然後讀入一行字串並回傳。
要注意回傳的是字串,如果希望讀入一個整數或浮點數可以運用 int()或
float()轉型。
type 函式
語法
type(data)
說明
這個函式會回傳 data 的型別。
len 函式
語法
len(data)
說明
這個函式會回傳 data 的長度,data 可以是字串、序列、字典、集合或其
他可計算長度的物件。