13.
保留字又稱關鍵字 (Keyword),是 Python 語言具特定用途的識別字
Python3.x 定義的保留字:
and as assert async await break
class continue def del elif else
except False finally for from global
if import in is lambda None
nonlocal not or pass raise True
return try while with yield
保留字
13
14.
變數 (Variable) 是隨時可以改變內容的容器名稱,使用變數可以使程
式更靈活處理資料
程式中可以直接選擇未使用且不是Python保留字的名稱來建立變數,
並指定變數值。語法如下:
變數 = 變數值
a = 3
變數1, 變數2 [, 變數3…] = 變數值1, 變數值2 [,變數值3…]
a, b = 3, 5
變數1 [= 變數2 = 變數3…] = 變數值
a = b = 10
Python 程式是採用動態型別,程式在直譯時才會根據變數值,宣告成
適當的資料型別
變數宣告 1/3
14
15.
Python 不需要轉換任何資料,可以隨時更動變數的資料型別,只要使用
指定運算子「=」,就能重新指定變數所參考的物件
x = 'a string'
x = 7
x = False
變數的名稱除了要遵循識別字的命名規則外,要使用易懂而且有意義的
名稱,以提高程式的可讀性
Python3 以上版本支援中文識別字名稱,但是 Python 鼓勵開源共享,仍
然建議不要使用中文變數
若變數不再使用,可以使用 del 指令來刪除變數,如此可以將佔用的記
憶體釋放出來
變數宣告 2/3
15
16.
power1 = power2 = 100 #宣告power1和power2變數,變數值都為100
total = 1.23456E+6 #宣告total變數,值為浮點數1234560.0
print(yesNo) #y
print(passScore, maxScore, minScore)#60 100 0
print(power1, power2) #100 100
print(total) #1234560.0
del total
print(total) #執行會產生錯誤,因為變數已經刪除
變數宣告 3/3
16
NameError: name 'total' is not defined
26.
依照運算所需要的運算元數目來分類,可以分成:
⼀元:-(負號)
-5
二元運算子:+、-、*、/、+= 等
x + y
x / y
依照運算子功能有下列常用的種類:
指定、算術、關係、邏輯、位元、移位、成員、身分等運算子
運算子 2/2
26
27.
宣告變數指定初值,或是要改變數值時,可以使用指定運算子「=」
指定時可以將⼀個常值、變數或運算式的結果,指定為變數的變數值,
其語法為:
變數名稱 = 常值|變數|運算式
例如:
x = 1 #將變數x指定變數值為1
x = y + z #變數x指定變數值為y、z變數的和
指定運算子 1/3
27
28.
在 Python 語言中,int、float、string... 等資料型別是屬於不可變物件,
變數值是不會改變
變數值改變時,實際上是建立⼀個新物件,再將變數值存入新物件中
在 C 程式語言中要交換兩個變數值時,做法如下
temp = x;
x = y;
y = temp;
但是在 Python 中,只要寫 x, y = y, x 就可以達成,因為是直接
將兩變數的記憶體位址交換
指定運算子 2/3
28
29.
x = 5 #指定x變數值為常值5
y = x #指定y變數值為變數x的值
print(id(x), id(y)) #顯示x與y位址,會發現變數x與y共用同⼀物件
x = 3 + y #指定x變數值為運算式3+y的結果
print(id(x), id(y)) #顯示x與y位址,會發現變數x的位址已變更
a, b = 2, 3
print(id(a), id(b)) #顯示變數a,b位址
a, b = b, a #a,b變數值交換
print(id(a), id(b)) #顯示變數a,b位址,會發現a,b的位址已互換
指定運算子 3/3
29
30.
算術運算子用來執行數學運算,包括加法、減法、乘法、除法、取餘
數等
算術運算子 1/2
運算子 說明 範例 執行結果(假設y值為3)
+ 將兩數字相加 x = y + 2 x變數值為5
- 將兩數字相減 x = y - 2 x變數值為1
* 將兩數字相乘 x = y * 2 x變數值為6
/ 浮點數除法運算 x = y / 2 x變數值為1.5
// 取除法之商數 x = y // 2 x變數值為1
% 取除法之餘數 x = y % 2 x變數值為1
** 指數 x = y ** 2 x變數值為9
30
31.
r = 6.4
PI = 3.14159
print("圓的半徑:", r)
print("圓面積:", PI * r ** 2)
print("圓周⻑:", 2 * PI * r)
print("球的體積:", 4 / 3 * PI * r ** 3)
註:指數運算**優先權高於算術運算
算術運算子 2/2
31
32.
若要將變數值運算後,再將運算結果指定給該變數時,可以利用複合
指定運算子來簡化敘述
x = x + 5 可用複合指定運算子改為 x += 5
複合指定運算子
運算子 說明 範例 執行結果(假設x值為3)
+= 相加後再指定 x += 2 x變數值為5
-= 相減後再指定 x -= 2 x變數值為1
*= 相乘後再指定 x *= 2 x變數值為6
/= 相除法後再指定 x /= 2 x變數值為1.5
//= 取除法之商數後再指定 x //= 2 x變數值為1
%= 取除法之餘數後再指定 x %= 2 x變數值為1
**= 指數運算後再指定 x **= 2 x變數值為9
32
33.
關係運算子又稱為比較運算子,可對兩個運算元作比較,並傳回比較
結果。若結果成立,傳回值為 True;不成立傳回值為 False
相同型別物件才可以比較大小
'a' > 0 #會產生 TypeError
關係運算子常配合選擇結構,來決定程式流向
關係運算子 1/2
運算子 說明 範例 執行結果(假設x=1, y=3)
== 等於 x == y False
!= 不等於 x != y True
> 大於 x > y False
< 小於 x < y True
>= 大於或等於 x >= y False
<= 小於或等於 x <= y True
33
34.
a, b = 2, 3
print('a =', a, ',b =', b) #a = 2 ,b = 3
print('a < b結果為', a < b) #a < b結果為 True
print('a >= b結果為', a >= b) #a >= b結果為 False
print('a == b結果為', a == b) #a == b結果為 False
print('0' == 0) #False
print('0' != 0) #True
print('0' == 48) #False,Python無字元型別,'0'為字串資料
print('0' >= 0) #
print('0' < '1') #False
關係運算子 2/2
34
TypeError: '>=' not supported between instances of 'str' and 'int'
35.
邏輯運算子可以對兩個運算元作邏輯運算,並傳回運算結果
not 運算的回傳值為布林值,但 and 與 or 運算的回傳值不⼀定是布林
值
邏輯運算子 1/3
A B A and B A or B not A not B
False False False False True True
False True False True True False
True False False True False True
True True True True False False
35
36.
Python 語言在做邏輯運算時,會採取快捷運算 (short circuit),來加
快執行速度
and 運算時,如果第⼀個運算元為 False,就直接回傳第⼀個運算元,
而不會再處理第二個運算元
or 運算時,如果第⼀個運算元為 True,就直接回傳第⼀個運算元,而
不會再處理第二個運算元
邏輯運算子 2/3
運算子 語法 執行結果 說明
and A and B 當A為False時回傳A;否則回傳B 只有A為True時,B才會被執行
or A or B 當A為True時回傳A;否則回傳B 只有A為False時,B才會被執行
not not A 當A為True時回傳False;否則回傳True
not之優先序比非邏輯運算低
not A==B執行順序為not(A==B)
36
37.
邏輯運算子可用來測試較複雜的條件,常常用來連結多個關係運算子,
在if選擇結構中決定程式的流向
例如 (score >= 0) and (score <= 100),其中 (score >= 0) 和 (score <=
100) 為關係運算子,兩者用 and(且) 邏輯運算子連接,表示兩個條件
都要成立才為真,所以上述表示 score 要介於 0~100
print((1 < 2) and ('A' == 'a')) #False
print((-1 < 0) or (-1 > 100)) #True
print(not('A' != 'a')) #False
print(not 2) #False
print(2 and 3) #3 (回傳第2個運算元)
print(2 or 3) #2 (回傳第1個運算元)
print('a' or 'b') #a (回傳第1個運算元)
print(0 and 3) #0 (回傳第1個運算元)
print('' or 'b') #b (回傳第1個運算元)
邏輯運算子 3/3
37
38.
位元運算會先將運算元轉換成二進位,再做指定的二進位布林運算
& 兩個運算元同時為 1 時,結果才為 1
| 兩個運算元中只要有⼀個為 1 時,結果就為 1
^ 兩個運算元不相同時,結果才為 1
~ 若運算元為 0,結果為 1;若運算元為 1,結果為 0
位元運算子 1/2
x y x & y x | y x ^ y ~x
0 0 0 0 0 1
0 1 0 1 1 1
1 0 0 1 1 0
1 1 1 1 0 0
38
39.
若a = 0b1001,b = 0b1100
a = 0b1001; b = 0b1100
print('a =', bin(a)) #a = 0b1001
print('b =', bin(b)) #b = 0b1100
print('a & b = ', bin(a & b)) #a & b = 0b1000
print('a | b = ', bin(a | b)) #a | b = 0b1101
print('a ^ b = ', bin(a ^ b)) #a ^ b = 0b101
print('~a = ', ~a) #~a = -10
運算子 說明 實例 運算結果
& 兩個運算元的位元都為 1 時,結果為 1 a & b 0b1000
| 兩個運算元其中一個位元為 1 時,結果為 1 a | b 0b1101
^ 兩個運算元的位元不同時,結果為 1 a ^ b 0b101
~ 將運算元進行1的補數運算 ~a -10
位元運算子 2/2
39
41.
in 稱為成員運算子 (Membership operator)
in 用來判斷第⼀個運算元是否為第二個運算元的元素,若是就回傳
True;否則回傳 False。
not in 運算子用來判斷第⼀個運算元是否不屬於第二個運算元的元素
第二個運算元為字串、串列...等物件
print('P' in 'Python') #True
print('x' not in 'Python') #True
print(1 in [1, 2, 3]) #True
print(2 not in [1, 2, 3]) #False
註:[1, 2, 3]為串列資料,在後續單元介紹
in運算子
41
42.
is 稱為身分運算子 (Identity operator)
is 用來判斷兩運算元的 id 是否相同,若是就回傳 True;否則回傳 False。
所以 x is y 敘述,就等於 id(x) == id(y) 敘述
not is 運算子用來判斷兩運算元的 id 是否不相同
要特別注意,is 運算子是用來判斷兩運算元是否引用自同⼀個物件,而
== 運算子則是判斷兩運算元的值是否相同
x = 2.5; y = 2.5
print(id(x), id(y)) #2081398578096 2081399329328 (隨執行環境變動)
print(x is y, x == y) #False True
z = x
print(id(z)) #2081398578096
print(z is x, z == x) #True True
is運算子
42
43.
運算式可能非常複雜,所有程式語言都會根據運算子的優先序
(precedence) 與結合性 (associativity) 來決定先進行那⼀個運算。例如:
y = b * 2 + 3;
「*」乘法運算子優先序大於「+」加法運算子及「=」指定運算子,所以會
先計算 b * 2 的值
「+」加法運算子優先序大於「=」指定運算子,所以計算 b * 2 + 3 之後的
值才會指定給 y
當運算子擁有相同優先序時,運算子的執行順序則由結合性決定
右結合 (right-to-left associativity):運算式是從右到左執行運算子的運算
x = y = 3;
先執行 y = 3,之後再執行 x = y
運算子的優先序與結合性 1/5
43
44.
左結合 (left-to-right associativity):運算式是從左到右執行運算子的運算
a = b – c - 4;
先計算 b - c,再將 b – c 的結果減 4,最後才將結果指定給變數 a
撰寫複雜的運算式時,最好使用括弧來明確指定運算式的優先序
運算子的優先順序與結合性 2/5
44
46.
x = 2 << 1 + 2
x = 2 << 3
x = 16
x = (2 << 1) + 2
x = 4 + 2
x = 6
x = 1 + 4 * 3 / 2 % 5
x = 1 + 12 / 2 % 5
x = 1 + 6 % 5
x = 1 + 1
x = 2
運算子的優先順序與結合性 4/5
46
47.
x, y = 2, 3
x >= y and x != y or x * 2 > y
2 >= 3 and 2 != 3 or 4 > 3
False and 2 != 3 or 4 > 3
False and True or 4 > 3
False and True or True
False or True
True
運算子的優先順序與結合性 5/5
47
49.
運算式中若有資料型別不同的數值要做運算時,除非使用強制型別轉換
外,否則系統會做自動型別轉換,將資料型別轉成相同資料型別後才進
行運算
兩個不同資料型別的資料要做運算時,自動型別轉換是將型別⻑度較小
的資料先轉成型別⻑度較大者,調整為相同的資料型別才做運算
轉型規則如下:
bool int float
b, i, f = True, 2, 3.4
print(b + i, b + f, i + f) #3 4.4 5.4
print(b - i, b - f, i - f) #-1 -2.4 -1.4
print(b * i, b * f, i * f) #2 3.4 6.8
print(b / i, b / f, i / f) #0.5 0.29411764705882354 0.5882352941176471
資料型別轉換 2/4
資料範圍小 資料範圍大
49
60.
要輸出特殊控制字元,必須使用逸出序列
使用print()函式顯示資料 9/11
逸出序列 說明
a 發出系統聲
b 倒退鍵(Backspace),會由逸出序列所在位置向左刪除⼀個字元
f 換頁
n 換行
r 移到行首,會刪除該行逸出序列所在位置前面的所有字元
t 水平跳格,每個間隔為8個字元
顯示反斜線字元
' 顯示單引號字元
" 顯示雙引號字元
60
70.
執行下列程式,輸出結果為何?
a, b = 2, 3
c, d = 4, 5
value = b // a + c // b + d // b
print('%d'%value)
1. 3
2. 4
3. 5
4. 6
自我評量 2/6
70
71.
x、y、z為布林變數,且x=True、y=True、z=False,則下列各布林運
算式之結果依序為何?
not(y or z) or x
not y or (z or not x)
z or (x and (y or z)
(x or x) and z
1. True False True False
2. False False True True
3. False True True False
4. True True False True
自我評量 3/6
71
72.
使用Python語言設計程式時,請問下列資料的型別為何?
A. 8
B. 3.14
C. 8e5
D. 'False'
E. True
F. '3.14'
A. int B. float C. float D. str
E. bool F. str
自我評量 4/6
72
It appears that you have an ad-blocker running. By whitelisting SlideShare on your ad-blocker, you are supporting our community of content creators.
Hate ads?
We've updated our privacy policy.
We’ve updated our privacy policy so that we are compliant with changing global privacy regulations and to provide you with insight into the limited ways in which we use your data.
You can read the details below. By accepting, you agree to the updated privacy policy.