Day 2
9:00 ~ 10:25
Chapter 3
Notes:
- 運算子
- 指數運算子 ** 為指數運算子, 可以計算 2的 4 次方 之類的運算
- Python 沒有遞增 ++ 及遞減運算子 --
== Class break ==
10:40 ~ 11:35
Chapter 3
Notes:
- 位元位移運算子
- 左移一個位元, 可以想成是 * 2的 1 次方
- 右移2個位元, 可以想成 除以 2 的 2 次方
11:35 ~ 12:00
自主練習
== Class break ==
13:00 ~ 14:15
Chapter 3
Notes:
- 邏輯運算子
- XOR,
- 相同的值為 0 ( T / T 或 F / F ), 不同值為 1 ( T / F 或 F / T )
- 針對選項只能選其一的時候可以使用, 例如 Male 或是 Female 只能選其一, 但是又不能都選或是都不選
相關練習程式碼
# coding=utf-8
# ** 為指數運算子, 可以計算 2的 4 次方 之類的運算
v = 2 ** 4
print(v)
# 字串運算子
a = '4'
b = '2'
# 字串運算子, 左右都必須是字串
print(a + b)
# + - * 的時候型態為 int
c = 5
d = 2
e = c + d
print(type(e))
print(e)
# 使用 / 的時候, 型態為 float
f = 5
g = 2
h = f / g
print(type(h))
print(h)
# 使用 // 來讓型態為 int,
i = 5
j = 2
k = i // 2
print( type(k) )
print(k)
# python 無遞增或是遞減運算子, 用 += 或是 -= 替代
l = 5
l += 8
print(l)
# 位元運算子
m = 128
# 左移一個位元, 可以想成是 * 2的 1 次方
print(m << 1)
n = 128
# 右移2個位元, 可以想成 除以 2 的 2 次方
print( n >> 2)
輸出結果
16
42
<class 'int'>
7
<class 'float'>
2.5
<class 'int'>
2
13
256
32
- If 敘述是一種 two-way 的決策敘述
練習程式
# coding=utf-8
# if 敘述
if True:
# 後面一定要放敘述, 可以使用 pass 來填充, 不會進行任何動作
print('Test')
# if else 方式
if True:
print('True')
else:
print('else')
# if-else if 方式
a = 4
if a > 2:
print("a between 3 ~ 5")
elif a > 5:
print("a > 5")
else:
print("a <= 2")
輸出結果
Test
True
a between 3 ~ 5
- 條件運算子
- Python 沒有三元運算子
== Class break ==
14:30 ~ 15:30
- for 迴圈
- 類似 for each, 利用 range類別產生數列
練習程式碼
# coding=utf-8
# for 迴圈練習
s = "abcdef"
c = 100
# 語法
# for item in range():
# statement
for c in s:
print(c)
# 這邊要注意會 列出 f, 因為會 overwrite 剛剛的 c, 不只限制在 for 迴圈內
print(c)
# 一般可能會用底線 _ 來命名, 代表可能不會使用這個變數
for _ in s:
print('----')
# 使用 range() 方式來進行, 起始值為 0
for v in range(10):
print(v)
# 從 2 開始, 不大於 5
for j in range(2, 5):
print(j)
# 從2開始不大於8, 間隔為 2
for k in range(2, 8, 2):
print(k)
輸出結果
a
b
c
d
e
f
f
----
----
----
----
----
----
0
1
2
3
4
5
6
7
8
9
2
3
4
2
4
6
- 進階迴圈控制
- break
- continue
練習程式碼
# coding=utf-8
# break 會中斷迴圈, continue 不會中斷迴圈
for v in range(5):
print(v, 'a')
if v == 2:
break
print(v, 'b')
print('==== continue ====')
for v in range(5):
print(v, 'a')
if v == 2:
continue
print(v, 'b')
輸出結果
0 a
0 b
1 a
1 b
2 a
=============
0 a
0 b
1 a
1 b
2 a
3 a
3 b
4 a
4 b
== Class break ==
15:45 ~ 17:00
Chapter 4
Notes:
- 序列資料
- Bytes
- 引號內容必須要 ASCII 字元
- 可用於存放二進位資料
- 圖片
- 聲音
- 影片
- List
- 表示法 []
- 參數必須是 iterable
練習的程式碼
# coding=utf-8
lst = [1, 3, 5, 7, 9, 11, 13]
print(lst, type(lst), len(lst))
# 透過 index 列出
print(lst[0])
# 如果index 是負數, 從右邊算, 但是也是不能超過範圍
print(lst[-2])
lst[0] = 8
print(lst)
輸出結果
[1, 3, 5, 7, 9, 11, 13] <class 'list'> 7
1
11
[8, 3, 5, 7, 9, 11, 13]
- Tuple
- 一種不可更動內容( immutable) 的序列資料
- 表示法 ()
- 資料分割 slicing
練習程式碼
# coding=utf-8
a = [1, 3, 5, 7, 9, 11]
# 如果是直接指定的方式, 會指向同一個物件, 但是只要 a 或是 b 改變, 會一起改變
b = a
# 利用 slicing 建立新的 list
c = a[:]
# 利用 slicing 取出前面 4 個
d = a[:5]
# 利用 id() 判斷是否同一個物件
print(a, id(a))
print(b, id(b))
print(c, id(c))
print(d, id(d))
輸出結果
[1, 3, 5, 7, 9, 11] 4315405768
[1, 3, 5, 7, 9, 11] 4315405768
[1, 3, 5, 7, 9, 11] 4315406024
[1, 3, 5, 7, 9] 4315405960
- List Comprehension
- 可以利用特定敘述來指定內容
- a = [ 0, 1, 2, 3, 4]
- 等同於 a = [ v for v in range(5) ]
練習的程式碼
# coding=utf-8
# 傳統的做法
a = [ 0, 1, 2, 3, 4]
# 使用 list comprehension 方式
# element for element in range()
b = [ v for v in range(5)]
# 另外一個好處是可以做一些處理, 例如 * 2
c = [ v * 2 for v in range(5)]
print(a)
print(b)
print(c)
輸出的結果
[0, 1, 2, 3, 4]
[0, 1, 2, 3, 4]
[0, 2, 4, 6, 8]
- Dictionary
- 類似 Map 的 key-value 的資料集合
- 建立方式 {key:value}
沒有留言:
張貼留言