Module 6 — ทบทวน (Review)

while-Loop (Control Structure 2) — แบบฝึกทบทวน

ทบทวน Module 6 📝

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

. . .

Note

ครอบคลุม: การทำซ้ำ · while · ส่วนประกอบ (init/condition/update) · break · continue ทบทวนเนื้อหาเต็มได้ที่ Module 6 👈

Multiple Choice 🔘

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

คำถาม #1

ลูป while จะทำงานวนซ้ำตราบเท่าที่เงื่อนไขเป็นค่าใด?

A. True
B. False
C. 0

Tip

ตอบ: A — วนทำงานขณะเงื่อนไขเป็น True และออกเมื่อเป็น False

คำถาม #2

ส่วนประกอบ 3 ส่วนของการวนลูปคือข้อใด?

A. start, stop, step
B. init, condition, update
C. if, elif, else

Tip

ตอบ: B — กำหนดค่าเริ่มต้น (init) · ทดสอบเงื่อนไข (condition) · ปรับปรุงค่า (update)

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

ถ้า ลืม update ตัวแปรเงื่อนไขในลูป while จะเกิดอะไร?

A. ลูปไม่ทำงาน
B. ลูปวนไม่รู้จบ (infinite loop)
C. error ทันที

Important

ตอบ: B — เงื่อนไขไม่มีวันเป็น Falseinfinite loop

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

i = 10
while i < 5:
    print(i)
    i += 1

พิมพ์อะไร?

A. 10
B. ไม่พิมพ์อะไรเลย
C. วนไม่จบ

Important

ตอบ: B — เงื่อนไข 10 < 5 เป็น False ตั้งแต่แรก → ไม่เข้าลูปเลย

คำถาม #5

คำสั่ง break ทำอะไร?

A. ข้ามไปรอบถัดไป
B. ออกจากลูปทันที
C. เริ่มลูปใหม่

Tip

ตอบ: Bbreak ออกจากลูปทันที (ไม่ทำรอบที่เหลือ)

คำถาม #6

คำสั่ง continue ทำอะไร?

A. ข้ามคำสั่งที่เหลือ ไปเริ่มรอบถัดไป
B. ออกจากลูป
C. หยุดโปรแกรม

Tip

ตอบ: Acontinue ข้ามไปตรวจเงื่อนไขรอบถัดไปทันที

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

i = 1
while i <= 3:
    print(i, end=" ")
    i += 1

พิมพ์อะไร?

A. 1 2 3
B. 1 2 3 4
C. 0 1 2

Tip

ตอบ: A — เริ่ม i=1 วนพิมพ์จนถึง i=3 (เมื่อ i=4 เงื่อนไขเท็จ → ออก)

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

while True: จะหยุดได้อย่างไร?

A. หยุดเองอัตโนมัติเมื่อครบ 1,000 รอบ
B. ต้องมี break ภายในลูป
C. ต้องเปลี่ยน True เป็นตัวแปร flag และตั้งเป็น False จากภายนอกลูป

Important

ตอบ: Bwhile True วนไม่จบ ต้องใช้ break (เช่น เมื่อพบเงื่อนไขที่ต้องการ) จึงจะออก

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

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

เติมคำ #9

พิมพ์เลข 1 ถึง 5 ด้วย while

i = 1
while i <= 5:
    print(i, end=" ")
    i += 1
1 2 3 4 5

เติมคำ #10

หา ผลรวม ของเลข 1 ถึง 5

total = 0
i = 1
while i <= 5:
    total += i
    i += 1
print(total)
15

เติมคำ #11

นับ ถอยหลัง จาก 5 ถึง 1

i = 5
while i >= 1:
    print(i, end=" ")
    i -= 1
5 4 3 2 1

เติมคำ #12

ใช้ break หยุดเมื่อเจอค่าแรกที่ มากกว่า 10

data = [3, 7, 9, 12, 5, 20]
i = 0
while i < len(data):
    if data[i] > 10:
        print("เจอ:", data[i])
        break
    i += 1
เจอ: 12

เติมคำ #13

ใช้ continue พิมพ์เฉพาะ เลขคี่ จาก 1 ถึง 6

i = 0
while i < 6:
    i += 1
    if i % 2 == 0:
        continue
    print(i, end=" ")
1 3 5

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

พิมพ์ สูตรคูณแม่ 2 (2×1 ถึง 2×5)

n = 2
i = 1
while i <= 5:
    print(f"{n} x {i} = {n*i}")
    i += 1
2 x 1 = 2
2 x 2 = 4
2 x 3 = 6
2 x 4 = 8
2 x 5 = 10

ทำนายผล 🔮

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

ทำนายผล #15

i = 3
while i > 0:
    print(i, end=" ")
    i -= 1

Tip

ผลลัพธ์: 3 2 1 — วนพิมพ์ขณะ i > 0 แล้วลดทีละ 1 (เมื่อ i=0 เงื่อนไขเท็จ → ออก)

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

i = 0
while i < 6:
    i += 1
    if i % 2 == 0:
        continue
    print(i, end=" ")

Important

ผลลัพธ์: 1 3 5continue ข้ามการ print เมื่อ i เป็นเลขคู่ → พิมพ์เฉพาะเลขคี่

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

ไล่ค่าตัวแปรทีละรอบของลูป

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

total = 0
i = 1
while i <= 3:
    total += i
    i += 1

เติมค่าหลังจบแต่ละรอบ

รอบ i (ก่อนเช็ค) total
1 1 ?
2 2 ?
3 3 ?

Tip

รอบ total หลังรอบ
1 1
2 3
3 6

หลังรอบที่ 3 i กลายเป็น 4 → 4 <= 3 เท็จ → ออกจากลูป · total = 6

หา Bug 🐞

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

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

i = 1
while i <= 5:
    print(i, end=" ")

โปรแกรมพิมพ์ 1 ไม่หยุด — ผิดตรงไหน?

Important

ผิด: ลืม update i → เงื่อนไข i <= 5 เป็นจริงตลอด → infinite loop แก้: เพิ่ม i += 1 ในลูป

Engineering Application 🔧

ใช้ while กับกระบวนการที่ทำซ้ำจนถึงเกณฑ์

Engineering #19: เติมถังน้ำ

volume = 0
t = 0
while volume < 100:
    volume += 30      # เติม 30 L ต่อรอบ
    t += 1
print(t)

ใช้กี่รอบถึงเต็ม (≥ 100 L)?

Important

ผลลัพธ์: 4 — 30 → 60 → 90 → 120 (รอบที่ 4 ทะลุ 100 แล้วจึงหยุด)

Engineering #20

เติมโค้ดสะสมพลังงาน ครั้งละ 10 J จนครบ 5 รอบการวัด

energy = 0
i = 0
while i < 5:
    energy += 10
    i += 1
print(energy, "J")
50 J

Engineering #21: แบตเตอรี่คายประจุ

battery = 100     # % ประจุ
cycles = 0
while battery > 0:
    battery -= 25     # ใช้ไป 25% ต่อรอบ
    cycles += 1
print(cycles)

กี่รอบจึงหมด?

Important

ผลลัพธ์: 4 — 100 → 75 → 50 → 25 → 0 (รอบที่ 4 ประจุเหลือ 0 แล้วหยุด)

ท้าทาย 🔥

Algorithm จริง — ใช้ % และ // แกะตัวเลขทีละหลัก

ท้าทาย #22: กลับตัวเลข

12344321 เติม operator แกะหลักสุดท้ายด้วย % แล้วตัดออกด้วย //

n = 1234
rev = 0
while n > 0:
    rev = rev * 10 + n % 10
    n = n // 10
print(rev)
4321

ท้าทาย #23: ห.ร.ม. (Euclid)

a, b = 48, 36
while b > 0:
    a, b = b, a % b
print(a)

a สุดท้ายเป็นเท่าไร?

Important

ผลลัพธ์: 12 — วิธี Euclid: (48,36)(36,12)(12,0) แล้วหยุด → ห.ร.ม. = 12

เขียนเอง: ออกแบบลูปเอง 🛠️

ไม่มี ____ ให้เติม · เลือกเงื่อนไขจบลูป + วางส่วนประกอบ (init/condition/update) เอง

เขียนเอง #24: รากดิจิทัล (digital root)

บวกเลขทุกหลักของ n ซ้ำ ๆ จนเหลือเลขหลักเดียว เช่น 9875 → 29 → 11 → 2 แล้วพิมพ์ผลสุดท้าย

คิดก่อน: ต้องใช้ลูป ซ้อน — ลูปนอกวนจนกว่า n จะเหลือหลักเดียว (n >= 10) · ลูปในบวกเลขทีละหลักด้วย % 10 และ // 10

n = 9875
while n >= 10:
    s = 0
    while n > 0:
        s += n % 10
        n //= 10
    n = s
print(n)
2

เขียนเอง #25: จำนวนก้าว Collatz

กฎ: ถ้า n คู่n // 2 · ถ้า คี่3*n + 1 · ทำซ้ำจนกว่า n จะเป็น 1 แล้วนับว่าใช้ กี่ก้าว

คิดก่อน: เราไม่รู้ล่วงหน้าว่าต้องวนกี่รอบ → ต้องเลือก while (ไม่ใช่ for) · อย่าลืมตัวนับ steps

n = 27
steps = 0
while n != 1:
    if n % 2 == 0:
        n //= 2
    else:
        n = 3*n + 1
    steps += 1
print(steps)
111

จบการทบทวน 🎉

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