3.7 การทํางานแบบวนซ้ํา
ในการเขียนโปรแกรมไพทอนมีหลายกรณีที่ต้องมีการทํางานซ้ํา ๆ กัน ซึ่งทําให้ต้องเขียนคําสั่งชุดเดียวกัน ซ้ํากันหลายครั้ง เพื่อให้การทํางานมีประสิทธิภาพ ไพทอนจึงมีคําสั่งวนซ้ํา (loop statement) เพื่อช่วยให้ การเขียนคําสั่งสั้นลง คําสั่งวนซ้ํามีรูปแบบและผังงาน ดังนี้
for ตัวแปร in ลิสต์ :
ชุดคําสั่ง # คําสั่งที่ต้องการให้ทําซ้ํา
# ค่าใน ตัวแปร จะเปลี่ยนไปเรื่อย ๆ ตามลําดับใน ลิสต์
ตัวอย่างที่ 3.11 echo
โปรแกรมต่อไปนี้ รับชื่อ และนามสกุล แล้วพิมพ์ซ้ําออกทางจอภาพจํานวน 5 ครั้ง
name = input ('Please enter your firstname ') # บรรทัดที่ 1
surname = input ('Please enter your lastname') # บรรทัดที่ 2
for X in range (5) : # บรรทัดที่ 3
print (x, name) # บรรทัดที่ 4
print (x, surname) # บรรทัดที่ 1
print('Bye bye!') # บรรทัดที่ 5
โปรแกรมนี้มีการทํางานดังผังงานต่อไปนี้
ตัวอย่างที่ 3.11 อธิบายได้ดังนี้
1. บรรทัดที่ 3 ถึง 5 เป็นส่วนที่กําหนดให้มีการวนซ้ํา ให้สังเกตการย่อหน้าของบรรทัดที่ 4 และ 5 เป็นการกําหนดว่าส่วนนี้จะต้อง
ถูกวนซ้ําภายใต้คําสั่ง for ในบรรทัดที่ 3
2. คําสั่ง range (5) ในบรรทัดที่ 3 เป็นคําสั่งสร้างลิสต์จํานวนเต็ม 5 จํานวน ตั้งแต่ 0, 1, 2, 3, 4 ซึ่งในแต่ละรอบของการวนซ้ํา ตัวแปร x จะมีค่าเปลี่ยนไปตามลําดับแต่ละค่าในลิสต์
3. ผลลัพธ์ที่ได้ คือ คําสั่งในบรรทัดที่ 4 และ 5 จะทํางานซ้ํากันเป็นจํานวน 5 รอบ และแต่ละรอบ ค่า x ที่ถูกพิมพ์ออกมา จึงมีค่า เปลี่ยนไปตามค่าที่อยู่ในลิสต์
4. บรรทัดที่ 6 ซึ่งไม่ได้เป็นส่วนหนึ่งของคําสั่ง for จะถูกทํางานเพียงครั้งเดียว จึงพิมพ์คําว่า Bye bye! ออกมาเพียงบรรทัดเดียว
ตัวอย่างที่ 3.13 ร่วมด้วยช่วยแชร์ แบบคํานวณตามจํานวนรอบที่ผู้ใช้ระบุ
i = int (input(คุณต้องการคํานวณกรอบคะ ) # บรรทัดที่ 1
for count in range(i): # บรรทัดที่ 2
print("การคํานวณรอบที่, count+1) # บรรทัดที่ 3
totalPrice = int (input("ราคาอาหารทั้งหมด :)) # บรรทัดที่ 4
number = int (input('จํานวนผู้รับประทานอาหาร ')) # บรรทัดที่ 5
avg = totalPrice/number # บรรทัดที่ 6
print("จ่ายค่าอาหารคนละ", avg, 'บาท) # บรรทัดที่ 7
print(โปรแกรมทํางานเสร็จแล้ว) # บรรทัดที่ 8
ตัวอย่างที่ 3.13 อธิบายได้ดังนี้
1. ในขณะที่เขียนโปรแกรม นักเรียนจะไม่ทราบจํานวนรอบที่ต้องการ ดังนั้นจึงต้องรับจํานวนรอบจากผู้ใช้ในบรรทัดที่ 1 ด้วยคําสั่ง input () แล้วจึงใช้คําสั่ง int() แปลงสตริงที่รับเข้าจาก input () ให้เป็นจํานวนเต็ม เพื่อนําไปกําหนดค่าให้กับตัวแปร i
2. บรรทัดที่ 3 ถึง 7 เป็นส่วนที่ต้องการให้ทํางานซ้ํา จึงนําไปใส่ไว้ภายใต้คําสั่ง for ในบรรทัดที่ 2 ซึ่งคําสั่ง for จะวนซ้ําเท่ากับจํานวน 1 รอบ โดยใช้ตัวแปร count นับรอบ
การทํางาน
3. บรรทัดที่ 3 จะแสดงตัวเลขระบุ รอบที่ ของการวนซ้ํา ซึ่งต้องการให้แสดงข้อความ “การคํานวณรอบที่ 1” ไปจนถึง “การคํานวณรอบที่ 1” แต่เนื่องจาก range (i) ให้ค่าตั้งแต่ 0, 1, 1, 1-1 ดังนั้น เพื่อให้แสดงจํานวนรอบที่ถูกต้อง ตัวแปร count ที่เริ่มต้นด้วย 0 จึงต้องบวกด้วย 1