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 มีสามส่วนที่ต้องครบ
- ตั้งค่าเริ่มต้น ก่อนเข้าลูป (
count = 1) - เงื่อนไข ที่จะพาออกจากลูปได้ (
count <= 5) - อัปเดตค่า ในลูป เพื่อให้เงื่อนไขเข้าใกล้จุดจบ (
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เป็นรูปแบบมาตรฐานสำหรับเมนูและการรับ inputbreakออกจากลูปทันที,continueข้ามไปเริ่มรอบถัดไป- กด
Ctrl + Cหยุดโปรแกรมที่ค้างอยู่
จบเฟสพื้นฐานแล้ว บทถัด ๆ ไปจะเข้าสู่โครงสร้างข้อมูล เริ่มจากลิสต์ (List)