Python – for loop

for loop

for loop มักจะนำมาใช้เมื่อต้องการเขียนโปรแกรมแล้วเรียกใช้กลุ่มคำสั่งใดซ้ำๆ กันเพื่อประมวลผลข้อมูลบางอย่างตามจำนวนรอบตามที่ระบุ โดยมักใช้จะใช้ร่วมกันกับชุดข้อมูลที่เป็น list , tuple, string

โครงสร้างของ for loop
for <val> in <sequence of vals> :
    <ระบุชุดคำสั่งที่ต้องการทำซ้ำ>
    <...>

โดย

  • val : คือตัวแปรที่ทำการเก็บข้อมูลซึ่งดึงออกมาใช้ประมวลผลในแต่ละรอบ จากชุดของข้อมูล(sequence of vals)ที่ระบุ
  • การทำงานของลูป: จะวนซ้ำต่อเนื่องกันจนกระทั่งถึงข้อมูลตัวสุดท้ายของชุดข้อมูล(sequence of vals) ที่ระบุ
  • ชุดคำสั่ง:  ชุดคำสั่งสำหรับลูปนั้น จะแยกออกมาด้วยการใช้ย่อหน้า เพื่อทำการระบุจุดเริ่มต้นและจุดสิ้นสุดของชุดคำสั่งที่ต้องการดำเนินการสำหรับลูปนั้นๆ

ตัวอย่างการใช้งาน

# กำหนดชุดข้อมูลของคะแนนที่ได้จากการสอบของนักเรียน
student_scores = [90, 81, 60, 52, 40, 88, 71]

# กำหนดค่าเริ่มต้นให้ผลรวมของคะแนนทั้งหมดที่ได้จากการสอบครั้งนี้
total_scores = 0

# ทำการวนลูป โดยใช้การทำงานของลูปเพื่อทำการรวมคะแนนของนักเรียนตั้งแต่คนแรกถึงคนสุดท้าย
for score in student_scores:
	# ในแต่ละรอบของลูป จะนำคะแนนของนักเรียนลำดับที่ลูปนั้นวนไปถึง
	# ไปบวกเข้ากับผลรวมของคะแนนรวมจากคนแรกจนถึงก่อนนักเรียนลำดับปัจจุบัน
	total_scores = total_scores + score

# แสดงผลรวมของคะแนนทั้งหมด
print('Class A has total scores:{}'.format(total_scores))

# โปรแกรมจะทำการปรินต์ค่า Class A has total score: 482
# ( ซึ่งก็คือผลรวมของ 90 + 81 + 60 + 52 + 40 + 88 + 71 = 482 )
 ใช้ฟังก์ชัน range() ร่วมกับ for loop

เราสามารถใช้ฟังก์ชัน range() สร้างข้อมูลที่เป็นชุดของลำดับตัวเลขเรียงกันตามลำดับ 1, 2, 3, … เช่น range(100) จะทำการสร้างชุดของตัวเลขที่มีค่าตั้งแต่ 0 ถึง 99 เรียงกันไปตามลำดับรวม 100 ข้อมูล ([0, 1, 2, 3, 4, …., 99 ])

นอกจากการสร้างชุดข้อมูลของลำดับตัวเลข โดยระบุเพียงจำนวนของข้อมูลให้กับฟังก์ชัน range() แล้ว เรายังสามารถสร้างชุดข้อมูลของลำดับตัวเลขโดยการระบุจากจุดเริ่มต้น(start), จุดสิ้นสุด(stop) และช่วงของการเพิ่มของข้อมูล(step_size) โดยใชัฟังก์ชัน range(start, stop, step_size)  โดยค่าตั้งต้นของช่วงการเพิ่มของข้อมูล(step_size) คือ 1

ชุดข้อมูลลำดับตัวเลขที่ได้จากฟังก์ชัน range นั้นจะไม่ได้ทำการเก็บค่าข้อมูลทั้งหมดไว้ในหน่วยความจำ แต่จะทำการจำค่า เริ่มต้น(start), ค่าสิ้นสุด(stop) และช่วงการเพิ่มของข้อมูล(step_size) เพื่อเป็นข้อมูลเบื้องต้นในการสร้างชุดข้อมูลในแต่ละรอบ ซึ่งจะมีประโยชน์มากเมื่อจำเป็นต้องการประมวลผลกับข้อมูลจำนวนมาก

ตัวอย่างการใช้งาน

data1 = range(0, 10)
print("ชุดข้อมูลที่ 1: {}".format(data1))
# โปรแกรมทำการปรินต์ค่า ชุดข้อมูลที่ 1: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

data2 = list(range(10))
print("ชุดข้อมูลที่ 2: {}".format(data2))
# โปรแกรมทำการปรินต์ค่า ชุดข้อมูลที่ 2: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

data3 = list(range(10, 100, 10))
print("ชุดข้อมูลที่ 3: {}".format(data3))
# โปรแกรมทำการปรินต์ค่า ชุดข้อมูลที่ 3: [10, 20, 30, 40, 50, 60, 70, 80, 90]

data4 = list(range(15, 25, 2))
print("ชุดข้อมูลที่ 4: {}".format(data4))
# โปรแกรมทำการปรินต์ค่า ชุดข้อมูลที่ 4: [15, 17, 19, 21, 23]

เราสามารถใช้ฟังก์ชัน range() ร่วมกับ for loop เพื่อจะสร้างชุดข้อมูลของลำดับตัวเลข โดยใช้ร่วมกับฟังก์ชัน len()
ตัวอย่างการใช้งาน

# ลิสต์ข้อมูลรายชื่อวิชา
subjects = ['math', 'physics', 'biology', 'english']

# ทำการวนลูปเพื่อปรินท์ค่ารายวิชาตามลำดับ
# ใช้ฟังก์ชัน range เพื่อสร้างลำดับของข้อมูล
for idx in range(len(subjects)):
	# เข้าถึงข้อมูลชื่อรายวิชาในแต่ละลำดับของข้อมูล(idx)
	print( "รายวิชาที่ {}: {}".format(idx+1, subjects[idx]) )

# โปรแกรมทำการปรินต์ค่า
# รายวิชาที่ 1: math
# รายวิชาที่ 2: physics
# รายวิชาที่ 3: biology
# รายวิชาที่ 4: english
for loop กับ else

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

ตัวอย่างการใช้งาน else กับ for loop

# ลิสต์ของชุดข้อมูลรายชื่อของนักเรียน
students = ['David', 'Peter', 'Robert']

# ทำการวนลูปเพื่อนปรินต์รายชื่อนักเรียน และเมื่อทำการปรินต์รายชื่อครบแล้ว
# ให้ทำการปรินท์ --- เพื่อปิดท้ายข้อมูล
for student in students:
	print( "ชื่อ: {}".format(student) )
else :
	print( "---" )

# โปรแกรมทำการปรินต์ค่า 
# ชื่อ: David
# ชื่อ: Peter
# ชื่อ: Robert
# ---

ตัวอย่างการใช้งาน break กับ for loop

count = 0

# จำนวนนักเรียนที่รับได้
limit_students = 5

# รายชื่อนักเรียนที่ลงทะเบียน
register_students = ['David', 'Peter', 'Robert', "Mary", "Bill", "Amy", "Mario", "May"]

for student in register_students:
	# ทำการพิมพ์รายชื่อนักเรียนที่สามารถลงทะเบียนได้
	print("ชื่อ: {}".format(student))
	count = count+1
	
	#กำหนดเงื่อนไข ถ้าจำนวนนักเรียนครบตามจำนวนที่รับได้ ให้สิ้นสุดการทำงานของลูปทันที
	if count >= limit_students:
		print("--- นักเรียนครบจำนวนแล้ว ---")
		break
else :
	print( "---" )

# โปรแกรมจะทำการปรินต์ค่า
# ชื่อ: David
# ชื่อ: Peter
# ชื่อ: Robert
# ชื่อ: Mary
# ชื่อ: Bill
# --- นักเรียนครบจำนวนแล้ว ---