break และ continue
การใช้ break และ continue จะใช้เมื่อต้องการที่จะเพิ่มข้อยกเว้นจากเงื่อนไขการทำงานของลูป เพราะในบางกรณีเราอาจต้องการที่จะข้ามการทำงานบางรอบของลูป หรือต้องการที่จะยุติการทำงานของลูปก่อนจะครบตามเงื่อนไขเดิมที่กำหนดไว้ด้วยข้อยกเว้นบางอย่าง
การใช้ break
จะยุติการทำงานทั้งหมดของลูปที่บรรจุคำสั่ง break เอาไว้ แต่ในกรณีการใช้ break กับลูปที่ซ้อนกันหลายชั้น(nested-loop) โปรแกรมจะทำการยุติการทำงานเฉพาะแค่ลูปในสุดที่บรรจุคำสั่งนั้นอยู่เท่านั้น โดยที่ลูปชั้นนอกยังคงดำเนินการต่อไป
โครงสร้างของ break
# โครงสร้างการใช้ break กับ for loop
for <data> in <sequence_of_data>:
if <test_condition>:
break
# โครงสร้างการใช้ break กับ while loop
while <test_condition1>:
if <test_condition2>:
break
ตัวอย่างการใช้งาน
# คะแนนของนักเรียนทั้งหมด
student_scores = [90, 40, 71, 52, 88, -5, 60, 81]
# ทำการเรียงลำดับคะแนนของนักเรียนทั้งหมดจากมากไปหาน้อย
student_scores.sort(reverse=True)
print("คะแนนที่เรียงลำดับแล้วคือ {}".format(student_scores))
# โปรแกรมทำการปรินต์ค่า
# คะแนนที่เรียงลำดับแล้วคือ [90, 88, 81, 71, 60, 52, 40, -5]
# เก็บข้อมูลลำดับของคะแนน
score_idx = 1
# ทำการวนลูปเพื่อดึงข้อมูลคะแนนของนักเรียนตั้งแต่คนแรกถึงคนสุดท้าย
for score in student_scores :
# ตรวจสอบว่าหากข้อมูลคะแนนนั้นไม่อยู่ในช่วงคะแนนที่กำหนด โปรแกรมจะยุติการทำงานและแจ้งข้อผิดพลาด
if not (score>=0 and score<=100):
# โปรแกรมแจ้งข้อผิดพลาด
error_message = "ข้อมูลคะแนน {} ไม่อยู่ในช่วงคะแนนที่กำหนด(0-100)".format(score)
raise ValueError(error_message)
break
# ทำการปรินต์คะแนนของแต่ละลำดับ
print("คะแนนลำดับที่ {}: {}".format(score_idx, score) )
# เพิ่มข้อมูลลำดับของคะแนน
score_idx = score_idx+1
# โปรแกรมทำการปรินต์ค่า
# คะแนนลำดับที่ 1: 90
# คะแนนลำดับที่ 2: 88
# คะแนนลำดับที่ 3: 81
# คะแนนลำดับที่ 4: 71
# คะแนนลำดับที่ 5: 60
# คะแนนลำดับที่ 6: 52
# คะแนนลำดับที่ 7: 40
# Traceback (most recent call last):
# File "", line 21, in
# ValueError: ข้อมูลคะแนน -5 ไม่อยู่ในช่วงคะแนนที่กำหนด(0-100)
โดยโปรแกรมข้างต้นจะทำการวนลูปดึงข้อมูลของคะแนนออกมาแสดงผล ซึ่งคะแนนนั้นจะทำการเรียงลำดับจากมากไปหาน้อย และจะมีการตรวจสอบคะแนนว่าอยู่ในช่วงคะแนนที่กำหนด(0-100) หรือไม่ หากคะแนนไม่อยู่ในช่วงที่กำหนด โปรแกรมจะแสดงยุติการทำงานและแสดงรายละเอียดข้อผิดพลาดเพื่อให้ทำการตรวจสอบต่อไป
การใช้ continue
ใช้สำหรับกรณีที่ต้องการจะข้ามการทำงานของชุดคำสั่งเฉพาะรอบนั้นๆ ของลูป แต่ไม่ได้ยุติการทำงานทั้งหมดของลูป
โครงสร้างของ continue
# โครงสร้างการใช้ continue กับ for loop
for <data> in <sequence_of_data>:
if <test_condition>:
continue;
# โครงสร้างการใช้ continue กับ while loop
while <test_condition1>:
if <test_condition2>:
continue
ตัวอย่างการใช้งาน
# คะแนนของนักเรียนทั้งหมด
student_scores = [31, 60, 40, 77, 88, 60, 55, 52, 81]
count = 0
# ทำการวนลูปเพื่อดึงข้อมูลคะแนนของนักเรียนตั้งแต่คนแรกถึงคนสุดท้าย
for score in student_scores :
# หากคะแนนน้อยกว่า 70 ให้ข้ามการทำงานในรอบนี้ไป เพื่อเริ่มรอบใหม่ของการทำงาน
if score < 70:
continue
count = count+1
print("จำนวนนักเรียนที่มีคะแนนตั้งแต่ 70 คะแนนขึ้นไปมีทั้งหมด {} คน".format(count))
percent_of_students = ( float(count)/float(len(student_scores)) )*100
print("จำนวนนักเรียนที่มีคะแนนตั้งแต่ 70 คะแนนขึ้นไปคิดเป็น {:.2f} เปอร์เซ็นต์ของนักเรียนทั้งหมด".format(percent_of_students))
# โปรแกรมจะทำการปรินต์ค่า
# จำนวนนักเรียนที่มีคะแนนตั้งแต่ 70 คะแนนขึ้นไปมีทั้งหมด 3 คน
# จำนวนนักเรียนที่มีคะแนนตั้งแต่ 70 คะแนนขึ้นไปคิดเป็น 33.33 เปอร์เซ็นต์ของนักเรียนทั้งหมด
การทำงานของโปรแกรมข้างต้น โปรแกรมจะทำการนับจำนวนนักเรียนที่มีคะแนนตั้งแต่ 70 คะแนนขึ้นไป และทำการคำนวณเปอร์เซ็นต์ของจำนวนนักเรียนที่มีช่วงคะแนนดังกล่าวจากจำนวนนักเรียนทั้งหมด
