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