Module 5 — ทบทวน (Review)

Conditions (Control Structure 1) — แบบฝึกทบทวน

ทบทวน Module 5 📝

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

. . .

Note

ครอบคลุม: เงื่อนไข (relational, in, logical) · if · if-else · if-elif-else · nested if ทบทวนเนื้อหาเต็มได้ที่ Module 5 👈

Multiple Choice 🔘

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

คำถาม #1

5 > 3 ให้ผลเป็นชนิดใด?

A. int
B. bool
C. str

Tip

ตอบ: B — relational operator ให้ผลเป็น bool (True)

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

== กับ = ต่างกันอย่างไร?

A. เหมือนกัน
B. == เปรียบเทียบ, = กำหนดค่า
C. == กำหนดค่า, = เปรียบเทียบ

Important

ตอบ: B== คือ เปรียบเทียบ (ได้ bool), = คือ กำหนดค่า (assign) — อย่าสับสน!

คำถาม #3

'a' in 'cat' ให้ผลใด?

A. True
B. False
C. error

Tip

ตอบ: Ain ตรวจว่ามี 'a' อยู่ใน 'cat' หรือไม่ → True

คำถาม #4

True and False ให้ผลใด?

A. True
B. False
C. error

Tip

ตอบ: Band เป็นจริงเมื่อ ทั้งคู่ เป็น True

คำถาม #5

not (5 > 3) ให้ผลใด?

A. True
B. False
C. error

Tip

ตอบ: B5 > 3 เป็น True แล้ว not True = False

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

x = 70 < x < 10 ให้ผลใด?

A. True
B. False
C. error

Tip

ตอบ: A — Python รองรับ chained comparison = (0 < x) and (x < 10)True

คำถาม #7

โครงสร้าง if ที่ถูกต้องต้องมีอะไร?

A. : ท้ายเงื่อนไข + ย่อหน้า ในบรรทัดถัดไป
B. ; ท้ายบรรทัด
C. { } ครอบ

Tip

ตอบ: A — Python ใช้ : แล้ว ย่อหน้า (indentation) บอกขอบเขตของบล็อก

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

x = 5
if x > 10:
    print("A")
elif x > 3:
    print("B")
else:
    print("C")

พิมพ์อะไร?

A. A
B. B
C. C
D. ทั้งหมด

Important

ตอบ: Bif-elif-else ทำงาน เพียงสาขาเดียวx>10 เท็จ, x>3 จริง → B

คำถาม #9

x = 4x % 2 == 0 ใช้ตรวจสอบอะไร?

A. x เป็นเลขคู่
B. x หารด้วย 2 ลงตัวกี่ครั้ง
C. x มากกว่า 2

Tip

ตอบ: A — เศษการหาร 2 เท่ากับ 0 → เป็น เลขคู่

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

age = 20age >= 18 and age < 60 ให้ผลใด?

A. True
B. False
C. error — ไม่สามารถเชื่อม 2 เงื่อนไขด้วย and ได้

Tip

ตอบ: A — ทั้งสองเงื่อนไขจริง (20>=18 และ 20<60) → and ได้ True

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

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

เติมคำ #11

เติมเงื่อนไขให้ตรวจว่า score ผ่าน (≥ 50) หรือไม่

score = 65
if score >= 50:
    print("ผ่าน")
else:
    print("ไม่ผ่าน")
ผ่าน

เติมคำ #12

ตรวจว่า n เป็น เลขคู่หรือคี่

n = 7
if n % 2 == 0:
    print("even")
else:
    print("odd")
odd

เติมคำ #13

ใช้ if-elif-else ตัดเกรด: >=80 → A, >=50 → B, นอกนั้น → F

score = 72
if score >= 80:
    grade = "A"
elif score >= 50:
    grade = "B"
else:
    grade = "F"
print(grade)
B

เติมคำ #14

ใช้ in ตรวจว่าผลไม้ที่พิมพ์มา อยู่ในรายการ หรือไม่

fruits = ["apple", "banana", "cherry"]
x = "banana"
if x in fruits:
    print("มีขาย")
else:
    print("ไม่มี")
มีขาย

เติมคำ #15

รวมเงื่อนไขด้วย and: ผ่านเมื่อคะแนน ทั้ง 2 วิชา ≥ 50

math_score = 60
eng_score = 45
if math_score >= 50 and eng_score >= 50:
    print("ผ่านทั้งคู่")
else:
    print("ไม่ผ่าน")
ไม่ผ่าน

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

Nested if — ตรวจว่าตัวเลขเป็นบวก และเป็นเลขคู่หรือคี่

n = 8
if n > 0:
    if n % 2 == 0:
        print("บวก-คู่")
    else:
        print("บวก-คี่")
else:
    print("ไม่เป็นบวก")
บวก-คู่

ทำนายผล 🔮

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

ทำนายผล #17

x = 5
if x > 3:
    x += 1
print(x)

Tip

ผลลัพธ์: 65 > 3 เป็นจริง → เข้าบล็อก x += 1x = 6

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

score = 72
if score >= 80:
    print("A")
elif score >= 50:
    print("B")
else:
    print("C")

Important

ผลลัพธ์: Bif-elif-else ทำเพียงสาขาเดียว72>=80 เท็จ, 72>=50 จริง → B

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

ไล่ดูว่าโค้ดเข้าเงื่อนไขไหน

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

n = 8
if n > 0:
    if n % 2 == 0:
        result = "บวก-คู่"
    else:
        result = "บวก-คี่"
else:
    result = "ไม่บวก"

result เป็นอะไร? ไล่ทีละเงื่อนไข

เงื่อนไข จริง/เท็จ
n > 0 ?
n % 2 == 0 ?

Tip

เงื่อนไข จริง/เท็จ
n > 0 (8 > 0) จริง → เข้า nested if
n % 2 == 0 (0 == 0) จริง

result = "บวก-คู่"

หา Bug 🐞

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

หา Bug #20

score = 50
if score = 50:
    print("พอดี 50")

ผิดตรงไหน?

Important

ผิด: ใช้ = (กำหนดค่า) ในเงื่อนไข → SyntaxError · การเปรียบเทียบต้องใช้ == แก้: if score == 50:

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

age = 20
if age >= 18
    print("ผู้ใหญ่")

ผิดตรงไหน?

Important

ผิด: ลืม : ท้ายเงื่อนไข if → SyntaxError แก้: if age >= 18: แล้วย่อหน้าบรรทัดถัดไป

เจาะจุดยาก: เส้นทางเงื่อนไข 🎯

ฝึกเพิ่ม — if-elif ทำสาขาเดียว & nested if

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

x = 100
if x > 50:
    print("A")
elif x > 10:
    print("B")
print("done")

Important

ผลลัพธ์:

A
done

if เป็นจริงแล้ว → ข้าม elif ทั้งหมด · ส่วน print("done") อยู่นอก if จึงทำเสมอ

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

score = 45
if score >= 50:
    result = "ผ่าน"
else:
    if score >= 40:
        result = "ซ่อม"
    else:
        result = "ตก"

result เป็นอะไร? ไล่ทีละเงื่อนไข

เงื่อนไข จริง/เท็จ
score >= 50 ?
score >= 40 ?

Tip

เงื่อนไข จริง/เท็จ
score >= 50 (45>=50) เท็จ → เข้า else
score >= 40 (45>=40) จริง

result = "ซ่อม"

Engineering Application 🔧

เงื่อนไขกับเกณฑ์ความปลอดภัย/มาตรฐาน

Engineering #24: Safety Factor

strength = 250    # กำลังวัสดุ (MPa)
stress = 180      # ความเค้นใช้งาน (MPa)
if strength / stress >= 1.5:
    print("ปลอดภัย")
else:
    print("เสี่ยง")

Important

ผลลัพธ์: เสี่ยง — safety factor = 250/180 ≈ 1.39 ซึ่ง < 1.5 → ไม่ผ่านเกณฑ์

Engineering #25: มาตรฐานฝุ่น

เติมเงื่อนไขตรวจว่า PM2.5 เกินมาตรฐาน (> 50)

pm = 75
if pm > 50:
    print("เกินมาตรฐาน")
else:
    print("ปกติ")
เกินมาตรฐาน

Engineering #26: ระดับอุณหภูมิมอเตอร์

temp = 85         # อุณหภูมิมอเตอร์ (°C)
if temp >= 90:
    print("อันตราย")
elif temp >= 70:
    print("เฝ้าระวัง")
else:
    print("ปกติ")

Important

ผลลัพธ์: เฝ้าระวัง85>=90 เท็จ, 85>=70 จริง → หยุดที่สาขานี้ (if-elif ทำสาขาเดียว)

ท้าทาย 🔥

เงื่อนไขซับซ้อน — รวม logical operator และหลายสาขา

ท้าทาย #27: ปีอธิกสุรทิน

ปีอธิกสุรทิน = หารด้วย 4 ลงตัว แต่ไม่ลงตัวด้วย 100 หรือ ลงตัวด้วย 400 — เติมเงื่อนไข

year = 2000
if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:
    print("อธิกสุรทิน")
else:
    print("ปกติ")
อธิกสุรทิน

ท้าทาย #28: จำนวนคำตอบสมการกำลังสอง

a, b, c = 1, -5, 6
d = b**2 - 4*a*c        # discriminant
if d > 0:
    print("2 คำตอบ")
elif d == 0:
    print("1 คำตอบ")
else:
    print("ไม่มีคำตอบจริง")

Important

ผลลัพธ์: 2 คำตอบ\(d = (-5)^2 - 4(1)(6) = 25 - 24 = 1 > 0\) → มี 2 คำตอบจริง

เขียนเอง: ออกแบบเงื่อนไขเอง 🛠️

ไม่มี ____ ให้เติม · ไม่บอกว่าต้องใช้ if/elif กี่ชั้น — ตัดสินใจโครงสร้างเอง

เขียนเอง #29: จำแนกชนิดสามเหลี่ยม

รับความยาว 3 ด้าน a, b, c แล้วบอกว่าเป็น ด้านเท่า / หน้าจั่ว / ด้านไม่เท่า หรือ ไม่เป็นสามเหลี่ยม

คิดก่อน: เป็นสามเหลี่ยมได้ ก็ต่อเมื่อผลบวกของด้านสองด้านใด ๆ มากกว่า ด้านที่เหลือ (ต้องเช็กครบ 3 คู่) — ตรวจ “เป็นสามเหลี่ยมไหม” ก่อน แล้วค่อยดูชนิด

a, b, c = 5, 5, 8
if a <= 0 or b <= 0 or c <= 0 or a+b <= c or a+c <= b or b+c <= a:
    print("ไม่เป็นสามเหลี่ยม")
elif a == b == c:
    print("ด้านเท่า")
elif a == b or b == c or a == c:
    print("หน้าจั่ว")
else:
    print("ด้านไม่เท่า")
หน้าจั่ว

เขียนเอง #30: ค่าไฟแบบขั้นบันได

ค่าไฟคิดแบบ ขั้นบันได (ก้าวหน้า) ตามจำนวนหน่วย units:

  • 150 หน่วยแรก — หน่วยละ 2.5 บาท
  • หน่วยที่ 151–400 — หน่วยละ 4.0 บาท
  • หน่วยที่ 401 ขึ้นไป — หน่วยละ 5.5 บาท

จงคำนวณค่าไฟรวม

คิดก่อน: แต่ละขั้นคิดเฉพาะส่วนที่เกินของขั้นก่อนหน้า ไม่ใช่เอาราคาขั้นเดียวคูณทั้งหมด

units = 350
if units <= 150:
    bill = units * 2.5
elif units <= 400:
    bill = 150*2.5 + (units-150)*4.0
else:
    bill = 150*2.5 + 250*4.0 + (units-400)*5.5
print(bill, "บาท")
1175.0 บาท

จบการทบทวน 🎉

ทบทวนเนื้อหาเต็มได้ที่ Module 5