Python มี loop หลักๆ 2 แบบ คือ while loop และ for loop
while loop
while loop จะรันชุดคำสั่งตราบเท่าที่เงื่อนไขนั้นเป็นจริง เช่น
i = 0
while i < 10:
print(i)
i += 1
ตราบเท่าที่ i น้อยกว่า 10 ให้พิมพ์ค่าของ i บนหน้าจอ จากนั้นให้ i = i + 1
Output:
0
1
2
3
4
5
6
7
8
9
#หยุดที่ 9 เพราะเมื่อ 9 + 1 = 10 หมายความว่า i มีค่าเท่ากับ 10 ทำให้เงื่อนไขที่ i < 10 ไม่เป็นจริง
#จำเป็นต้องเพิ่มค่าของ i หลังจาก print statement ไม่เช่นนั้นโปรแกรมจะพิมพ์ค่า i (0) ไม่หยุด คอมฯอาจค้างได้ loop ที่ทำให้โปรแกรมพิมพ์ค่าไม่หยุดเพราะ loop เรียกว่า infinite loop
break statement
break statement ใช้หยุดการทำงานของ loop แม้ว่าเงื่อนไขยังคงเป็นจริงอยู่นั้นเอง
i = 0
while i < 10:
print(i)
if i == 5:
break
i += 1
Output:
0
1
2
3
4
วิธีอ่าน loop
i เท่ากับ 0 หาก i น้อยกว่า 10 พิมพ์ค่า i (โปรแกรมพิมพ์ค่า i คือ 0) จากนั้นดูว่า i เท่ากับ 5 หรือไม่ (หากเท่ากับ 5 ให้ออกจาก loop) i ที่พิมพ์ไปคือค่า 0 จึงไม่ออกจาก loop แต่ดำเนินการบรรทัดต่อไปคือ เพิ่มค่า i
i = 0 + 1 ทำให้ i มีค่าเป็น 1 ไม่ใช่ 0 แล้ว
จากนั้นเริ่มตั้งแต่บรรทัดแรกอีกครั้ง คือ i เท่ากับ 1 และวนไปจนกว่า i จะเท่ากับ 5 และออกจาก loop
continue statement
ใช้ในการหยุดการทำงานในขั้นตอนที่ตรงกับเงื่อนไขที่กำหนดไว้ และให้ข้ามไปขั้นตอนต่อไปเลย เช่น
i = 0
while i < 10:
i += 1
if i == 5:
continue
print(i)
#สามารถสลับที่ขั้นตอนการเพิ่มค่า i ได้ แต่เมื่อสลับแล้วการทำงานก็จะเปลี่ยนไปด้วย เช่นตัวอย่างข้างบนนี้ เพิ่มค่า i ก่อนแล้วค่อยพิมพ์ ดังนั้นค่าแรกที่พิมพ์ จึงไม่ใช่ 0 เพราะมันถูกเพิ่มค่าทันทีก่อนพิมพ์ ค่าแรกที่พิมพ์จะเป็นค่า 1
Output:
1
2
3
4
6
7
8
9
#สังเกตจะพบว่าไม่มีตัวเลข 5 เพราะตามคำสั่งคือเมื่อ i มีค่าเท่ากับ 5 ให้ข้ามไปขั้นตอน print(i) ไปที่ขั้นตอนต่อไป ซึ่งก็คือขั้นตอนแรกได้เลย นั่นคือ i = 5 หาก i น้อยกว่า 10 ให้เพิ่มค่า i ดังนั้น i จึงมีค่าเป็น 6 จากนั้น i ไม่เท่ากับ 5 แล้ว พิมพ์ค่า i ได้ จึงพิมพ์ 6 และวนการทำงานไปจนกว่าเงื่อนไขจะไม่เป็นจริง คือ i ไม่น้อยกว่า 10
else statement
เมื่อใช้ else statement จะสามารถรัน block ได้อีกหนึ่งอันเมื่อเงื่อนไขไม่เป็นจริงแล้ว เช่น
i = 0
while i < 5:
i += 1
print(i)
else:
print(‘i is not less than 5’)
#เมื่อ i มีค่าเท่ากับ 5 นั้นหมายความเงื่อนไข i น้อยกว่า 5 ไม่เป็นความจริง แทนที่จะออกจาก loop ทันที โปรแกรมจะพิมพ์ statement สุดท้ายที่อยู่ใน else statement คือ พิมพ์ประโยค i is not less than 5