Python ลูป while, break, continue



ลูป for เหมาะกับกรณีที่รู้ล่วงหน้าว่าจะวนกี่รอบ หรือวนบนข้อมูลที่มีอยู่แล้ว แต่บางงานเราไม่รู้จำนวนรอบ เช่น “ถามรหัสผ่านไปเรื่อย ๆ จนกว่าจะถูก” งานแบบนี้ใช้ while

while ทำงานยังไง

while แปลตรงตัวว่า “ตราบใดที่” ตราบใดที่เงื่อนไขยังเป็นจริง มันจะวนทำบล็อกข้างในซ้ำไปเรื่อย ๆ

count = 1

while count <= 5:
    print(f"รอบที่ {count}")
    count += 1

print("จบลูป")

ผลลัพธ์:

รอบที่ 1
รอบที่ 2
รอบที่ 3
รอบที่ 4
รอบที่ 5
จบลูป

โครงสร้างสำคัญของ while มีสามส่วนที่ต้องครบ

  1. ตั้งค่าเริ่มต้น ก่อนเข้าลูป (count = 1)
  2. เงื่อนไข ที่จะพาออกจากลูปได้ (count <= 5)
  3. อัปเดตค่า ในลูป เพื่อให้เงื่อนไขเข้าใกล้จุดจบ (count += 1)

ระวังลูปไม่รู้จบ

ถ้าลืมอัปเดตค่า เงื่อนไขจะเป็นจริงตลอดไป โปรแกรมค้าง

count = 1
while count <= 5:
    print(count)
    # ลืม count += 1 — พิมพ์ 1 ไม่หยุด

ถ้าเจอแบบนี้กด Ctrl + C ในเทอร์มินัลเพื่อหยุดโปรแกรม

break: ออกจากลูปทันที

break สั่งให้เลิกวนเดี๋ยวนั้นเลย ไม่สนว่าเงื่อนไขยังจริงอยู่ไหม

while True:
    password = input("รหัสผ่าน: ")
    if password == "python123":
        print("เข้าสู่ระบบสำเร็จ")
        break
    print("ผิด ลองใหม่")

while True: คือลูปที่เงื่อนไขเป็นจริงตลอด ปกติดูเหมือนลูปไม่รู้จบ แต่เราคุมทางออกด้วย break ข้างใน รูปแบบนี้ใช้บ่อยมากกับเมนูโปรแกรมและการรับ input

continue: ข้ามไปรอบถัดไป

continue ไม่ได้ออกจากลูป แต่ข้ามโค้ดที่เหลือในรอบนั้น แล้วกระโดดไปเริ่มรอบใหม่

for i in range(1, 11):
    if i % 2 == 0:
        continue
    print(i)

ผลลัพธ์ (พิมพ์เฉพาะเลขคี่):

1
3
5
7
9

พอ i เป็นเลขคู่ continue จะทำงาน ทำให้ข้าม print(i) ไป

while กับเมนูโปรแกรม

ตัวอย่างที่เอาไปต่อยอดได้จริง

while True:
    print("\n=== เมนู ===")
    print("1. ทักทาย")
    print("2. บอกเวลา")
    print("0. ออกจากโปรแกรม")

    choice = input("เลือก: ")

    if choice == "1":
        name = input("ชื่อคุณ: ")
        print(f"สวัสดีครับคุณ {name}")
    elif choice == "2":
        from datetime import datetime
        print("ตอนนี้เวลา", datetime.now().strftime("%H:%M"))
    elif choice == "0":
        print("ลาก่อน")
        break
    else:
        print("ไม่มีเมนูนี้ ลองใหม่")

นับถอยหลังด้วย while

seconds = 5

while seconds > 0:
    print(seconds)
    seconds -= 1

print("เริ่ม!")

ตัวอย่างรวม: เกมทายเลขอย่างง่าย

import random

secret = random.randint(1, 100)
tries = 0

print("ทายเลข 1 ถึง 100")

while True:
    guess = int(input("เลขที่ทาย: "))
    tries += 1

    if guess < secret:
        print("น้อยไป")
    elif guess > secret:
        print("มากไป")
    else:
        print(f"ถูกต้อง! ใช้ไป {tries} ครั้ง")
        break

ผลลัพธ์ (ตัวอย่าง):

ทายเลข 1 ถึง 100
เลขที่ทาย: 50
มากไป
เลขที่ทาย: 25
น้อยไป
เลขที่ทาย: 37
ถูกต้อง! ใช้ไป 3 ครั้ง

for หรือ while ดี

  • รู้จำนวนรอบ หรือวนบนลิสต์/ข้อมูลที่มีอยู่ ใช้ for
  • ไม่รู้จำนวนรอบ วนจนกว่าเงื่อนไขบางอย่างจะเปลี่ยน (รับ input, เมนู, เกม) ใช้ while

สรุป

  • while เงื่อนไข: วนตราบใดที่เงื่อนไขยังจริง อย่าลืมอัปเดตค่าในลูปไม่งั้นค้าง
  • while True: + break เป็นรูปแบบมาตรฐานสำหรับเมนูและการรับ input
  • break ออกจากลูปทันที, continue ข้ามไปเริ่มรอบถัดไป
  • กด Ctrl + C หยุดโปรแกรมที่ค้างอยู่

จบเฟสพื้นฐานแล้ว บทถัด ๆ ไปจะเข้าสู่โครงสร้างข้อมูล เริ่มจากลิสต์ (List)