
เขียนโปรแกรมภาษา Python ตอนที่ 137 การตรวจสอบเงื่อนไขด้วย If statement
ใน Python เราสามารถเขียนคำสั่งตรวจสอบเงื่อนไขโดยการใช้ If statement เพื่อการตรวจสอบเงื่อนไขบางอย่างว่าเป็นไปตามที่เราต้องการหรือไม่ ก่อนจะดำเนินการใด ๆ โดยการใช้คีย์เวิร์ด if
สำหรับการตรวจสอบเงื่อนไข เราสามารถใช้เครื่องหมายทางคณิตศาสตร์มาใช้ในการตรวจสอบได้ดังนี้
- ตรวจสอบว่าตัวแปร 2 ตัว เท่ากัน หรือไม่ :
x == y
- ตรวจสอบว่าตัวแปร 2 ตัว ไม่เท่ากัน หรือไม่ :
x != y
- ตรวจสอบว่าตัวแปรด้านซ้าย น้อยกว่า ตัวแปรด้านขวา หรือไม่ :
x < y
- ตรวจสอบว่าตัวแปรด้านซ้าย น้อยกว่าหรือเท่ากับ ตัวแปรด้านขวา หรือไม่ :
x <= y
- ตรวจสอบว่าตัวแปรด้านซ้าย มากกว่า ตัวแปรด้านขวา หรือไม่ :
x > y
- ตรวจสอบว่าตัวแปรด้านซ้าย มากกว่าหรือเท่ากับ ตัวแปรด้านขวา หรือไม่ :
a >= b
ตัวอย่างการใช้ If statement
การตรวจสอบเงื่อนไขด้วย If statement เราจะใช้คีย์เวิร์ด if
ในการตรวจสอบ ดังตัวอย่าง
x = 100 y = 150 if x < y: print("x หน้อยกว่า y")
- บรรทัดที่ 3 ใช้คีย์เวิร์ด
if
ตรวจสอบว่า ตัวแปรx
มีค่าน้อยกว่าตัวแปรy
หรือไม่ - บรรทัดที่ 4 ถ้าเงื่อนไขเป็นจริง คือตัวแปร
x
มีค่าน้อยกว่าตัวแปรy
ให้แสดงคำว่า “x หน้อยกว่า y” ออกทางหน้อจอ
ผลลัพธ์
x หน้อยกว่า y
การย่อหน้า
ใน Python จะใช้การย่อหน้า (โดยปกตินิยมใช้วิธีกดปุ่ม Tab บนคีย์บอร์ดเพื่อทำย่อหน้า) สำหรับการกำหนดขอบเขตของโค้ด ไม่เหมือนภาษาอื่น ๆ ที่โดยส่วนใหญ่จะใช้เครื่องหมายวงเล็บปีกกา {}
ในการกำหนดขอบเขตของโค้ด
ถ้าเราใช้ If statement โดยไม่มีย่อหน้า จะเกิด Error ขึ้นมา
x = 100 y = 150 if x < y: print('x หน้อยกว่า y')

จากตัวอย่างจะเห็นว่าเกิด IndentationError เนื่องจากเราใช้ If statement โดยไม่มีการกำหนดย่อหน้า ทำให้ Python ไม่รู้ว่าขอบเขตของโค้ดเริ่มจากตรงไหนและจบตรงไหนนั่นเอง
ดังนั้น เรื่องของย่อหน้าจึงเป็นเรื่องสำคัญที่เราต้องระมัดระวังเป็นพิเศษในการเขียนโปรแกรมภาษา Python
กรณีเงื่อนไขแรกไม่เป็นจริงและมีเงื่อนไขอื่นที่ต้องพิจารณาต่อ
ถ้าเรามีเงื่อนไขอื่น ๆ ที่ต้องพิจารณาต่อจากเงื่อนไขแรก ในกรณีที่เงื่อนไขแรกไม่เป็นจริง สามารถใช้คีย์เวิร์ด elif
เพื่อตรวจสอบเงื่อนไขอื่น ๆ ต่อไปเรื่อย ๆ ได้
x = 100 y = 100 if x < y: print('x หน้อยกว่า y') elif x == y: print("x เท่ากับ y")
- บรรทัดที่ 3 ใช้คีย์เวิร์ด
if
เพื่อตรวจสอบว่าตัวแปรx
มีค่าน้อยกว่าตัวแปรy
หรือไม่ - บรรทัดที่ 4 ถ้าเงื่อนไขเป็นจริงตามบรรทัดที่ 3 ให้แสดงข้อความ “x หน้อยกว่า y”
- บรรทัดที่ 5 ถ้าเงื่อนไขตามบรรทัดที่ 3 ไม่เป็นจริง จะข้ามมาทำงานที่บรรทัดนี้ ใช้คีย์เวิร์ด
elif
ตรวจสอบว่า ตัวแปรx
มีค่าเท่ากับตัวแปรy
หรือไม่ - บรรทัดที่ 6 ถ้าเงื่อนไขเป็นจริงตามบรรทัดที่ 5 ให้แสดงข้อความ “x เท่ากับ y”
จากโค้ด เนื่องจากตัวแปร x
และตัวแปร y
มีค่าเท่ากัน เงื่อนไขแรก (บรรทัดที่ 3) จึงไม่เป็นจริง จึงข้ามมาทำงานที่บรรทัดที่ 5 ต่อ ซึ่งตรวจสอบว่า ตัวแปร x
มีค่าเท่ากับตัวแปร y
หรือไม่ มาถึงตรงนี้เงื่อนไขเป็นจริงแล้ว โปรแกรมจึงทำงานตามเงื่อนไขนี้ คือแสดงข้อความ “x เท่ากับ y”
ผลลัพธ์
x เท่ากับ y
ทั้งนี้ เราสามารถใช้คีย์เวิร์ด elif
เพื่อตรวจสอบเงื่อนไขอื่น ๆ ต่อไปได้เรื่อย ๆ ตราบเท่าที่เงื่อนไขก่อนหน้านี้ยังไม่เป็นจริง ตัวอย่างเช่น โปรแกรมตัดเกรด อาจต้องใช้คีย์เวิร์ด elif
หลายครั้งหน่อย
score = 66 if score >= 80: print('เกรด : 4') elif score >= 75: print('เกรด : 3.5') elif score >= 70: print('เกรด : 3') elif score >= 65: print('เกรด : 2.5') elif score >= 60: print('เกรด : 2')
จากโค้ด โปรแกรมจะทำการตรวจสอบเงื่อนไขไปเรื่อย ๆ จนกว่าจะพบเงื่อนไขที่เป็นจริง
- ถ้าเงื่อนไขในบรรทัดที่ 2 ไม่เป็นจริง ก็จะข้ามไปตรวจสอบเงื่อนไขในบรรทัดที่ 4
- ถ้าเงื่อนไขในบรรทัดที่ 4 ไม่เป็นจริง ก็จะข้ามไปตรวจสอบเงื่อนไขในบรรทัดที่ 6
- ถ้าเงื่อนไขในบรรทัดที่ 6 ไม่เป็นจริง ก็จะข้ามไปตรวจสอบเงื่อนไขในบรรทัดที่ 8
- ถ้าเงื่อนไขในบรรทัดที่ 8 ไม่เป็นจริง ก็จะข้ามไปตรวจสอบเงื่อนไขในบรรทัดที่ 10
ผลลัพธ์ เนื่องจากค่าในตัวแปร score
เท่ากับ 66 ซึ่งตรงกับเงื่อนไขในบรรทัดที่ 8 คือ score
มากกว่าหรือเท่ากับ 65 ดังนั้นจึงได้ผลลัพธ์เป็น
เกรด : 2.5
กรณีไม่มีเงื่อนไขใดเป็นจริง
ในกรณีที่ไม่มีเงื่อนไขใด ๆ เป็นจริงเลย ซึ่งสามารถเกิดขึ้นได้ เราสามารถใช้คีย์เวิร์ด else
เพื่อดำเนินการใด ๆ ตามที่ต้องการ เช่น
score = 44 if score >= 80: print('เกรด : 4') elif score >= 75: print('เกรด : 3.5') elif score >= 70: print('เกรด : 3') elif score >= 65: print('เกรด : 2.5') elif score >= 60: print('เกรด : 2') else: print('เกรด : 0')
- บรรทัดที่ 12-13 ถ้าเงื่อนไขก่อนหน้านี้ไม่มีเงื่อนไขใดเป็นจริงเลย ให้แสดงข้อความ “เกรด : 0”
ผลลัพธ์
เกรด : 0
ถ้ามีเงื่อนไขที่ต้องตรวจสอบเพียงเงื่อนไขเดียว แต่ต้องการดำเนินการบางอย่างถ้าหากเงื่อนไขไม่เป็นจริง เราก็ไม่จำเป็นต้องใช้คีย์เวิร์ด elif
แต่สามารถใช้คีย์เวิร์ด else
ร่วมกับคีย์เวิร์ด if
ได้เลย ดังตัวอย่าง
score = 44 if score >= 65: print('คุณสอบผ่าน') else: print('คุณสอบไม่ผ่าน')
- บรรทัดที่ 2-3 ถ้าได้คะแนนตั้งแต่ 65 ขึ้นไป ให้แสดงข้อความ “คุณสอบผ่าน”
- บรรทัดที่ 4-5 ถ้าเงื่อนไขในบรรทัดที่ 2 ไม่เป็นจริง คือได้คะแนนน้อยกว่า 65 ให้แสดงข้อความ “คุณสอบไม่ผ่าน”
ผลลัพธ์
คุณสอบไม่ผ่าน
Short Hand If
ถ้าหลังจากการตรวจสอบเงื่อนไขแล้ว เรามี statement ที่ต้องดำเนินการเพียงแค่ statement เดียว เราสามารถเขียน statement นั้นไว้ในบรรทัดเดียวกับ If statement ได้เลย โดยจะไม่มี Error ใด ๆ
score = 99 if score >= 65: print('คุณสอบผ่าน')
ผลลัพธ์
คุณสอบผ่าน
Short Hand If … Else
ถ้าหลัง If statement มีคำสั่งที่ต้องดำเนินการเพียง statement เดียว และหลัง Else statement ก็มีคำสั่งที่ต้องดำเนินการเพียง statement เดียวเช่นกัน เราสามารถวางคำสั่งทั้งหมดไว้ในบรรทัดเดียวกันได้เลย โดยมีรูปแบบการใช้งานดังตัวอย่าง
score = 50 print('คุณสอบผ่าน') if score >= 65 else print('คุณสอบไม่ผ่าน')
ผลลัพธ์
คุณสอบไม่ผ่าน
เราสามารถเขียน else statement หลาย ๆ อันไว้ในบรรทัดเดียวกันก็ได้ ตราบใดที่คำสั่งการดำเนินการหลัง else
มีเพียง statement เดียว ดังตัวอย่าง
score = 63 print('เกรด : 4') if score >= 80 else print('เกรด : 3.5') if score >= 75 else print('เกรด : 3') if score >= 70 else print('เกรด : 2.5') if score >= 65 else print('เกรด : 2') if score >= 60 else print("สอบตก")
ผลลัพธ์
เกรด : 2
แต่ถ้ายาวเกินไป แนะนำให้เขียนไว้คนละบรรทัดจะดูง่ายกว่านะครับ
การเขียน If statement ลักษณะนี้เรียกว่า Ternary Operators หรือ Conditional Expressions
การใช้คีย์เวิร์ด and ร่วมกัน If statement
เราสามารถใช้คีย์เวิร์ด and
ร่วมกับคีย์เวิร์ด if
เพื่อทำการตรวจสอบเงื่อนไขหลาย ๆ เงื่อนไข โดยที่ทุก ๆ เงื่อนไขต้องเป็นจริง ดังตัวอย่าง
score = 63 if score is not None and score > 60: print("คุณสอบผ่าน")
- บรรทัดที่ 2 เป็นการตรวจสอบ 2 เงื่อนไข คือ score ต้องไม่เป็น None และต้องมากกว่า 60 ด้วย
จากโค้ดตัวอย่าง ค่าของตัวแปร score คือ 63 ไม่ไช่ค่า None และมากกว่า 60 ด้วย ถือว่าเป็นจริงทั้ง 2 เงื่อนไข จึงได้ผลลัพธ์เป็น
คุณสอบผ่าน
การใช้คีย์เวิร์ด or ร่วมกัน If statement
เราสามารถใช้คีย์เวิร์ด or
ร่วมกับคีย์เวิร์ด if
เพื่อทำการตรวจสอบเงื่อนไขหลาย ๆ เงื่อนไข โดยที่เงื่อนไขใดเงื่อนไขหนึ่งต้องเป็นจริง ดังตัวอย่าง
score = 40 if score is None or score < 60: print("คุณสอบไม่ผ่าน")
- บรรทัดที่ 2 เป็นการตรวจสอบ 2 เงื่อนไข โดยถ้าเงื่อนไขใดเงื่อนไขหนึ่งเป็นจริงก็ถือว่าตรงตามเงื่อนไขที่ต้องการ คือ score เป็น None หรือน้อยกว่า 60 อย่างใดอย่างหนึ่ง
จากโค้ด score ไม่ใช่ None แต่น้อยกว่า 60 ถือว่าเข้าเงื่อนไข จึงไปทำงานที่ statement ภายในเงื่อนไข ทำให้ได้ผลลัพธ์เป็น
คุณสอบไม่ผ่าน
การใช้คีย์เวิร์ด not ร่วมกัน If statement
คีย์เวิร์ด not
ใช้สำหรับกลับค่าของผลลัพธ์ในเงื่อนไขให้เป็นตรงกันข้าม คือ กลับจริงเป็นเท็จ กลับเท็จเป็นจริง
เราสามารถใช้คีย์เวิร์ด not
ร่วมกับ If statement ดังแนวทางต่อไปนี้
fail = False if not fail: print("คุณสอบผ่าน")
- บรรทัดที่ 1 สร้างตัวแปร
fail
ขึ้นมา กำหนดค่าเป็นFalse
- บรรทัดที่ 2 ใช้คีย์เวิร์ด
not
ร่วมกับคีย์เวิร์ดif
ตรวจสอบว่า ถ้าไม่ fail แสดงว่าสอบผ่าน ให้ไปเรียก statement ในบรรทัดที่ 3 มาทำงาน
จากโค้ด ตัวแปร fail
มีค่าเป็น False
เมื่อมีคีย์เวิร์ด not
นำหน้า ก็จะกลับค่าเป็น True
จึงได้ผลลัพธ์เป็น
คุณสอบผ่าน
Nested If หรือ If statement ซ้อนกัน
เราสามารถใช้ If statement ซ้อนกันหลาย ๆ ชั้นได้ ดังแนวทางต่อไปนี้
score = 74 if score > 59: if score >= 80: print('เกรด : 4') elif score >= 75: print('เกรด : 3.5') elif score >= 70: print('เกรด : 3') elif score >= 65: print('เกรด : 2.5') elif score >= 60: print('เกรด : 2') else: print('เกรด : 0')
- บรรทัดที่ 3-12 เป็นการใช้ If statement ซ้อนอยู่ภายใน If statement อื่นอีกที
ผลลัพธ์
เกรด : 3
การใช้ If statement ซ้อนกันหลาย ๆ ชั้น ต้องระวังเรื่องย่อหน้าด้วย เพราะนั่นคือการกำหนดขอบเขตของโค้ด ถ้าย่อหน้าผิดพลาด การทำงานก็ผิดพลาด หรืออาจเกิด Error ขึ้นได้
The pass Statement
If statement ไม่สามารถปล่อยว่างได้ คือเมื่อมีการตรวจสอบเงื่อนไขด้วยคีย์เวิร์ด if
แล้ว ต้องมี statement สำหรับทำงานภายในเงื่อนไขนั้นอย่างน้อย 1 บรรทัด ไม่เช่นนั้นจะเกิด Error
score = None if score is None: #เขียนแบบนี้จะเกิด Error

แต่ถ้าเรายังไม่มีไอเดียว่าถ้าเงื่อนไขนั้นเป็นจริงจะให้ทำอะไร หรือไม่ต้องการให้ทำอะไรเลย เราสามารถเขียน pass
statement ลงไปแทนได้ เพื่อหลีกเลี่ยงข้อผิดพลาด
พูดแบบชาวบ้าน ๆ ก็คือ ให้ผ่านไปก่อนนั่นเอง
ตัวอย่างการใช้ pass
statement
score = None if score is None: pass
จากโค้ด หมายความว่า ถ้า score เป็น None ไม่ต้องทำอะไร และหลีกเลี่ยง Error ได้