while
กับ for
ในที่นี้จะเริ่มอธิบายจาก while
ก่อนwhile
สำหรับวนซ้ำเป็นดังนี้
while เงื่อนไข:
โค้ดที่ต้องการทำซ้ำ
x = 1
while(x<5):
print(x)
x += 1
1
2
3
4
x
รับค่า 1
เข้ามา จากนั้นก็เริ่มเข้าสู่คำสั่ง while
โดยเงื่อนไขคือจะมีการทำสิ่งที่อยู่บรรทัดต่อจาก while
เมื่อ x<5
x
เป็น 1
ดังนั้นจึงผ่านเงื่อนไขจึงมีการทำคำสั่งสองบรรทัดถัดไปตามลำดับ โดยแสดงผลค่า x
จากนั้นค่า x
ก็จะถูกบวกเพิ่มอีก 1
while
อีกครั้ง ซึ่งคราวนี้ x
กลายเป็น 2
แล้ว ซึ่งก็ยังเข้าเงื่อนไขจึงมีการคำสั่งเดิมใหม่อีกที แต่ด้วยค่า x
ที่เปลี่ยนไปx
จะเพิ่มขึ้นเรื่อยๆ จนถึงรอบที่ 4
พอจะขึ้นรอบที่ 5
ในตอนนั้น x
มีค่าเป็น 5
ซึ่งไม่เข้าเงื่อนไข จึงไม่มีการทำซ้ำต่อ แล้วโปรแกรมก็จะออกมาจากวังวนแล้วไปทำคำสั่งอื่นๆที่อยูถัดไปต่อwhile
นั้นคล้ายกับ if
คือพิมพ์ while
แล้วตามด้วยเงื่อนไข แล้วก็โคลอน :
จากนั้นก็ขึ้นบรรทัดใหม่โดยมีการร่น แล้วใส่สิ่งที่ต้องการให้ทำซ้ำลงไปif
เงื่อนไขที่อยู่ด้านหลัง while
นั้นอาจใส่วงเล็บครอบแล้วไม่ต้องเว้นวรรคก็ได้ แต่เพื่อความเป็นระเบียบสวยงามจะขอใส่วงเล็บไว้ตลอดwhile
จะทำให้โปรแกรมวนซ้ำตราบใดที่ยังเป็นไปตามเงื่อนไข ซึ่งโดยทั่วไปแล้วเงื่อนไขควรจะเป็นเท็จหลังจากทำซ้ำไปแล้วเป็นจำนวนหนึ่งy = 1
while(y>=1):
print(y)
y += 1
y
ไม่มีทางน้อยกว่า 1
ได้ไม่ว่าจะผ่านไปกี่ครั้งก็ตาม เพราะค่ามีแต่จะเพิ่มขึ้น ดังนั้นโปรแกรมจะทำงานอย่างไม่รู้จบจนกว่าเราจะหาทางหยุดโปรแกรมด้วยวิธีอื่นkhamtop = int(input('สงครามโลกครั้งที่ 2 สิ้นสุดลงในปี ค.ศ. ใด: '))
while(khamtop!=1945):
if(khamtop>1945): print('เร็วกว่านั้น') # กรณีตอบเลขสูงไป
else: print('ช้ากว่านั้น') # กรณีตอบเลขต่ำไป
khamtop = int(input('ตอบใหม่: '))
print('คำตอบถูกต้อง')
สงครามโลกครั้งที่ 2 สิ้นสุดลงในปี ค.ศ. ใด: 1000
ช้ากว่านั้น
ตอบใหม่: 2000
เร็วกว่านั้น
ตอบใหม่: 1950
เร็วกว่านั้น
ตอบใหม่: 1945
คำตอบถูกต้อง
x = int(input('ป้อนเลขจำนวนเต็ม: '))
xfac = 1
while(x>1):
xfac *= x
x -= 1
print(xfac)
x
xfac
โดยเริ่มต้นมาจะเท่ากับ 1
while
ซึ่งจะมีการทำซ้ำ โดยในแต่ละรอบ x
จะค่อยๆลดลงไปเรื่อยๆทีละ 1
ส่วน xfac
จะค่อยๆถูกคูณเพิ่มด้วยค่าของ x
x
ลดลงจนเหลือ 1
การทำซ้ำก็จะสิ้นสุดลง และค่า xfac
ที่ได้ซึ่งเป็นผลลัพธ์ที่ต้องการก็จะถูกแสดงผลออกมาwhile
จะเป็นเท็จจึงออก แต่อาจจะตั้งเงื่อนไขเพิ่มเติมบางอย่างที่ทำให้สิ้นสุดการทำซ้ำลงทันที ซึ่งทำได้โดยใช้คำสั่ง break
break
ลงหลังเงื่อนไขบางอย่างซึ่งอาจกำหนดโดย if
else
อาจถูกใช้คู่กับคำสั่ง while
ได้ โดยคำสั่งที่อยู่หลัง else
จะทำงานต่อเมื่อเงื่อนไขใน while
เป็นเท็จ ดังนั้นโดยทั่วไปแล้วเมื่อหลุดจากการทำซ้ำแบบปกติคำสั่งหลัง else
จะถูกทำ แต่หากออกจากการทำซ้ำเนื่องจาก break
จะทำให้คำสั่งตรง else
ไม่ถูกทำkhamtop = input('ผู้คิดค้นภาษาไพธอนมีชื่อเต็มว่า: ')
okat = 3
while(khamtop!='Guido van Rossum'):
print('ตอบผิด')
okat -= 1
if(okat==0):
print('คุณหมดโอกาสแล้ว')
break
print('คุณมีโอกาสตอบอีก',okat,'ครั้ง')
khamtop = input('ตอบใหม่: ')
else: print('คำตอบถูกต้อง')
ผู้คิดค้นภาษาไพธอนมีชื่อเต็มว่า: Ludwig van Beethoven
ตอบผิด
คุณมีโอกาสตอบอีก 2 ครั้ง
ตอบใหม่: Johannes Diderik van der Waals
ตอบผิด
คุณมีโอกาสตอบอีก 1 ครั้ง
ตอบใหม่: Vincent Willem van Gogh
ตอบผิด
คุณหมดโอกาสแล้ว
continue
n = 0
while(n<20):
n += 1
if(n==13): continue
print(n,end=' ')
1 2 3 4 5 6 7 8 9 10 11 12 14 15 16 17 18 19 20
while
ก็เช่นเดียวกับ if
สามารถมีการซ้อนกันได้ เกิดเป็นโครงสร้างเป็นชั้นๆ โดย while
ที่อยู่ด้านในจะต้องร่นเข้าไปอีกi = 2 # ค่าตัวคูณทางซ้าย เริ่มจาก 2
while(i<=5): # ทำซ้ำไปจนถึง 5
j = 1 # ค่าตัวคูณทางขวา เริ่มจาก 1 ในแต่ละรอบ
while(j<=5): # ทำซ้ำไปจนถึง 5
print(i,'×',j,'=',i*j, end=', ') # พิมพ์สูตรคูณ
j += 1 # เพิ่มทีละ 1 ในแต่ละรอบ
print('') # ขึ้นบรรทัดใหม่
i +=1 # พิมพ์จนจบบรรทัด ตัวซ้ายบวกเพิ่มอีก 1
2 × 1 = 2, 2 × 2 = 4, 2 × 3 = 6, 2 × 4 = 8, 2 × 5 = 10,
3 × 1 = 3, 3 × 2 = 6, 3 × 3 = 9, 3 × 4 = 12, 3 × 5 = 15,
4 × 1 = 4, 4 × 2 = 8, 4 × 3 = 12, 4 × 4 = 16, 4 × 5 = 20,
5 × 1 = 5, 5 × 2 = 10, 5 × 3 = 15, 5 × 4 = 20, 5 × 5 = 25,
while
break
เพื่อหยุดการทำซ้ำเมื่อเข้าเงื่อนไขบางอย่างได้else
หลัง while
จะทำงานเมื่อสิ้นสุดการทำซ้ำโดยไม่เจอ break
continue
เพื่อให้เริ่มการวนซ้ำรอบต่อไปใหม่ทันทีโดยที่ยังไม่ได้ทำจนจบwhile
สามารถซ้อนกันหลายชั้นได้ติดตามอัปเดตของบล็อกได้ที่แฟนเพจ