Python If Else พร้อมตัวอย่าง
การสร้างเงื่อนไข(If-Else) ถือว่าเป็นสิ่งที่ขาดไม่ได้ในโปรแกรมของเรา เพราะเราต้องการให้โปรแกรมสามารถตัดสินใจทำงานเองได้ ซึ่งใน Python เองไม่ได้เขียน If-Else แตกต่างไปจากภาษาอื่นๆมากนัก ซึ่งการจะเขียน If-Else ต้องรู้
Python condition
Python สามารถใช้เครื่องหมายทางคณิตศาสตร์ในการเปรียบเทียบได้ดังนี้
- เท่ากัน: a == b
- ไม่เท่ากับ: a != b
- น้อยกว่า: a < b
- น้อยกว่าหรือเท่ากับ: a <= b
- มากกว่า: a > b
- มากกว่าหรือเท่ากับ: a >= b
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 กรณี ดังนี้
- ถ้าอุณหภูมิ มากกว่า 35 องศา ให้แสดงข้อความว่า “อากาศร้อนมากๆ”
- ถ้าอุณหภูมิ อยู่ระหว่าง 25-35 องศา ให้แสดงข้อความว่า “อากาศปกติ”
- ถ้าอุณหภูมิ น้อยกว่า 25 องศา ให้แสดงข้อความว่า “อากาศหนาวมากๆ”
เราจะสามารถเขียนเป็น 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 น้อยลง