Python – if…else

การใช้ประโยคเงื่อนไข if…else

ประโยคเงื่อนไข if…else ใช้เมื่อต้องการกำหนดเงื่อนไขเพื่อตัดสินว่าจะทำชุดคำสั่งที่กำหนดไว้หรือไม่

วิธีการใช้ if
if <เงื่อนไข>:
    <คำสั่งลำดับที่ 1>
    <คำสั่งลำดับที่ 2>
    <คำสั่งลำดับถัดไป...>

การใช้งาน if

รูปภาพ แสดงการทำงานของ if

คำสั่ง: เป็นคำสั่งย่อยที่จะถูกดำเนินการก็ต่อเมื่อเงื่อนไขที่กำหนดนั้นเป็นจริงเท่านั้น โดยกลุ่มคำสั่งที่จะถูกดำเนินการนั้นจะทำการบอกขอบเขตโดยการย่อหน้า(indent)เพื่อบอกจุดเริ่มต้นและจุดสิ้นสุดของชุดคำสั่งเมื่อจบการย่อหน้า(indent)ดังกล่าวแล้ว
เงื่อนไข: เป์นเงื่อนไขที่ใช้ตัดสินใจในการทำคำสั่ง สำหรับเงื่อนไขนั้น หากไม่เป็น 0 จะมีค่าเป็น “จริง” ส่วนหากเงื่อนไขมีค่า None และ 0 จะมีค่าเป็น “เท็จ”

ตัวอย่างการใช้งาน

score = 80
if score > 60:
    print "Pass"
# โปรแกรมจะทำการปรินท์ข้อมูล Pass
# score > 60 จะเป็นเงื่อนไขในการรันชุดคำสั่ง
# print "Pass" เป็นคำสั่งที่จะถูกเรียกใช้ หากเงื่อนไขที่กำหนดไว้เป็นจริง(ในกรณีนี้คือต้องมีคะแนนมากกว่า 60) โดยการระบุกลุ่มคำสั่งจะแบ่งแยกจากตัวเงื่อนไขโดยอาศัยการย่อหน้า เพื่อกำหนดขอบเขตของกลุ่มคำสั่ง

วิธีการใช้ if…else
if <เงื่อนไข>:
    <ชุดคำสั่งที่ 1>
else:
    <ชุดคำสั่งที่ 2>

การใช้งาน if...else...

รูปภาพ แสดงการทำงานของ if…else

สำหรับ if…else โปรแกรมจะทำการทดสอบเงื่อนไข โดย
หากประโยคเงื่อนไขนั้นเป็นจริง โปรแกรมจะดำเนินการทำคำสั่งจากกลุ่มคำสั่งภายในบล๊อกของ if (ซึ่งแยกจากประโยคเงื่อนไขโดยใช้ย่อหน้าซึ่งก็คือ ชุดคำสั่งที่ 1)
หากประโยคเงื่อนไขนั้นเป็นเท็จ โปรแกรมจะดำเนินการตามกลุ่มคำสั่งภายในบล๊อก else โดยมีย่อหน้าเป็นตัวบอกขอบเขตของชุดคำสั่ง(ชุดคำสั่งที่ 2)
ตัวอย่างการใช้งาน

score = 50
if score > 60:
    print "Pass"
else:
    print "Fail"
# โปรแกรมจะทำการปรินท์ข้อมูล Fail เนื่องจากคะแนนน้อยกว่าเงื่อนไขที่กำหนดคือ 60
# score > 60 จะป็นเงื่อนไขในการตัดสินใจรันชุดคำสั่ง
# print "Pass" จะเป็นคำสั่งที่ถูกดำเนินการหากเงื่อนไขเป็นจริง บอกขอบเขตของกลุ่มคำสั่งที่ดำเนินการด้วยการย่อหน้า
# print "Fail" จะเป็นคำสั่งที่ถูกดำเนินการหากเงื่อนไขเป็นเท็จ บอกขอบเขตของกลุ่มคำสั่งที่ดำเนินการด้วยการย่อหน้า

วิธีการใช้ if…elif…else
if <เงื่อนไข 1> :
    <ชุดคำสั่งที่ 1>
elif <เงื่อนไข 2> :
    <ชุดคำสั่งที่ 2>
else:
    <ชุดคำสั่งที่ 3>

โดยการเพิ่ม elif จะเพิ่มความสามารถให้ของประโยคเงื่อนไขให้สามารถตรวจสอบเงื่อนไขในการตัดสินใจดำเนินการชุดคำสั่งต่างๆ ได้มากกว่า 1 เงื่อนไข

การใช้งาน if...elif...else...

รูปภาพ แสดงการทำงานของ if…elif…else

พิจารณาเงื่อนไข 1
หาก<เงื่อนไข 1> เป็นจริง โปรแกรมจะดำเนินการกับชุดคำสั่งในย่อหน้าถัดจากเงื่อนไข(ชุดคำสั่งที่ 1) และจะไม่ทำการตรวจสอบเงื่อนไขอื่นอีก
หาก <เงื่อนไข 1> เป็นเท็จ โปรแกรมจะตรวจสอบเงื่อนไข2

พิจารณาเงื่อนไข 2(สำหรับกรณีที่เงื่อนไข 1 เป็นเท็จเท่านั้น)
หาก <เงื่อนไข 2>เป็นจริง โปรแกรมจะดำเนินการกับชุดคำสั่งในย่อหน้าถัดจากเงื่อนไข(ชุดคำสั่งที่ 2) และจะไม่ทำการตรวจสอบเงื่อนไขอื่นอีก
หาก <เงื่อนไข 2> เป็นเท็จ โปรแกรมจะดำเนินการกับชุดคำสั่งในย่อหน้าถัดจาก else(ชุดคำสั่งที่ 3)

โดยในระหว่าง if…elif…else นั้นจะมีเพียงชุดคำสั่งเดียวจากทั้ง 3 ชุดคำสั่งที่จะถูกดำเนินการ และสำหรับรูปประโยค if นั้นจะมีบล๊อกสำหรับ else เพียงบล๊อกเดียวแต่มีบล๊อก elif หลายบล๊อกได้
ตัวอย่างการใช้งาน

score = 75
if score < 70 and score >= 60:
    print "Grade C"
elif score < 80 and score >=70:
    print "Grade B"
elif score <= 100 and score >= 80:
    print "Grade A"
else:
    print "Fail"
    
# โปรแกรมจะทำการรปรินต์ค่า Grade B
# หากคะแนนอยู่ระหว่าง 60 <= คะแนน < 70 จะทำการพิมพ์ค่า Grade C
# หากคะแนนอยู่ระหว่าง 70 <= คะแนน < 80 จะทำการพิมพ์ค่า Grade B
# หากคะแนนอยู่ระหว่าง 80 <= คะแนน <= 100 จะทำการพิมพ์ค่า Grade A

วิธีการใช้ nested if

เราสามารถที่จะใช้ if…elif…else ซ้อนอยู่ภายใน if…elif…else อีกชั้นหนึ่งได้ ซึ่งในทางการเขียนโปรแกรมจะเรียกการเขียนแบบนี้ว่า nested โดยการแบ่งแต่ละชั้นของบล็อกดังกล่าว ก็อาศัยการย่อหน้าเพื่อบอกขอบเขตของแต่ละบล๊อก แต่การเขียนแบบนี้ก็อาจจะทำให้สับสนได้เมื่อโปรแกรมมีความซับซ้อนมากขึ้นหรือกลับมาอ่านโค้ดในภายหลัง
ตัวอย่างการใช้งาน

score = 95

if score < 70 and score >= 60:
    print "Grade C"
elif score < 80 and score >=70:
    print "Grade B"
elif score <= 100 and score >= 80:
    print "Grade A"
    if score >= 90:
        print "Greater than 90"
else:
    print "Fail"

# โดยโปรแกรมจะทำการปรินท์ค่า Grade A และ Greater than 90
# หากคะแนนอยู่ระหว่าง 60 <= คะแนน < 70 จะทำการพิมพ์ค่า Grade C
# หากคะแนนอยู่ระหว่าง 70 <= คะแนน < 80 จะทำการพิมพ์ค่า Grade B
# หากคะแนนอยู่ระหว่าง 80 <= คะแนน <= 100 จะทำการพิมพ์ค่า Grade A
# เราทำการใช้ nested if โดยการเพิ่มเงื่อนไขว่า หากมีช่วงคะแนน 80 <= score <= 100 แลหากมีคะแนนมากกว่า 90 นอกจากจะพิมพ์ค่า Grade A โปรแกรมยังพิมพ์ค่าง Greater than 90 ออกมาอีกด้วย

 

แหล่งที่มาของข้อมูล https://www.programiz.com/python-programming/if-elif-else
สร้างรูปภาพ flow diagram จาก draw.io