Module 3a — ทบทวน (Review)

Variables and Types, Operators, Math — แบบฝึกทบทวน

ทบทวน Module 3a 📝

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

. . .

Note

ครอบคลุม: ตัวแปร · ชนิดข้อมูล · การแปลงชนิด · ตัวดำเนินการ · math ทบทวนเนื้อหาเต็มได้ที่ Module 3a 👈

Multiple Choice 🔘

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

คำถาม #1

ข้อใด ตั้งชื่อตัวแปรไม่ได้ ใน Python?

A. var_1
B. _temp
C. 1value
D. printThis

Tip

ตอบ: C — ชื่อตัวแปร ห้ามขึ้นต้นด้วยตัวเลข

คำถาม #2

ตั้งชื่อตัวแปรว่า my-score ได้หรือไม่?

A. ใช้ได้ปกติ
B. ใช้ไม่ได้
C. ใช้ได้ถ้าค่าเป็นบวก
D. ใช้ได้ใน f-string เท่านั้น

Important

ตอบ: B- คือเครื่องหมายลบ Python จะอ่าน my-score เป็น my - score (การลบ ไม่ใช่ชื่อตัวแปร) → ใช้ _ แทน เช่น my_score

คำถาม #3

type(10 / 2) ให้ผลเป็นชนิดใด?

A. int
B. float
C. str
D. error

Tip

ตอบ: B — การหาร / ให้ผลเป็น float เสมอ (5.0) แม้หารลงตัว

คำถาม #4

17 // 5 มีค่าเท่าใด?

A. 3.4
B. 3
C. 2
D. 3.0

Tip

ตอบ: B// คือ floor division ตัดเศษทิ้ง ได้ int = 3

คำถาม #5

17 % 5 มีค่าเท่าใด?

A. 2
B. 3
C. 3.4
D. 0

Tip

ตอบ: A% คือ เศษของการหาร (modulus): 17 = 5×3 + 2

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

2 ** 3 ** 2 มีค่าเท่าใด?

A. 64
B. 512
C. 256
D. 18

Important

ตอบ: B (512)** จับคู่จาก ขวา → ซ้าย จึงเป็น 2 ** (3 ** 2) = 2 ** 9 = 512

คำถาม #7

int('1234.5') ให้ผลลัพธ์ใด?

A. 1234
B. 1234.5
C. ValueError
D. 1235

Important

ตอบ: Cint() แปลง string ที่มีจุดทศนิยมไม่ได้ → ValueError (ต้องใช้ float() ก่อน)

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

True and False or True ให้ผลใด?

A. True
B. False
C. error

Tip

ตอบ: A (True)and ทำก่อน or : (True and False) or True = False or True = True

คำถาม #9

math.sqrt(144) ให้ผลใด?

A. 12
B. 12.0
C. 72
D. error

Tip

ตอบ: B (12.0)math.sqrt() คืนค่าเป็น float เสมอ

คำถาม #10

ข้อใด ใช้เป็นชื่อตัวแปรไม่ได้ เพราะเป็น keyword ของ Python?

A. sum
B. for
C. data
D. total

Important

ตอบ: Bfor เป็น keyword สงวนไว้ (เช็คได้ด้วย import keyword; keyword.kwlist)

คำถาม #11

ต้องการพิมพ์ข้อความ it's ok ควรใช้ quote แบบใด?

A. 'it's ok'
B. "it's ok"
C. ทั้ง A และ B

Tip

ตอบ: B — เมื่อในข้อความมี ' ให้ครอบด้วย "..." (ไม่งั้น ' จะปิด string กลางคัน)

คำถาม #12

print('A\nB') แสดงผลอย่างไร?

A. A\nB
B. AB
C. A แล้วขึ้นบรรทัดใหม่เป็น B
D. error

Tip

ตอบ: C\n คือ escape code ขึ้นบรรทัดใหม่ (newline)

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

x = 42 แล้วเขียนบรรทัดต่อมา x = "hello" — ทำได้หรือไม่?

A. ได้
B. ไม่ได้ ต้องเป็นชนิดเดิม
C. ได้ แต่ต้องแปลงก่อนด้วย str(x)

Tip

ตอบ: A — Python เป็น dynamic typing ตัวแปรเปลี่ยนไปเก็บชนิดอื่นได้

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

'5' + 5 ให้ผลใด?

A. 10
B. '55'
C. TypeError
D. 55

Important

ตอบ: Cstr + int ทำไม่ได้ → TypeError (ต้องแปลงชนิดให้ตรงกันก่อน)

คำถาม #15

int(9.99) ได้ค่าใด?

A. 10
B. 9
C. 9.99
D. error

Tip

ตอบ: Bint() ตัดทศนิยมทิ้ง (ไม่ปัดเศษ)

คำถาม #16

type(1.23e9) คือชนิดใด?

A. int
B. float
C. str
D. error

Tip

ตอบ: B1.23e9 คือ scientific notation (\(1.23 \times 10^9\)) เป็น float

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

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

เติมคำ #17

เติมโค้ดให้ var1 เก็บ ผลคูณ ของ 100 กับ 2 แล้วแสดงผล

var1 = 100 * 2
print(var1)
200

เติมคำ #18

s = '3.14' (string) — เติมโค้ดเพื่อแปลงเป็น float แล้วบวกกับ 1

s = '3.14'
result = float(s) + 1
print(result, type(result))
4.140000000000001 <class 'float'>

เติมคำ #19

เติมโค้ดให้คำนวณ พื้นที่วงกลม รัศมี 5 (ใช้ math)

\[area = \pi r^2\]

import math
r = 5
area = math.pi * r ** 2
print(f'{area:.2f}')
78.54

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

x = 7 — เติม operator ให้ตรวจว่า x เป็น เลขคู่ หรือไม่ (ผลเป็น bool)

x = 7
is_even = (x % 2 == 0)
print(is_even)
False

x % 2 == 0 → เศษการหาร 2 เท่ากับ 0 ไหม

เติมคำ #21

เติมโค้ดให้ s3 เก็บ 'hello' ต่อกับ 'there' โดยมีช่องว่างคั่น

s3 = 'hello' + ' ' + 'there'
print(s3, type(s3))
hello there <class 'str'>

เติมคำ #22

เติมโค้ดคำนวณ 5! (factorial) ด้วย math

import math
print(math.factorial(5))
120

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

เติมโค้ดแปลง 180 องศา เป็น radian (ควรได้ค่าประมาณ \(\pi\))

import math
print(math.radians(180))
3.141592653589793

ทำนายผล 🔮

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

ทำนายผล #24

x = 5
x += 3
x *= 2
print(x)

Tip

ผลลัพธ์: 16x = 55+3 = 88*2 = 16

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

print(7 // 2, 7 % 2, 2 ** 3)

Important

ผลลัพธ์: 3 1 8// ตัดเศษ (3) · % เศษเหลือ (1) · ** ยกกำลัง (8)

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

ไล่ค่าตัวแปรทีละบรรทัด

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

x = 3
x = x + 2
x = x * 4

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

บรรทัด คำสั่ง x
1 x = 3 ?
2 x = x + 2 ?
3 x = x * 4 ?

Tip

บรรทัด x
1 3
2 5
3 20

ฝั่งขวาของ = คำนวณก่อนด้วยค่าปัจจุบัน แล้วจึงเก็บกลับเข้า x

หา Bug 🐞

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

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

radius = 5
area = 3.14 * radius ^ 2      # อยากได้พื้นที่วงกลม
print(area)

ได้ผลแปลก ๆ — ผิดตรงไหน?

Important

ผิด: ^ ไม่ใช่ยกกำลัง! (เป็น bitwise XOR) → ผลผิด แก้: ยกกำลังใช้ **area = 3.14 * radius ** 2

Engineering Application 🔧

โจทย์คำนวณเชิงวิศวกรรม — ด้วยตัวดำเนินการและ math ที่เรียนมา

Engineering #28: กฎของโอห์ม

I = 2         # กระแส (A)
R = 220       # ความต้านทาน (Ω)
V = I * R
print(V)

Tip

ผลลัพธ์: 440 — กฎของโอห์ม \(V = IR = 2 \times 220 = 440\) V

Engineering #29: ความเค้น

F = 500       # แรง (N)
A = 0.25      # พื้นที่หน้าตัด (m²)
stress = F / A
print(stress)

Important

ผลลัพธ์: 2000.0 — ความเค้น \(\sigma = F/A\) · / ให้ผลเป็น float เสมอ → 2000.0

Engineering #30

เติมโค้ดคำนวณพลังงานจลน์ \(E_k = \tfrac12 m v^2\)

m = 2
v = 3
ke = 0.5 * m * v ** 2
print(ke)
9.0

Engineering #31: กำลังสูญเสียในตัวต้านทาน

I = 3         # กระแส (A)
R = 4         # ความต้านทาน (Ω)
P = I ** 2 * R
print(P)

Tip

ผลลัพธ์: 36 — กำลังสูญเสีย \(P = I^2 R = 3^2 \times 4 = 36\) W

ท้าทาย 🔥

โจทย์หลายขั้น — ต้องคิดให้ครบก่อนตอบ

ท้าทาย #32: ลำดับตัวดำเนินการ

print(10 - 2 ** 3 + 8 // 3 * 2)

คิดก่อน: ไล่ตามลำดับ **//,*-,+

Important

ผลลัพธ์: 62**3=8 · 8//3=2 · 2*2=4 · เหลือ 10 - 8 + 4 = 6

ท้าทาย #33: ดอกเบี้ยทบต้น

เติมสูตรเงินรวม \(A = P(1+r)^n\)

P = 1000
r = 0.05
n = 3
A = P * (1 + r) ** n
print(A)
1157.6250000000002

Important

สังเกต 1157.625 กลายเป็น 1157.6250000000002 — เป็น floating-point error (คอมพิวเตอร์เก็บ float เป็นฐานสอง แทนบางทศนิยมไม่ตรงเป๊ะ) หลักท้าย ๆ ไม่น่าเชื่อถือ · เวลาแสดงผลให้ปัดด้วย round() หรือ f'{A:.2f}' — อ่านเพิ่ม Module 3a: floating-point

จบการทบทวน 🎉

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