On this page
เงื่อนไข (Conditionals: if / elif / else)
ทำให้โปรแกรมตัดสินใจได้ — เลือกทำคำสั่งต่างกันตามสถานการณ์
เงื่อนไขทำให้โปรแกรม "ฉลาด" ขึ้น เพราะเลือกทำสิ่งที่ต่างกันได้ตามข้อมูลที่เจอ เช่นถ้าคะแนนถึงเกณฑ์ให้ผ่าน ไม่ถึงให้ตก หัวใจคือคำว่า if (ถ้า)
if พื้นฐาน
if ตามด้วยเงื่อนไขและ : จากนั้นบรรทัดที่ย่อหน้าเข้าไปคือคำสั่งที่จะทำเมื่อเงื่อนไขเป็นจริง
age = 20
if age >= 18:
print("คุณบรรลุนิติภาวะแล้ว")
print("สามารถทำบัตรประชาชนได้") # ย่อหน้าเท่ากัน = อยู่ใน if เดียวกัน
print("จบโปรแกรม") # ไม่ย่อหน้า = ทำเสมอ ไม่ขึ้นกับ ifPython ใช้การย่อหน้า (มาตรฐาน 4 ช่องว่าง) เพื่อบอกว่าคำสั่งไหนอยู่ในบล็อกไหน ต่างจากภาษาอื่นที่ใช้วงเล็บปีกกา {} ถ้าย่อหน้าผิดจะ error หรือทำงานผิด ห้ามผสม space กับ tab เด็ดขาด
if / else — มีทางเลือกสำรอง
score = 45
if score >= 50:
print("ผ่าน")
else: # ถ้าเงื่อนไข if เป็นเท็จ
print("ไม่ผ่าน")
# ออก: ไม่ผ่านif / elif / else — หลายทางเลือก
elif (ย่อจาก else if) ใช้ตรวจเงื่อนไขถัดไปเมื่อเงื่อนไขก่อนหน้าเป็นเท็จ Python ตรวจจากบนลงล่าง เจออันแรกที่จริงก็ทำแล้วหยุด มีกี่ elif ก็ได้
score = 75
if score >= 80:
grade = "A"
elif score >= 70: # มาถึงนี่แปลว่า score < 80 แล้ว
grade = "B"
elif score >= 60:
grade = "C"
elif score >= 50:
grade = "D"
else:
grade = "F"
print(f"เกรด {grade}") # เกรด Bเพราะ Python หยุดที่เงื่อนไขแรกที่จริง ต้องเรียงจากเข้มงวดที่สุดไปหลวมที่สุด ถ้าสลับเอา score >= 50 ขึ้นก่อน คนได้ 90 ก็จะได้เกรด D เพราะเข้าเงื่อนไขแรกที่จริงทันที
เงื่อนไขซ้อนกัน (Nested if)
logged_in = True
is_admin = False
if logged_in:
if is_admin:
print("ยินดีต้อนรับผู้ดูแลระบบ")
else:
print("ยินดีต้อนรับผู้ใช้ทั่วไป")
else:
print("กรุณาเข้าสู่ระบบ")
# ออก: ยินดีต้อนรับผู้ใช้ทั่วไปเงื่อนไขซ้อนกันลึกมาก ๆ จะอ่านยาก มักเขียนใหม่ด้วย and ให้แบนราบกว่าได้ เช่น if logged_in and is_admin:
Truthy / Falsy — ค่าที่ถือว่าจริง/เท็จ
ใน if ค่าที่ไม่ใช่ bool ก็ใช้เป็นเงื่อนไขได้ Python มองบางค่าเป็น "เท็จ" (falsy) ได้แก่: 0, ค่าว่าง ("", [], {}), และ None ส่วนค่าอื่นเป็น "จริง" (truthy)
name = input("ชื่อ: ")
if name: # ข้อความว่าง = เท็จ, มีตัวอักษร = จริง
print(f"สวัสดี {name}")
else:
print("คุณไม่ได้ใส่ชื่อ")
items = []
if not items: # ลิสต์ว่าง = เท็จ, not = จริง
print("ตะกร้าว่าง")เขียนสั้นด้วย ternary และ match
# ternary: เลือกค่าในบรรทัดเดียว
age = 20
status = "ผู้ใหญ่" if age >= 18 else "เด็ก"
print(status) # ผู้ใหญ่
# match (Python 3.10+): เทียบหลายค่าแบบสะอาด
day = 3
match day:
case 1: print("จันทร์")
case 2: print("อังคาร")
case 3: print("พุธ")
case _: print("วันอื่น") # _ = กรณีอื่น ๆ ทั้งหมดเกร็ดเงื่อนไขที่ใช้จริงในงาน
score = 75
# เทียบช่วงแบบลูกโซ่ (chained) — เขียนเหมือนคณิตศาสตร์ได้เลย
if 0 <= score <= 100: # = (0 <= score) and (score <= 100)
print("คะแนนอยู่ในช่วงที่ถูกต้อง")
# เช็คว่าอยู่ในกลุ่มไหม ด้วย in (สั้นกว่าเขียน or หลายอัน)
day = "Sat"
if day in ("Sat", "Sun"): # แทน day=="Sat" or day=="Sun"
print("วันหยุด")= คือ "กำหนดค่า" (x = 5) ส่วน == คือ "เปรียบเทียบ" (if x == 5) เขียน if x = 5 จะ error ทันที โชคดีที่ Python ฟ้อง — แต่ในเงื่อนไขซับซ้อนให้ระวังเสมอ และจำว่าเช็ค None ใช้ if x is None ไม่ใช่ ==
สรุปหัวข้อนี้
- if ทำคำสั่งเมื่อเงื่อนไขจริง, else เป็นทางสำรอง, elif ตรวจเงื่อนไขถัดไป
- การย่อหน้าบอกขอบเขตของบล็อก — ผิดแล้ว error
- เรียงเงื่อนไขจากเข้มงวดไปหลวม เพราะหยุดที่อันแรกที่จริง
- ค่า falsy: 0, "", [], {}, None — ที่เหลือ truthy
- ternary และ match ช่วยเขียนเงื่อนไขให้สั้นและสะอาด
1) รับคะแนน แล้วแปลงเป็นเกรด A-F 2) รับเลข บอกว่าเป็นบวก ลบ หรือศูนย์ 3) รับปี ค.ศ. บอกว่าเป็นปีอธิกสุรทินไหม 4) เขียนเครื่องคิดเลขง่าย: รับเลข 2 ตัวและเครื่องหมาย (+,-,*,/) แล้วคำนวณตามนั้น (ใช้ if/elif)