Collection Data Types: Tuple, Set, Dictionary — แบบฝึกทบทวน
. . .
Note
ครอบคลุม: Tuple · Set · Dictionary · Collection of Collections ทบทวนเนื้อหาเต็มได้ที่ Module 4b 👈
เลือกคำตอบที่ถูกต้อง — เฉลยจะปรากฏเมื่อกดถัดไป
Tuple สร้างด้วยเครื่องหมายใด?
A. [ ]
B. ( )
C. { }
Tip
ตอบ: B — Tuple ใช้ ( ) ( [ ] = list, { } = set/dict )
tup = (1, 2, 3) แล้ว tup[0] = 99 จะเกิดอะไร?
A. (99, 2, 3)
B. TypeError
C. [99, 2, 3]
Important
ตอบ: B — Tuple เป็น immutable แก้ไขค่าภายในไม่ได้ → TypeError
{1, 2, 2, 3, 3} มีสมาชิกกี่ตัว?
A. 5
B. 3
C. 2
Tip
ตอบ: B — Set เก็บข้อมูล ไม่ซ้ำ (unique) → เหลือ {1, 2, 3}
ข้อใดสร้าง set ว่าง ได้ถูกต้อง?
A. {}
B. set()
C. []
Important
ตอบ: B — {} สร้าง dict ว่าง ไม่ใช่ set! set ว่างต้องใช้ set()
s = {1, 2, 3} — s[0] ให้ผลใด?
A. 1
B. TypeError
C. None
Important
ตอบ: B — Set ไม่มีลำดับ (unordered) จึงไม่มี index → อ้างด้วย [ ] ไม่ได้
{1, 2, 3} | {3, 4, 5} (union) ให้ผลใด?
A. {3}
B. {1, 2, 3, 4, 5}
C. {1, 2, 4, 5}
Tip
ตอบ: B — | (union) รวมสมาชิกทั้งหมด (ไม่ซ้ำ)
{1, 2, 3} & {3, 4, 5} (intersection) ให้ผลใด?
A. {3}
B. {1, 2, 3, 4, 5}
C. { }
Tip
ตอบ: A — & (intersection) เอาเฉพาะสมาชิก ร่วมกัน → {3}
Dictionary เข้าถึงข้อมูลด้วยอะไร?
A. index ตัวเลข
B. key
C. ทั้งสองอย่าง
Tip
ตอบ: B — Dict อ้างอิงด้วย key เช่น person["name"]
ดึงค่าจาก dict ด้วย key ที่ไม่มีอยู่ จะเกิดอะไร?
A. คืน None
B. KeyError
C. คืน ''
Important
ตอบ: B — key ที่ไม่มี → KeyError
ข้อใด ใช้เป็น key ของ dict ไม่ได้?
A. "name" (str)
B. 1 (int)
C. [1, 2] (list)
Important
ตอบ: C — key ต้องเป็นชนิด immutable (str, int, float, tuple) — list เป็น key ไม่ได้
.items() ของ dict คืนค่าในรูปแบบใด?
A. list ของ key
B. list ของ (key, value)
C. list ของ value
Tip
ตอบ: B — .items() คืน list ของ Tuple (key, value) (ส่วน .keys() คืนเฉพาะ key)
items = [["John", 180], ["Jane", 176]] — items[1][1] คือค่าใด?
A. "Jane"
B. 176
C. 180
Tip
ตอบ: B — items[1] = ["Jane", 176] แล้ว [1] = 176 (เข้าถึง 2 ชั้น)
เติมโค้ดในช่อง ____ แล้วกด Run
สร้าง tuple แล้วเข้าถึงสมาชิก ตัวสุดท้าย
แปลง tuple เป็น list เพื่อแก้ไข แล้วแปลง กลับเป็น tuple
หา union และ intersection ของ 2 set
เพิ่มสมาชิกด้วย .add() และลบแบบ ไม่ error ด้วย .discard()
สร้าง dict แล้ว เข้าถึงค่า ด้วย key
เพิ่ม key ใหม่ "gpa" ให้กับ dict
ดึงรายการ key ทั้งหมด ออกมาเป็น list
เข้าถึงข้อมูลใน List of Dict แล้วคำนวณค่าเฉลี่ยส่วนสูง
โค้ดจะพิมพ์อะไร? — ทายก่อน แล้วกดถัดไปดูเฉลย
Tip
ผลลัพธ์: 3 — Set เก็บข้อมูลไม่ซ้ำ → เหลือ {1, 2, 3} → 3 ตัว
Important
ผลลัพธ์: {2, 3} {1, 2, 3, 4} — & = ร่วมกัน (intersection) · | = รวมทั้งหมด (union)
ไล่ค่า dict ทีละคำสั่ง
เติมค่า 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 ใหม่)
โค้ดผิดตรงไหน — ทำไม
ผิดตรงไหน?
Important
ผิด: Tuple เป็น immutable แก้ไขค่าภายในไม่ได้ → TypeError แก้: ถ้าต้องแก้ ใช้ list [1, 2, 3] หรือแปลง list(tup) ก่อน
ผิดตรงไหน?
Important
ผิด: {} คือ dict ว่าง ไม่ใช่ set → .add() ใช้ไม่ได้ (AttributeError) แก้: set ว่างต้องใช้ empty = set()
Dict เก็บคุณสมบัติวัสดุ · Set หาค่าที่ไม่ซ้ำ
Tip
ผลลัพธ์: 7850 kg/m^3 — Dict เก็บคู่ วัสดุ → ความหนาแน่น เข้าถึงด้วย key
Important
ผลลัพธ์: 3 — set() ตัดค่าซ้ำ → เหลือสถานีจริง {101, 102, 103} = 3 สถานี
Tip
ผลลัพธ์: 5.0 — แตก tuple พิกัดแล้วหาระยะจากจุดกำเนิด \(\sqrt{x^2+y^2} = \sqrt{9+16} = 5\)
เข้าถึงข้อมูลซ้อนหลายชั้น แล้วคำนวณต่อ
Important
ผลลัพธ์: 85.0 — students["A"] = [80, 90] → sum=170, len=2 → 170/2 = 85.0 (เข้าถึง dict → list แล้วคำนวณต่อ)
ทบทวนเนื้อหาเต็มได้ที่ Module 4b · กลับไป Module 4a
🏠 259201 — Module 4b ทบทวน | ภาควิชาวิศวกรรมคอมพิวเตอร์ คณะวิศวกรรมศาสตร์ มหาวิทยาลัยเชียงใหม่