while เป็นคำสั่งวนซ้ำที่มีการตรวจสอบเงื่อนไขก่อนเข้าทำงานเสมอ เมื่อเงื่อนไขที่ตรวจสอบเป็นจริง จึงจะประมวลผลคำสั่งภายใต้คำสั่ง while แต่ถ้าเงื่อนไขเป็นเท็จ จะหยุดการทำงานทันที สำหรับงานที่นิยมใช้คำสั่ง while ในการแก้ปัญหา คือ ปัญหาที่ไม่ทราบจำนวนรอบการทำงานที่แน่นอน หรือปัญหาที่ไม่สามารถทราบได้ล่วงหน้าว่าจะต้องใช้เวลาในการประมวลผลนานเท่าใด โดยจะต้องมีการหยุดการทำงานของคำสั่ง while ด้วยเงื่อนไข เช่น ให้ผู้ใช้กดแป้นพิมพ์ที่บ่งบอกว่าต้องการออกจากโปรแกรม เช่น ESC, q, 0 หรือตรวจสอบค่าในตัวแปรตัวใดตัวหนึ่งในโปรแกรมเป็นเท็จ เป็นต้น
condition
เป็นเงื่อนไขที่ใช้กำหนดการตัดสินใจของโปรแกรม
statements
เป็นชุดคำสั่งที่ต้องทำงานเมื่อเงื่อนไขที่กำหนดเป็นจริง
จากรูปแบบคำสั่ง while สามารถเขียน flowchart ได้ดังนี้
💻 ตัวอย่าง การใช้ while Loop สร้างสูตรคูณแม่สอง
บรรทัดที่ 2
กำหนดให้ตัวแปร counter มีค่าเท่ากับ 1
บรรทัดที่ 3
ถ้าผลการตรวจสอบค่าข้อมูลตัวแปร counter น้อยกว่าเท่ากับ 12 เป็นจริง ให้ทำบรรทัดที่ 4 ถ้าเป็นเท็จให้จบการทำงาน
บรรทัดที่ 4
คำนวณ “result = counter*2”
บรรทัดที่ 5
แสดงผล ("2 x", counter, "=",result)
บรรทัดที่ 6
บวกเพิ่มค่า counter ครั้งละ 1 และกลับไปตรวจสอบเงื่อนไขในบรรทัดที่ 3 ต่อไปเรื่อย ๆ จนกว่า counter จะไม่น้อยกว่าเท่ากับ 12 จึงจะจบโปรแกรม
เป็นคำสั่งที่ใช้ทำซ้ำเช่นเดียวกับ while และต้องมีการตรวจสอบเงื่อนไขก่อนเข้าลูปเหมือนกัน แตกต่างกันตรงที่ for จะตรวจสอบรายการแบบลำดับ เช่น ข้อมูลสตริง ลิสต์ หรือทัพเพิล เป็นต้น
iterating_var
คือ ตัวแปรที่ใช้สำหรับรับค่าทีละค่าเพื่อนำมาประมวลผล จากข้อมูลที่อยู่ในตัวแปร sequence เมื่อข้อมูลในตัวแปร sequence เป็นชนิดลิสต์ คำสั่ง for จะดึงข้อมูลในตำแหน่งแรกของลิสต์ออกมาเก็บไว้ใน iterating_var หลังจากนั้น จะเริ่มทำคำสั่งใน statements เมื่อคำสั่งใน statements หมดแล้ว การควบคุมจะกลับไปเริ่มต้นใหม่ที่ for แล้วดึงข้อมูลในลิสต์ลำดับถัดไปมาทำงาน ซึ่งการทำงานจะเป็นลักษณะนี้ไปเรื่อยๆ จนกว่าข้อมูลในลิสต์จะหมด for จึงจะจบการทำงาน
sequence
คือ ลำดับ
statements
เป็นชุดคำสั่งในขอบเขตการทำงานของคำสั่ง for ที่ต้องทำงานเมื่อเงื่อนไขเป็นจริง
จากรูปแบบคำสั่ง for สามารถเขียน flowchart ได้ดังนี้
💻 ตัวอย่าง การใช้งาน for loop กำหนดลำดับโดยตรง
💻 ตัวอย่าง การใช้งาน for loop กำหนดลำดับโดยสตริง
💻 ตัวอย่าง การใช้งาน for loop กำหนดลำดับโดยลิสต์
Start
คือ จุดเริ่มต้นของ for loop โดยจะเริ่มจาก 0 ถ้าไม่ได้ใส่อากิวเมนต์ตัวนี้เข้ามา
Stop
คือ จุดหยุดของ for loop
Step
คือ จำนวนที่ต้องการให้เพิ่มขึ้นหรือลดลงแต่ละรอบของ for loop
สามารถทำได้ 3 รูปแบบดังนี้
range (10)
เป็นการสร้างออบเจ็กต์ที่มีค่าสมาชิก 10 ตัว เป็นตัวเลขเรียงลำดับเริ่มจาก 0 ถึง 9
**ถ้าไม่ใส่ start จะเริ่มต้นจาก 0 โดยอัตโนมัติ**
💻 ตัวอย่าง การ Loop ข้อมูลใน range(stop)
Start เริ่มจาก 0 (เนื่องจากไม่ได้กำหนด Start)
จากนั้น Step (เพิ่มขึ้น) ทีละ 1 (เนื่องจากไม่ได้กำหนด Step)
ดังนั้นโปรแกรมจึงหยุดที่ 4 เพราะใส่ stop ที่ 5 (stop(5) - step(1) = 4)
range (0,10) เป็นการสร้างออบเจ็กต์ที่มีค่าสมาชิก 10 ตัว เป็นตัวเลขเรียงลำดับเริ่มจาก 0 ถึง 9
💻 ตัวอย่าง การ Loop ข้อมูลใน range(start, stop)
Start เริ่มจาก 2 จากนั้น Step (เพิ่มขึ้น) ทีละ 1 (เนื่องจากไม่ได้กำหนด Step)
ดังนั้นโปรแกรมจึงหยุดที่ 5 เพราะใส่ stop ที่ 6 (stop(6) - step(1) = 5)
range (0,10,1) เป็นการสร้างออบเจ็กต์ที่มีค่าสมาชิก 10 ตัว เป็นตัวเลขเรียงลำดับเริ่มจาก 0 เพิ่มครั้ง 1 จนถึง 10 ก็จะได้ตัวเลขเรียงลำดับเริ่มจาก 0 ถึง 9
💻 ตัวอย่าง การ Loop ข้อมูลใน range(start, stop, step)
Start เริ่มจาก 2 จากนั้น Step (เพิ่มขึ้น) ทีละ 2
ดังนั้นโปรแกรมจึงหยุดที่ 8 เพราะใส่ stop ที่ 10 (stop(10) - step(2) = 8)
💻 ตัวอย่าง การใช้ For Loop สร้างสูตรคูณแม่สาม
!! ข้อควรระวัง !! Infinite Loop หรือ ลูปไม่สิ้นสุด
สามารถเกิดขึ้นเมื่อเงื่อนไขของลูปไม่มีทางเป็นเท็จ หรือมีบางอย่างที่ทำให้ลูปดำเนินการต่อไปเรื่อย ๆ โดยไม่จบสิ้น โดยทั่วไป Infinite Loop มักเกิดขึ้นกับ while loop เนื่องจาก while loop พึ่งพาเงื่อนไขที่อาจไม่เปลี่ยนแปลงหรือเปลี่ยนแปลงไม่ถูกต้องทำให้ลูปทำงานไม่สิ้นสุด ในกรณีของ for loop ซึ่งทำงานกับลำดับข้อมูล เช่น range, list, หรือ tuple การเกิด Infinite Loop นั้นมีโอกาสน้อยกว่า เพราะลูปจะหยุดทำงาน เมื่อทำการวนซ้ำครบตามจำนวนที่กำหนดในลำดับนั้น ๆ อย่างไรก็ตาม มีบางกรณีที่สามารถทำให้เกิด Infinite Loop ใน for loop ได้ ถ้าใช้ for loop กับลำดับที่สร้างแบบไม่สิ้นสุด เช่น การสร้างลำดับด้วย itertools.cycle หรือ itertools.count ซึ่งเป็นโมดูลใน Python ที่สร้างลำดับไม่รู้จบ
💻 ตัวอย่าง Infinite Loop จากการใช้ while True ในกรณีนี้ลูปจะทำงานไม่สิ้นสุด
เพราะเงื่อนไข True เป็นจริงเสมอ ไม่มีทางที่จะทำให้ลูปจบการทำงานได้
💻 ตัวอย่าง Infinite Loop จากการที่เงื่อนไขไม่เปลี่ยนแปลง ในกรณีนี้ลูปจะทำงานไม่สิ้นสุด
เพราะตัวแปร i ไม่ได้ถูกเปลี่ยนแปลง ทำให้เงื่อนไข i < 5 ยังคงเป็นจริงอยู่เสมอ
หากเกิด Infinite Loop ขึ้นระหว่างการรันโปรแกรม สามารถหยุดการทำงานของโปรแกรมได้โดยการกด Ctrl + C บนคีย์บอร์ด (สำหรับ Terminal หรือ Command Prompt) หรือหยุดโปรแกรมจาก IDE ที่ใช้ เช่น Stop ใน Thonny, PyCharm, หรือ VS Cod)
หากต้องการใช้ Infinite Loop แต่ให้โปรแกรมหยุดในเงื่อนไขที่กำหนด สามารถใช้คำสั่ง break
💻 ตัวอย่าง การใช้ break ใน Infinite Loop จากโปรแกรมลูปจะหยุดเมื่อผู้ใช้พิมพ์คำว่า "exit"