บทที่ 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
ข้ามการทำงานในรอบปัจจุบัน และไปเริ่มทำงานรอบถัดไปทันที
4.3 โครงสร้าง else กับการวนซ้ำ (for-else / while-else)
บล็อก else จะทำงานก็ต่อเมื่อ การวนซ้ำทำงานจนจบตามปกติ (ไม่ถูกขัดจังหวะด้วยคำสั่ง break)