Module 4b — ทบทวน (Review)

Collection Data Types: Tuple, Set, Dictionary — แบบฝึกทบทวน

ทบทวน Module 4b 📝

  • Multiple Choice — เลือกคำตอบที่ถูก แล้วกดถัดไปเพื่อดูเฉลย
  • เติมคำในช่องว่าง — ลองพิมพ์ใน Live Code แล้วรัน
  • ทำนายผล · ไล่ค่าตัวแปร · หา Bug — ฝึกอ่านโค้ดให้เข้าใจจริง

. . .

Note

ครอบคลุม: Tuple · Set · Dictionary · Collection of Collections ทบทวนเนื้อหาเต็มได้ที่ Module 4b 👈

Multiple Choice 🔘

เลือกคำตอบที่ถูกต้อง — เฉลยจะปรากฏเมื่อกดถัดไป

คำถาม #1

Tuple สร้างด้วยเครื่องหมายใด?

A. [ ]
B. ( )
C. { }

Tip

ตอบ: B — Tuple ใช้ ( ) ( [ ] = list, { } = set/dict )

คำถาม #2: ชวนคิด

tup = (1, 2, 3) แล้ว tup[0] = 99 จะเกิดอะไร?

A. (99, 2, 3)
B. TypeError
C. [99, 2, 3]

Important

ตอบ: B — Tuple เป็น immutable แก้ไขค่าภายในไม่ได้ → TypeError

คำถาม #3

{1, 2, 2, 3, 3} มีสมาชิกกี่ตัว?

A. 5
B. 3
C. 2

Tip

ตอบ: B — Set เก็บข้อมูล ไม่ซ้ำ (unique) → เหลือ {1, 2, 3}

คำถาม #4

ข้อใดสร้าง set ว่าง ได้ถูกต้อง?

A. {}
B. set()
C. []

Important

ตอบ: B{} สร้าง dict ว่าง ไม่ใช่ set! set ว่างต้องใช้ set()

คำถาม #5: ชวนคิด

s = {1, 2, 3}s[0] ให้ผลใด?

A. 1
B. TypeError
C. None

Important

ตอบ: B — Set ไม่มีลำดับ (unordered) จึงไม่มี index → อ้างด้วย [ ] ไม่ได้

คำถาม #6

{1, 2, 3} | {3, 4, 5} (union) ให้ผลใด?

A. {3}
B. {1, 2, 3, 4, 5}
C. {1, 2, 4, 5}

Tip

ตอบ: B| (union) รวมสมาชิกทั้งหมด (ไม่ซ้ำ)

คำถาม #7

{1, 2, 3} & {3, 4, 5} (intersection) ให้ผลใด?

A. {3}
B. {1, 2, 3, 4, 5}
C. { }

Tip

ตอบ: A& (intersection) เอาเฉพาะสมาชิก ร่วมกัน{3}

คำถาม #8

Dictionary เข้าถึงข้อมูลด้วยอะไร?

A. index ตัวเลข
B. key
C. ทั้งสองอย่าง

Tip

ตอบ: B — Dict อ้างอิงด้วย key เช่น person["name"]

คำถาม #9: ชวนคิด

ดึงค่าจาก dict ด้วย key ที่ไม่มีอยู่ จะเกิดอะไร?

A. คืน None
B. KeyError
C. คืน ''

Important

ตอบ: B — key ที่ไม่มี → KeyError

คำถาม #10: ชวนคิด

ข้อใด ใช้เป็น key ของ dict ไม่ได้?

A. "name" (str)
B. 1 (int)
C. [1, 2] (list)

Important

ตอบ: C — key ต้องเป็นชนิด immutable (str, int, float, tuple) — list เป็น key ไม่ได้

คำถาม #11

.items() ของ dict คืนค่าในรูปแบบใด?

A. list ของ key
B. list ของ (key, value)
C. list ของ value

Tip

ตอบ: B.items() คืน list ของ Tuple (key, value) (ส่วน .keys() คืนเฉพาะ key)

คำถาม #12: ชวนคิด

items = [["John", 180], ["Jane", 176]]items[1][1] คือค่าใด?

A. "Jane"
B. 176
C. 180

Tip

ตอบ: Bitems[1] = ["Jane", 176] แล้ว [1] = 176 (เข้าถึง 2 ชั้น)

เติมคำในช่องว่าง ✏️

เติมโค้ดในช่อง ____ แล้วกด Run

เติมคำ #13

สร้าง tuple แล้วเข้าถึงสมาชิก ตัวสุดท้าย

tup = (10, 20, 30, 40)
print(tup[-1])
40

เติมคำ #14

แปลง tuple เป็น list เพื่อแก้ไข แล้วแปลง กลับเป็น tuple

x = ("apple", "banana")
y = list(x)
y.append("cherry")
z = tuple(y)
print(z)
('apple', 'banana', 'cherry')

เติมคำ #15

หา union และ intersection ของ 2 set

a = {1, 2, 3}
b = {3, 4, 5}
print(a | b)   # union
print(a & b)   # intersection
{1, 2, 3, 4, 5}
{3}

เติมคำ #16

เพิ่มสมาชิกด้วย .add() และลบแบบ ไม่ error ด้วย .discard()

s = {1, 2, 3}
s.add(4)
s.discard(99)   # discard ไม่ error แม้ไม่มีค่านั้น
print(s)
{1, 2, 3, 4}

เติมคำ #17

สร้าง dict แล้ว เข้าถึงค่า ด้วย key

person = {"name": "Ann", "age": 20}
print(person["name"])
Ann

เติมคำ #18

เพิ่ม key ใหม่ "gpa" ให้กับ dict

person = {"name": "Ann", "age": 20}
person["gpa"] = 3.5
print(person)
{'name': 'Ann', 'age': 20, 'gpa': 3.5}

เติมคำ #19

ดึงรายการ key ทั้งหมด ออกมาเป็น list

person = {"name": "Ann", "age": 20, "gpa": 3.5}
print(list(person.keys()))
['name', 'age', 'gpa']

เติมคำ #20: ชวนคิด

เข้าถึงข้อมูลใน List of Dict แล้วคำนวณค่าเฉลี่ยส่วนสูง

items = [
    {"name": "John", "height": 180},
    {"name": "Jane", "height": 176},
]
avg = (items[0]["height"] + items[1]["height"]) / len(items)
print(avg)
178.0

ทำนายผล 🔮

โค้ดจะพิมพ์อะไร? — ทายก่อน แล้วกดถัดไปดูเฉลย

ทำนายผล #21

s = {1, 2, 2, 3, 3, 3}
print(len(s))

Tip

ผลลัพธ์: 3 — Set เก็บข้อมูลไม่ซ้ำ → เหลือ {1, 2, 3} → 3 ตัว

ทำนายผล #22: ชวนคิด

a = {1, 2, 3}
b = {2, 3, 4}
print(a & b, a | b)

Important

ผลลัพธ์: {2, 3} {1, 2, 3, 4}& = ร่วมกัน (intersection) · | = รวมทั้งหมด (union)

ไล่ค่าตัวแปร 🔍

ไล่ค่า dict ทีละคำสั่ง

ไล่ค่าตัวแปร #23: ชวนคิด

d = {}
d['a'] = 1
d['b'] = 2
d['a'] = 5

เติมค่า d หลังแต่ละบรรทัด

บรรทัด คำสั่ง d
1 d = {} ?
2 d['a'] = 1 ?
3 d['b'] = 2 ?
4 d['a'] = 5 ?

Tip

บรรทัด d
1 {}
2 {'a': 1}
3 {'a': 1, 'b': 2}
4 {'a': 5, 'b': 2}

บรรทัด 4 ใช้ key 'a' เดิม → เขียนทับค่าเดิม (ไม่เพิ่ม key ใหม่)

หา Bug 🐞

โค้ดผิดตรงไหน — ทำไม

หา Bug #24

tup = (1, 2, 3)
tup[0] = 99      # อยากเปลี่ยนตัวแรก
print(tup)

ผิดตรงไหน?

Important

ผิด: Tuple เป็น immutable แก้ไขค่าภายในไม่ได้ → TypeError แก้: ถ้าต้องแก้ ใช้ list [1, 2, 3] หรือแปลง list(tup) ก่อน

หา Bug #25: ชวนคิด

empty = {}          # อยากได้ set ว่าง
empty.add(5)
print(empty)

ผิดตรงไหน?

Important

ผิด: {} คือ dict ว่าง ไม่ใช่ set → .add() ใช้ไม่ได้ (AttributeError) แก้: set ว่างต้องใช้ empty = set()

Engineering Application 🔧

Dict เก็บคุณสมบัติวัสดุ · Set หาค่าที่ไม่ซ้ำ

Engineering #26: สมบัติวัสดุ

density = {"steel": 7850, "aluminum": 2700}
print(density["steel"], "kg/m^3")

Tip

ผลลัพธ์: 7850 kg/m^3 — Dict เก็บคู่ วัสดุ → ความหนาแน่น เข้าถึงด้วย key

Engineering #27: สถานีวัดที่ไม่ซ้ำ

station_ids = [101, 102, 101, 103, 102]
print(len(set(station_ids)))

Important

ผลลัพธ์: 3set() ตัดค่าซ้ำ → เหลือสถานีจริง {101, 102, 103} = 3 สถานี

Engineering #28: ระยะระหว่างจุด

point = (3, 4)          # พิกัด (x, y)
x, y = point            # unpack tuple
print((x**2 + y**2) ** 0.5)

Tip

ผลลัพธ์: 5.0 — แตก tuple พิกัดแล้วหาระยะจากจุดกำเนิด \(\sqrt{x^2+y^2} = \sqrt{9+16} = 5\)

ท้าทาย 🔥

เข้าถึงข้อมูลซ้อนหลายชั้น แล้วคำนวณต่อ

ท้าทาย #29: เฉลี่ยจาก Dict ของ List

students = {"A": [80, 90], "B": [70, 60]}
print(sum(students["A"]) / len(students["A"]))

Important

ผลลัพธ์: 85.0students["A"] = [80, 90]sum=170, len=2170/2 = 85.0 (เข้าถึง dict → list แล้วคำนวณต่อ)

จบการทบทวน 🎉

ทบทวนเนื้อหาเต็มได้ที่ Module 4b · กลับไป Module 4a