Coding Gun

Python If Else พร้อมตัวอย่าง

การสร้างเงื่อนไข(If-Else) ถือว่าเป็นสิ่งที่ขาดไม่ได้ในโปรแกรมของเรา เพราะเราต้องการให้โปรแกรมสามารถตัดสินใจทำงานเองได้ ซึ่งใน Python เองไม่ได้เขียน If-Else แตกต่างไปจากภาษาอื่นๆมากนัก ซึ่งการจะเขียน If-Else ต้องรู้

Python condition

Python สามารถใช้เครื่องหมายทางคณิตศาสตร์ในการเปรียบเทียบได้ดังนี้

Casting ด้วย bool()

เราสามารถใช้ function bool ในการ cast ค่าของตัวแปรนั้นกลายเป็น Boolean แบบนี้

if bool(temperature) :
    print("Temperature is equivalent to true")

หรือจะเขียนเฉพาะชื่อตัวแปร เพื่อให้สั้นลงแบบนี้ก็ได้

if temperature :
    print("Temperature is equivalent to true")

ถ้าเราจะเขียนแค่ชื่อตัวแปร(temperature) เราต้องแน่ใจว่า ค่าที่ได้รับมานั้นเป็น Truthy หรือ Falsy

ตัวอย่างเช่น กรณีที่กรอกข้อมูลเข้าเป็นตัวเลข(int, float หรือ complex) ถ้ามีค่าที่ไม่ใช่ 0 จะมีค่าเทียบเท่า True(Truthy)

a = bool(42)         # ตัวแปร a จะมีค่าเป็น True
a = bool(-1)         # ตัวแปร a จะมีค่าเป็น True
a = bool(50.5)         # ตัวแปร a จะมีค่าเป็น True
a = bool(-2.5)         # ตัวแปร a จะมีค่าเป็น True

ถ้าเราใส่ข้อมูลเข้าเป็น 0 จะกลายเป็น False(Falsy)

a = bool(0)     # ตัวแปร a จะมีค่าเป็น False
a = bool(0.0)   # ตัวแปร a จะมีค่าเป็น False
a = bool(0j)    # ตัวแปร a จะมีค่าเป็น False (complex number)

หรือค่าอื่นๆที่เทียบเท่า False(Falsy) มีดังนี้

a = bool(None)  # ตัวแปร a จะมีค่าเป็น False
a = bool([])    # ตัวแปร a จะมีค่าเป็น False (Empty list)
a = bool(())    # ตัวแปร a จะมีค่าเป็น False (Empty tuple)
a = bool({})    # ตัวแปร a จะมีค่าเป็น False (Empty Dict)
a = bool("")    # ตัวแปร a จะมีค่าเป็น False (Empty string)
a = bool(range(0))  # ตัวแปร a จะมีค่าเป็น False (range(0,0) ไม่มีค่าเลย)

รูปแบบของการเขียน IF-Else

การเขียน If-Else ใน Python สามารถเขียนได้หลายรูปแบบ โดยเราจะแบ่งออกเป็นรูปแบบต่างๆ ดังนี้

เขียน If แบบบรรทัดเดียวจบ(One line)

รูปแบบนี้เป็นการเขียนให้สั้นและกระชับ เราจะพยายามเขียนอยู่ในบรรทัดเดียวเพื่ิอให้อ่านง่ายขึ้น ถ้าเขียนแล้วอ่านยากแนะนำว่าให้เว้นบรรทัดจะดีกว่า

if temperature > 30 : print("It's so hot")

เขียน IF แบบ 2 บรรทัด

ถ้าการเขียน If ในบรรทัดเดียวนั้นเริ่มอ่านยาก เราควรจะแยกออกมาเป็น 2 บรรทัดแบบนี้

if temperature > 30: 
    print("It's so hot")

เขียน IF-Else

เราจะใช้ Else เมื่อผลลัพธ์ของเงื่อนไข(True หรือ False) จะมีการทำงานไม่เหมือนกัน

if temperature > 30 : 
    print("It's so hot")
else:
    print("It's ok")

เขียน Elif(ElseIf)

เราจะใช้ elif(Elseif) ในกรณีที่ต้องการทางเลือกมากกว่า 2 ทาง เพราะ if-else จะมีแค่ 2 ทางเลือกคือ True หรือ False ตัวอย่างนี้เราจะสร้างทางเลือกว่า

a = 25
b = 30
if a > b:
    print("a มากกว่า b")
elif a == b:
    print("a เท่ากับ b")
else:
    print("a น้อยกว่า b")

ตัวอย่างการเขียน If-Else

ในตัวอย่างนี้เราจะให้ตรวจสอบเงื่อนไขของตัวแปร temperature ว่ามีค่าอยู่ในช่วงไหน โดยจะแบ่งออกเป็น 3 กรณี ดังนี้

เราจะสามารถเขียนเป็น code ได้แบบนี้

if temperature > 35:
    print("อากาศร้อนมากๆ")
elif temperature >= 25 and temperature <=30:
    print("อากาศปกติ")
else
    print("อากาศหนาวมากๆ")

สังเกตุว่าในบรรทัดที่ 3 เราสามารถเขียนให้สั้นลงแบบนี้ก็ได้

if temperature > 35:
    print("อากาศร้อนมากๆ")
elif temperature >= 25:
    print("อากาศปกติ")
else
    print("อากาศหนาวมากๆ")

การเขียนเงื่อนไขทั้งสองแบบจะให้ผลเหมือนกันเนื่องจากถ้า temperature > 30 จะเข้า if block ไปแล้ว ดังนั้นใน elif block เราจึงเขียนแค่ temperature >= 25 แบบนี้ก็ได้ แต่ข้อควรระวังคือ if block ต้องเป็นปลายเปิด(temperature > 30) และเงื่อนไขต้องไปทางเดียวกันเสมอ(ในตัวอย่างนี้เป็น มากกว่า เหมือนกันทั้งหมด)

หรือบางทีเราอาจกลับเงื่อนไขให้เป็นน้อยกว่า เหมือนกันทั้งหมดก็ได้

if temperature < 25:
    print("อากาศหนาวมากๆ")
elif temperature <=35:
    print("อากาศปกติ")
else
    print("อากาศร้อนมากๆ")

ไม่ควรเขียน แบบกลับไปกลับมาแบบนี้ จะทำให้ code อ่านยากขึ้น

if temperature < 25:
    print("อากาศหนาวมากๆ")
elif temperature > 35:
    print("อากาศร้อนมากๆ")
else
    print("อากาศปกติ")

Nested If

เราสามารถวาง If หรือ If-Else ไว้ภายใน If หรือ Else block ได้ แบบนี้

number = 5

if number >= 0:
    # if นี้จะทำงานเมื่อ number >= 0
    if number == 0:
        print('Number is 0')
    else:
        print('Number is positive')

# else ของ if number >= 0
else:
    print('Number is negative')

# ผลลัพธ์จะออกมาเป็น: Number is positive

สิ่งที่ต้องระวังคือการเขียนแบบนี้จะทำให้ code อ่านและแก้ไขได้ยาก ควรจะเลือก If-Elif-Else ก่อนเสมอ

เราสามารถแปลง Nested If ใหม่โดยใช้ If-Elif-Else แทน

if number > 0:
    print('Number is positive')
elif number == 0:
    print('Number is 0')
else
    print('Number is negative')

จะเห็นว่า Code แบบ Nested If(ตัวอย่างแรก) นั้นอ่านยากกว่า If-Elif-Else(ตัวอย่างที่ 2) มากๆ นอกจากนี้เรายังสามารถเปลี่ยน else ให้เป็น elif เพื่อให้เงื่อนไขชัดเจนขึ้น อ่านง่ายมากขึ้นแบบนี้ก็ได้

if number > 0:
    print('Number is positive')
elif number == 0:
    print('Number is 0')
elif number < 0     # เพิ่มความง่ายในการอ่านด้วยการเปลี่ยนจาก else เป็น elif
    print('Number is negative')

ยิ่ง code อ่านง่ายก็จะยิ่งมี Bug หรือมี Defect น้อยลง

Phanupong Permpimol
Follow me