Skip to content

บทที่ 2.2: การวนซ้ำและการทำงานซ้ำ (Loops & Iterations)

เอกสารนี้อธิบายเกี่ยวกับการใช้งานการวนซ้ำด้วย for loop, while loop, การใช้ฟังก์ชัน range(), enumerate(), zip() และคำสั่งควบคุมลูป ได้แก่ break, continue, และ else clause ในการวนซ้ำ


1. คำสั่งวนซ้ำ for (For Loop)

for loop ใน Python ใช้สำหรับวนอ่านค่าของสมาชิกในโครงสร้างข้อมูลแบบเรียงลำดับ (Iterables) เช่น list, tuple, str, dict หรือฟังก์ชันกำเนิดค่าอย่าง range()

1.1 การใช้งาน for ร่วมกับ range()

ฟังก์ชัน range(start, stop, step) ใช้สร้างชุดตัวเลขตามช่วงที่กำหนด

# range(5) -> 0 ถึง 4
for i in range(5):
    print(i, end=" ")  # Output: 0 1 2 3 4

print()

# range(1, 10, 2) -> เริ่มต้น 1, สิ้นสุดก่อน 10, เพิ่มทีละ 2
for i in range(1, 10, 2):
    print(i, end=" ")  # Output: 1 3 5 7 9

1.2 การวนอ่านค่าใน Sequence (list, str)

fruits = ["apple", "banana", "cherry"]

for fruit in fruits:
    print(f"ผลไม้: {fruit}")

# วนอ่านตัวอักษรใน String
for char in "Python":
    print(char, end="-")  # Output: P-y-t-h-o-n-

2. ตัวช่วยในการวนซ้ำ (Loop Helper Functions)

2.1 ฟังก์ชัน enumerate()

ใช้เมื่อต้องการดึงทั้ง ดัชนี (Index) และ ข้อมูล (Value) ออกมาพร้อมกัน

languages = ["Python", "JavaScript", "Go"]

for index, lang in enumerate(languages, start=1):
    print(f"ลำดับที่ {index}: {lang}")
# Output:
# ลำดับที่ 1: Python
# ลำดับที่ 2: JavaScript
# ลำดับที่ 3: Go

2.2 ฟังก์ชัน zip()

ใช้สำหรับจับคู่สมาชิกจากหลาย Sequence เข้าด้วยกันในการวนซ้ำรอบเดียว

names = ["Alice", "Bob", "Charlie"]
scores = [85, 92, 78]

for name, score in zip(names, scores):
    print(f"{name} ได้คะแนน {score}")

3. คำสั่งวนซ้ำ while (While Loop)

while loop จะทำงานวนซ้ำไปเรื่อยๆ ตราบใดที่เงื่อนไขยังคงเป็น True

count = 1

while count <= 3:
    print(f"รอบที่ {count}")
    count += 1  # ต้องมีคำสั่งอัปเดตค่าเพื่อป้องกัน Infinite Loop

4. คำสั่งควบคุมลูป (Loop Control Statements)

4.1 คำสั่ง break

สั่งให้ยุติการทำงานและออกจากลูปทันที

for i in range(1, 10):
    if i == 5:
        break  # ออกจากลูปเมื่อ i มีค่าเท่ากับ 5
    print(i, end=" ")  # Output: 1 2 3 4

4.2 คำสั่ง continue

ข้ามการทำงานในรอบปัจจุบัน และไปเริ่มทำงานรอบถัดไปทันที

for i in range(1, 6):
    if i == 3:
        continue  # ข้ามการพิมพ์เลข 3
    print(i, end=" ")  # Output: 1 2 4 5

4.3 โครงสร้าง else กับการวนซ้ำ (for-else / while-else)

บล็อก else จะทำงานก็ต่อเมื่อ การวนซ้ำทำงานจนจบตามปกติ (ไม่ถูกขัดจังหวะด้วยคำสั่ง break)

numbers = [1, 3, 5, 7, 9]
target = 6

for num in numbers:
    if num == target:
        print(f"พบข้อมูล {target} แล้ว")
        break
else:
    # จะทำงานเมื่อวนซ้ำจนครบทุกตัวแล้วไม่พบ target
    print(f"ไม่พบข้อมูล {target} ในรายการ")