การวนซ้ำ While Loop ในภาษา Python

While Loop เป็นการวนซ้ำโค้ดเพื่อทำงานซ้ำไปเรื่อยๆ จนกว่าจะตรงตามเงื่อนไขที่กำหนด ในภาษา Python การเขียน While Loop จะมีรูปแบบดังนี้

while condition:
    # statements

โดย condition เป็นเงื่อนไขที่ต้องเป็นจริงเพื่อทำให้โค้ดในส่วนของ statements ถูกทำงาน ในแต่ละรอบของการวนซ้ำจะตรวจสอบเงื่อนไข condition ก่อน ถ้าเงื่อนไข condition เป็นจริง จะทำงานในส่วนของ statements จนกว่าเงื่อนไข condition จะเป็นเท็จ แล้วจึงออกจาก Loop

ตัวอย่างการใช้งาน While Loop ในการพิมพ์ตัวเลข 1-5 ออกทางหน้าจอ:

i = 1
while i <= 5:
    print(i)
    i += 1

ผลลัพธ์:

1
2
3
4
5

จากตัวอย่าง เริ่มต้นที่ i=1 และมีเงื่อนไขว่า i ต้องน้อยกว่าหรือเท่ากับ 5 เพื่อทำให้วนลูป ในแต่ละรอบของการวนซ้ำจะแสดงค่าของ i และเพิ่มค่า i ไปเรื่อยๆ จนกว่า i จะมากกว่า 5 และทำให้โปรแกรมออกจาก Loop

ในการใช้งาน While loop นั้นสามารถใช้งานได้ง่ายเพียงแค่เรารู้จักตัวแปรที่ต้องการให้วนซ้ำ เรียกใช้คำสั่งในลูปอย่างถูกต้องและมีเงื่อนไขสิ้นสุดลูปที่ถูกต้อง โดยแบ่งเงื่อนไขที่ใช้วนซ้ำออกเป็น 2 ประเภท คือ

  1. เงื่อนไขที่ใช้วนซ้ำไม่รู้จุดสิ้นสุด
  2. เงื่อนไขที่ใช้วนซ้ำตามจำนวนรอบที่กำหนด

โดยเงื่อนไขแรกเป็นการวนซ้ำอย่างไม่มีที่สิ้นสุดจนกว่าจะตอบโจทย์ หรือกำหนดเงื่อนไขสิ้นสุดลูปที่เหมาะสม ส่วนเงื่อนไขที่สองจะใช้วนซ้ำตามจำนวนครั้งที่กำหนด โดยแต่ละครั้งจะต้องทำงานตามที่กำหนดในลูป

ดังนั้นเมื่อเขียนโปรแกรมวนซ้ำด้วย While loop จำเป็นต้องระมัดระวังว่าจะต้องมีเงื่อนไขที่ใช้วนซ้ำที่ถูกต้องและมีการอัพเดทค่าตัวแปรของลูปให้ถูกต้อง ไม่เช่นนั้นโปรแกรมจะเข้าอยู่ในลูปไม่สิ้นสุด หรือไม่เข้าลูปเลยก็ได้ ทำให้ผลลัพธ์ที่ได้ไม่ตรงกับความต้องการของโปรแกรมและใช้งานควรระมัดระวังให้ดี

 

While Loop แบบเงื่อนไขที่ใช้วนซ้ำไม่รู้จุดสิ้นสุด

ในการใช้ While Loop ในภาษา Python โดยทั่วไปจะต้องระบุเงื่อนไขที่จะทำให้วนซ้ำหยุดได้ เช่นในกรณีที่ต้องการทำงานซ้ำจนกว่าผู้ใช้จะป้อนข้อมูลที่ถูกต้อง หรือทำงานซ้ำจนกว่าจะคำนวณค่าให้ได้ถูกต้อง โดยปกติแล้วจะต้องมีเงื่อนไขหยุดการวนซ้ำ เช่นเงื่อนไขค่านับหรือค่าเปรียบเทียบที่ระบุไว้ในโค้ด อย่างไรก็ตาม มีกรณีบางครั้งที่ไม่สามารถระบุเงื่อนไขหยุดการวนซ้ำได้โดยตรง เนื่องจากไม่รู้ว่าจะวนซ้ำกี่ครั้งจึงต้องใช้เงื่อนไขเพื่อทำให้วนซ้ำหยุดได้

 

ตัวอย่าง การรับข้อมูลจากผู้ใช้ แต่ไม่รู้ว่าผู้ใช้จะป้อนเป็นตัวเลขกี่ตัว ในกรณีนี้ เราสามารถใช้ While Loop ร่วมกับคำสั่ง try-except และ break เพื่อวนซ้ำการรับข้อมูลจนกว่าจะได้ข้อมูลที่ถูกต้อง ดังตัวอย่างต่อไปนี้

while True:
    try:
        x = int(input("Please enter a number: "))
        break
    except ValueError:
        print("Invalid input. Please enter a valid number.")

จากตัวอย่างนี้ ได้ใช้คำสั่ง while True เพื่อทำให้วนซ้ำไปเรื่อยๆ และใช้คำสั่ง try-except เพื่อตรวจจับข้อผิดพลาดจากการป้อนข้อมูลจากผู้ใช้ ในกรณีที่ผู้ใช้ป้อนข้อมูลที่ไม่ใช่ตัวเลข คำสั่ง except ValueError: จะถูกเรียกใช้งานและแสดงข้อความ “Invalid input. Please enter a valid number.”

ตัวอย่าง การใช้ while loop เพื่อวนรับค่าจากผู้ใช้เพื่อหาผลรวมของตัวเลข โดยให้ผู้ใช้หยุดกรอกค่าเมื่อต้องการ โดยใช้เงื่อนไขที่ไม่รู้จุดสิ้นสุด (while True) และการใช้ break เพื่อหลุดจากการวนซ้ำเมื่อผู้ใช้ต้องการหยุดกรอกค่า

# รับค่าจากผู้ใช้และหาผลรวม
total = 0

while True:
    user_input = input("ใส่ตัวเลขเพื่อบวกเข้ากับผลรวม หรือพิมพ์ 'q' เพื่อหยุด: ")
    if user_input == "q":
        break
    elif not user_input.isnumeric():
        print("ใส่เฉพาะตัวเลข หรือพิมพ์ 'q' เพื่อหยุด")
    else:
        total += int(user_input)

print("ผลรวมค่าที่ได้คือ:", total)

จากตัวอย่างนี้  while loop จะวนซ้ำตลอดเนื่องจนกว่าผู้ใช้จะพิมพ์ “q” เพื่อหยุด โดยภายใน loop จะมีการตรวจสอบค่าที่ผู้ใช้กรอก หากผู้ใช้กรอกเป็น “q” จะใช้ break เพื่อออกจาก loop และหากผู้ใช้กรอกค่าที่ไม่ใช่ตัวเลขจะแสดงข้อความแจ้งเตือนและขอให้กรอกใหม่ ส่วนค่าตัวเลขที่ผู้ใช้กรอกถูกต้องจะถูกบวกเข้าไปยังตัวแปร total ทุกครั้งที่ผู้ใช้กรอกค่านั้นๆ

นอกจากการใช้ while loop กับเงื่อนไขที่รู้จุดสิ้นสุดแล้ว ยังสามารถใช้ while loop กับเงื่อนไขที่ไม่รู้จุดสิ้นสุดได้อีกด้วย โดยใช้คำสั่ง break เพื่อออกจาก loop เมื่อตรวจสอบเงื่อนไขที่ต้องการแล้ว

ตัวอย่างเช่น การรับค่าจากผู้ใช้ไปเรื่อยๆ จนกว่าผู้ใช้จะใส่คำว่า “stop” โดยใช้ while loop และ break เพื่อหยุด loop และปริ้นผลลัพธ์

while True:
    user_input = input("Enter a value (type 'stop' to exit): ")
    if user_input == 'stop':
        break
    print(f"You entered: {user_input}")
print("Loop has ended.")

ผลลัพธ์เมื่อผู้ใช้กรอกข้อมูลตามที่ระบุ

Enter a value (type 'stop' to exit): hello
You entered: hello
Enter a value (type 'stop' to exit): world
You entered: world
Enter a value (type 'stop' to exit): stop
Loop has ended.

 

While Loop แบบเงื่อนไขที่ใช้วนซ้ำตามจำนวนรอบที่กำหนด 

สามารถใช้วนซ้ำตามจำนวนรอบที่กำหนดได้โดยใช้เงื่อนไขจำนวนรอบเป็นเงื่อนไขของการวนซ้ำ โดยมักใช้ตัวแปรควบคุมการวนซ้ำ (loop counter variable) เพื่อเก็บจำนวนรอบและเพิ่มค่าตามที่วนซ้ำ ในขณะที่เงื่อนไขยังเป็นจริง ดังนั้น จำนวนรอบที่วนซ้ำจะต้องถูกกำหนดค่าไว้ก่อนการวนซ้ำ เช่น ให้เริ่มต้นค่าตัวแปรควบคุมการวนซ้ำด้วย 0 และวนซ้ำจนถึงจำนวนรอบที่ต้องการ ตัวอย่างเช่น

i = 0  # กำหนดค่าตัวแปรควบคุมการวนซ้ำ i เริ่มต้นที่ 0

while i < 5:  # เงื่อนไขของการวนซ้ำคือ i น้อยกว่า 5
    print("รอบที่", i+1)  # แสดงผลลัพธ์เมื่อวนซ้ำ
    i += 1  # เพิ่มค่าตัวแปรควบคุมการวนซ้ำ i เพื่อหยุดการวนซ้ำเมื่อ i >= 5

ผลลัพธ์ที่ได้ คือ

รอบที่ 1
รอบที่ 2
รอบที่ 3
รอบที่ 4
รอบที่ 5

จากตัวอย่าง เงื่อนไขของการวนซ้ำคือ i < 5 ดังนั้น จำนวนรอบที่วนซ้ำจะเป็น 5 รอบ (i จะเริ่มต้นที่ 0 และวนซ้ำจนถึงค่า 4) และแสดงผลลัพธ์เมื่อวนซ้ำในแต่ละรอบโดยใช้คำสั่ง print() ซึ่งแสดงผลลัพธ์ว่า “รอบที่ x”

ตัวอย่าง While Loop โดยการสร้างตัวแปร sum เพื่อเก็บผลรวมของเลขจำนวนเต็มที่น้อยกว่า 5 โดยจะทำการวนซ้ำจนกว่าจะได้ผลรวมที่มากกว่าหรือเท่ากับ 10 และใช้คำสั่ง break เมื่อตัวแปร sum เท่ากับ 10

sum = 0
i = 1
while i < 5:
    sum += i
    if sum >= 10:
        break
    i += 1

print("The sum is:", sum)

จากตัวอย่าง ตัวแปร sum เริ่มต้นที่ 0 และตัวแปร i มีค่าเริ่มต้นเป็น 1 ซึ่งจะนำไปใช้ในการวนซ้ำ While Loop โดยตรวจสอบว่า i น้อยกว่า 5 ในแต่ละรอบ จากนั้นเพิ่มค่าของ i เข้าไปในตัวแปร sum และตรวจสอบว่า sum มีค่ามากกว่าหรือเท่ากับ 10 หากใช่จะใช้คำสั่ง break เพื่อหยุดวนซ้ำ และแสดงผลลัพธ์ของ sum ที่ได้

ผลลัพธ์ที่แสดงออกมาจะเป็น:

The sum is: 10