Coding Gun

การเขียน loops แต่ละแบบใน Python

ข้อดีของ Python คือเราไม่ได้มี syntax ให้เราเลือกเยอะมากจึงทำให้ code ของเราไม่แตกต่างกันมา ซึ่งการเขียน loops ใน Python ก็จะมีให้เลือกแค่ for-loop และ while-loop เท่านั้น

การเขียน For loop

เราจะใช้ for loop ในกรณีที่เรารู้จำนวนรอบที่ชัดเจนว่าจะทำกี่รอบ ใน python เราจะใช้ range ในการระบุจำนวนรอบ หรือ for ที่เข้าถึงสมาชิกแต่ละตัวใน list, dict หรือ tuple

เขียน loop แบบกำหนดรอบด้วย range()

เราจะใช้ function range ในการระบุจำนวนรอบโดยที่ range จะมีรูปแบบการใช้งาน ดังนี้

การวน loop สมาชิกใน list

ในกรณีที่คุณมี list, dictionary หรือ tuple คุณสามารถใช้ for loop ดึงสมาชิกแต่ละตัวออกมาใช้งานได้(เหมือนกับ foreach ในภาษาอื่นๆ) การวน loop สมาชิกแต่ละตัวภายใน list เราจะใช้ syntax แบบนี้

numbers = [ 1, 2, 3, 4, 5, 6]
for number in numbers
    print(number)

# ผลลัพธ์จะออกมาเป็น 1, 2, 3, 4, 5, 6

การวน loop สมาชิกใน dictionary

เช่นเดียวกับ list เราสามารถวน loop สมาชิกภายใน dict ออกมาใข้งานได้แบบนี้ ถ้ายังไม่เข้าใจเรื่อง dict ลองอ่านบทความเรื่อง การทำงานกับ dict ใน python

ตัวอย่าง สมมุติว่าเรามี dict ที่ชื่อว่า current_movies แบบนี้

current_movies = {'The Grinch': '11:00am',
                 'Rudolph': '1:00pm',
                 'Frosty the Snowman': '3:00pm',
                 'Christmas Vacation': '5:00pm'}

การวน loop สมาชิกใน Tuple

Tuple ก็จะเป็นอีก 1 data structure ที่สามารถวน loop เอาสมาชิกแต่ละตัวออกมาได้เหมือนกับ list และ dict ในตัวอย่างก่อนหน้า

การเขียน While loop

นอกจาก for-loop แล้วเรายังสามารถใช้ while-loop ในการวน loop ที่เรายังไม่รู้ว่าจะมีกี่รอบกันแน่ เช่น เราจะวน loop รับ input ไปเรื่อยๆ จนกว่า user จะพิทพิ์คำว่า exit แบบนี้

while True:
    answer = input("Please answer the question Yes or No(or Exit): ")
    if answer.lower() == 'exit':
        break
    print f"you type {answer.upper()}"

หรือเราอาจเขียน while loop เพื่อกำหนดตจำนวนรอบแบบ for-loop แบบนี้ก็ได้ แต่ไม่แนะนำให้ใช้เพราะ syntax แบบนี้จะอ่านยากกว่าการใช้ for-loop และ range เยอะ

i = 0
while i < 10:
    print(i)
    i = i + 1

Continue และ break

Continue และ Break สามารถใช้ได้ทั้ง for-loop และ while-loop

Phanupong Permpimol
Follow me