3.2
3.2
วิชา การเขียนโปรแกรม Python กลุ่มสาระการเรียนรู้ วิทยาศาสตร์และเทคโนโลยี
เรื่อง วนซ้ำด้วย while loop, for loop
โปรแกรมคอมพิวเตอร์มีการทำงานในรูปแบบเรียงลำดับเป็นพื้นฐานสำคัญ แต่ในโปรแกรมที่ซับซ้อนยิ่งขึ้นอาจจะมีการทำงานที่จะต้องมีการตัดสินใจเลือกทางใดทางหนึ่งที่เหมาะสมหรือตรงตามเงื่อนไข หรืออาจจะมีในกรณีที่โปรแกรมมีการทำงานแบบวนซ้ำ เพื่อลดความซ้ำซ้อนของการเขียนคำสั่ง ซึ่งคำสั่งเลือกทำและวนซ้ำถือว่าได้มีส่วนสำคัญและจำเป็นอย่างยิ่งต่อการเขียนโปรแกรมหรือพัฒนาโปรแกรมคอมพิวเตอร์ให้มีประสิทธิภาพ
คำสั่งวนซ้ำ
คำสั่งวนซ้ำในภาษา Python เราจะพูดถึงการควบคุมการทำงานโดยการใช้คำสั่ง while loop และ for loop คำสั่งเหล่านี้สามารถควบคุมโปรแกรมให้ทำงานซ้ำๆ ในเงื่อนไขที่กำหนดและเพิ่มความสามารถของการเขียนโปรแกรม ตัวอย่างของการทำงานซ้ำๆ นั้นพบเห็นได้ทั่วไปในชีวิตประจำวัน เช่น โปรแกรมพยากรณ์สภาพอากาศที่เกิดขึ้นในทุกๆ วัน หรือการไปทำงานของคุณในทุกๆ เช้า เป็นต้น ดังนั้นแนวคิดเหล่านี้จึงถูกนำมาใช้กับการเขียนโปรแกรม
while loop เป็นคำสั่งวนซ้ำที่ง่ายและพื้นฐานที่สุดในภาษา Python คำสั่ง while loop นั้นใช้ควบคุมโปรแกรมให้ทำงานบางอย่างซ้ำ ๆ ในขณะที่เงื่อนไขของลูปนั้นยังคงเป็นจริงอยู่ นี่เป็นรูปแบบของการใช้งานคำสั่ง while loop ในภาษา Python
while expression :
# statements
ในรูปแบบการใช้งานคำสั่ง while loop นั้น เราสร้างลูปด้วยคำสั่ง while และตามด้วยการกำหนด expression ซึ่งเป็นเงื่อนไขที่จะให้โปรแกรมทำงาน ซึ่งโปรแกรมจะทำงานจนกว่าเงื่อนไขจะเป็น False และสิ้นสุดการทำงานของลูป ภายในบล็อคคำสั่ง while นั้นประกอบไปด้วยคำสั่งการทำงานของโปรแกรม ต่อไปมาดูตัวอย่างโปรแกรมนับเลขที่แสนคลาสสิคด้วยการใช้คำสั่ง while loop ในภาษา Python
# Example01
i = 1
while i <= 10:
print(i, end = ', ')
i = i + 1
# Output
1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
ในตัวอย่าง โปรแกรมในการแสดงตัวเลข 1 ถึง 10 โดยการใช้คำสั่ง while loop ในตอนแรก เราได้ประกาศตัวแปร i และกำหนดค่าให้กับตัวแปรเป็น 1 หลังจากนั้นเราสร้างเงื่อนไขสำหรับ while loop เป็น i <= 10 นั่นหมายความว่าโปรแกรมจะทำงานในขณะที่ค่าในตัวแปร i ยังคงน้อยกว่าหรือเท่ากับ 10 และเราแสดงผลค่าของ i ในบล็อคของคำสั่ง while และเราเพิ่มค่าของตัวแปรขึ้นทุกครั้งหลังจากที่แสดงผลเสร็จ ถ้าหากนักเรียนไม่เพิ่มค่าของ i ลูปจะทำงานไม่มีวันหยุดหรือเรียกว่า Infinite loop
# Example02
number = int(input("Input Number : "))
i = 1
while i < 13:
print(number,"x",i,"=",number*i)
i = i + 1
# Output
Input Number : 8
8 x 1 = 8
8 x 2 = 16
8 x 3 = 24
8 x 4 = 32
8 x 5 = 40
8 x 6 = 48
8 x 7 = 56
8 x 8 = 64
8 x 9 = 72
8 x 10 = 80
8 x 11 = 88
8 x 12 = 96
เป็นคำสั่งวนซ้ำที่ใช้ควบคุมการทำงานซ้ำๆ ในจำนวนรอบที่แน่นอน ในภาษา Python นั้นคำสั่ง for loop จะแตกต่างจากภาษาอื่นๆ อย่างภาษา C มันมักจะใช้สำหรับการวนอ่านค่าภายในออบเจ็ค เช่น ลิสต์หรือออบเจ็คจากฟังก์ชัน range() เป็นต้น มาดูตัวอย่างการใช้งานคำสั่ง for ในภาษา Python
# loop through string
site = 'www.thoengwit.ac.th'
for n in site:
print(n)
# loop through list
names = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
for n in names:
print(n)
numbers = [10, 20, 30, 40, 50, 60, 70, 80]
for n in numbers:
print(n)
ในภาษา Python เรามักจะใช้คำสั่ง for loop กับฟังก์ชัน range() ในการวนอ่านค่าออบเจ็คของตัวเลข ฟังก์ชัน range() นั้นเป็น built-in ฟังก์ชันใช้สำหรับสร้างออบเจ็คของตัวเลข โดยมีพารามิเตอร์ 3 ตัว คือตัวเลขเริ่มต้น ตัวเลขสุดท้าย และค่าที่เปลี่ยนแปลงในลำดับของตัวเลข มาดูตัวอย่างการใช้งานฟังก์ชัน range() ในภาษา Python
# Example03
a = list(range(10))
b = list(range(1, 11))
c = list(range(0, 30, 5))
d = list(range(0, -10, -1))
print(a)
print(b)
print(c)
print(d)
# Output
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[0, 5, 10, 15, 20, 25]
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
# Example04
for i in range(1, 11):
print(i, end = ', ')
print()
for i in range(10, 0, -1):
print(i, end = ', ')
print()
names = ['Mateo', 'John', 'Eric', 'Mark', 'Robert']
for i in range(len(names)):
print(names[i], end = ', ')
# Output
1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
10, 9, 8, 7, 6, 5, 4, 3, 2, 1,
Mateo, John, Eric, Mark, Robert,
ถึงเวลาทดลองปฏิบัติเขียนโปรแกรมเพื่อแสดงความเข้าใจสักหน่อย
ข้อที่ 1 จงเขียนโปรแกรมให้แสดงเลขที่หารด้วย 5 ลงตัว จำนวน 50 ตัว (เริ่มตั้งแต่ 5, 10, 15, ...) โดยใช้คำสั่ง while loop
ผลลัพธ์ที่ควรจะได้
5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100, 105, 110, 115, 120, 125, 130, 135, 140, 145, 150, 155, 160, 165, 170, 175, 180, 185, 190, 195, 200, 205, 210, 215, 220, 225, 230, 235, 240, 245, 250,
ข้อที่ 2 จงแสดงลำดับของอนุกรมเลขคณิตจากสูตร 2n + 1 โดย n มีค่าตั้งแต่ 1 ถึง 10 โดยใช้คำสั่ง for loop
ผลลัพธ์ที่ควรจะได้
3, 5, 7, 9, 11, 13, 15, 17, 19, 21,
นอกจากการใช้งานคำสั่งวนซ้ำกับการแสดงผลแล้ว เรายังสามารถใช้งานเพื่อควบคุมการรับค่าจากผู้ใช้ได้ ต่อไปเป็นตัวอย่างของโปรแกรมในการใช้คำสั่ง while loop เพื่อวนรับค่าจากผู้ใช้ทางคีย์บอร์ดและนำค่าเหล่านั้นมาคำนวณและแสดงผล (ทำเล่น ๆ)
number = []
MAX_INPUT = 10
# getting input into list
print('Enter %d numbers to the list' % MAX_INPUT)
i = 1
while i <= MAX_INPUT:
print('Number %d: ' % i, end = '')
n = int(input())
number.append(n)
i += 1
# displaying numbers from list
print('Your numbers in the list')
sum = 0
i = 1
while i <= MAX_INPUT:
print(number[i - 1], end = ', ')
sum += number[i - 1]
i += 1
print('\nSum = %d' % sum)
print('Average = %f' % (sum / MAX_INPUT))