พื้นฐานการใช้ if else และ switch case ใน Python พร้อมตัวอย่างการใช้ match case (Python 3.10)

1. พื้นฐานการใช้เงื่อนไขใน Python

Python เป็นภาษาการเขียนโปรแกรมที่เรียบง่ายแต่ทรงพลัง และหนึ่งในโครงสร้างที่สำคัญที่สุดคือการใช้เงื่อนไข (Conditional Statement) เพื่อควบคุมการทำงานของโปรแกรม บทความนี้จะแนะนำพื้นฐานการใช้เงื่อนไขใน Python รวมถึงวิธีแทนที่ switch statement

เงื่อนไข (Conditional Statement) ใน Python คืออะไร?

การใช้เงื่อนไขใน Python คือการควบคุมการทำงานของโปรแกรมตามเงื่อนไขที่กำหนด เช่น เมื่อค่าของตัวแปรเปลี่ยนไป โปรแกรมสามารถเลือกการทำงานที่แตกต่างกันได้ โดยใน Python ใช้คำสั่ง if เพื่อทำสิ่งนี้

โครงสร้างพื้นฐานของ if-elif-else

โครงสร้างเงื่อนไขของ Python เขียนได้ดังนี้:

x = 10
if x > 5:
    print("x มีค่ามากกว่า 5")
elif x == 5:
    print("x เท่ากับ 5")
else:
    print("x น้อยกว่า 5")

ในโค้ดนี้ ถ้า x มากกว่า 5 จะพิมพ์ข้อความ “มากกว่า 5” หากไม่ใช่ จะตรวจสอบเงื่อนไขถัดไป และสามารถใช้ elif เพิ่มได้เมื่อมีหลายเงื่อนไข

ทำไม Python ถึงไม่มี switch statement

ภาษาส่วนใหญ่มี switch statement เพื่อเลือกทำงานตามค่าตัวแปร แต่ Python ไม่มี เหตุผลคือ Python เน้น “ความเรียบง่ายและชัดเจน” การใช้ if-elif-else ก็เพียงพอที่จะทำงานเดียวกันได้

2. เหตุผลที่ Python ไม่มี switch

นักออกแบบภาษา Python หลีกเลี่ยงไวยากรณ์ที่ซับซ้อน เพื่อให้โค้ดอ่านง่าย แม้ว่า switch จะสะดวก แต่ Python สามารถใช้ if-elif-else แทนได้

แนวคิด “โค้ดที่เรียบง่าย” ของ Python

ปรัชญาของ Python คือ “Simple is better” จึงลดการใช้ไวยากรณ์ที่ซ้ำซ้อน และใช้ if-elif-else อย่างยืดหยุ่นแทน

ตัวอย่าง if-elif-else แทน switch

day = "วันอังคาร"

if day == "วันจันทร์":
    print("วันนี้วันจันทร์")
elif day == "วันอังคาร":
    print("วันนี้วันอังคาร")
else:
    print("วันไม่ถูกต้อง")

วิธีนี้สามารถทำงานได้ แต่ถ้าเงื่อนไขเยอะ โค้ดจะยาวขึ้น ควรหาวิธีที่มีประสิทธิภาพกว่า

年収訴求

3. วิธีแทน switch ใน Python

เนื่องจาก Python ไม่มี switch เราสามารถใช้วิธีอื่น เช่น dict (Dictionary) หรือ match (ตั้งแต่ Python 3.10 เป็นต้นไป)

การใช้ Dictionary แทน switch

def case_one():
    return "นี่คือเคส 1"

def case_two():
    return "นี่คือเคส 2"

switch_dict = {
    1: case_one,
    2: case_two
}

x = 1
print(switch_dict.get(x, lambda: "เคสไม่ถูกต้อง")())

การใช้ Dictionary ทำให้โค้ดสั้น กระชับ และอ่านง่ายกว่า if-elif-else

ข้อดีและข้อควรระวังของ Dictionary

ข้อดีคืออ่านง่ายและจัดการหลายเงื่อนไขได้ดี แต่ใช้ได้กับกรณีที่ตรงไปตรงมา หากเงื่อนไขซับซ้อนควรใช้ if-elif-else

4. match case (Python 3.10+)

Python 3.10 เพิ่ม match ซึ่งทำงานคล้าย switch ของภาษาอื่น

โครงสร้างพื้นฐานของ match

def get_grade(score):
    match score:
        case 90 <= score <= 100:
            return "A"
        case 80 <= score < 90:
            return "B"
        case _:
            return "F"

grade = get_grade(85)
print(grade)

match ทำให้จัดการหลายเงื่อนไขได้ง่ายและชัดเจนขึ้น

年収訴求

5. แนวทางเลือกใช้วิธีต่างๆ

– ถ้าเงื่อนไขน้อย → ใช้ if-elif-else
– ถ้าเงื่อนไขเยอะหรือเรียกฟังก์ชัน → ใช้ dict
– ถ้าใช้ Python 3.10+ และต้องการ pattern matching → ใช้ match

年収訴求