วิธีเขียนเงื่อนไขสาขาด้วยคำสั่ง if ใน Python

ธุรกิจ

อธิบายการโยงเงื่อนไขด้วยคำสั่ง if ใน Python

  • พื้นฐานของคำสั่ง if (if, elif, else)
  • ระบุเงื่อนไขด้วยตัวดำเนินการเปรียบเทียบ ฯลฯ
  • ระบุเงื่อนไขตามหมายเลข รายการ ฯลฯ
  • ระบุเงื่อนไขหรือการปฏิเสธหลายรายการด้วยตัวดำเนินการเชิงตรรกะ (และ หรือไม่)
  • นิพจน์เงื่อนไขในบรรทัดใหม่และหลายบรรทัด

นอกจากนี้ยังมีตัวดำเนินการ ternary ที่อธิบายสาขาที่มีเงื่อนไขในบรรทัดเดียว ดูบทความต่อไปนี้

พื้นฐานของคำสั่ง if (if, elif, else)

รูปแบบพื้นฐานของคำสั่ง if มีดังนี้

if Conditional expression 1:
    `Processing to be performed if Expression 1 is True.`
elif Conditional expression 2:
    `Processing to be performed when expression 1 is false and expression 2 is true.`
elif Expression 3:
    `Process when expression 1 and 2 are false and expression 3 is true.`
...
else:
    `Processing when all conditionals are false.`

“เอลิฟ” ตรงกับ “เอลิฟ” ในภาษาซีและภาษาอื่นๆ และอาจมี “เอลฟ์” กี่ตัวก็ได้

หากมีนิพจน์เงื่อนไขหรือการประมวลผลเพียงรายการเดียวเมื่อไม่จำเป็นต้องเป็นเท็จ บล็อก “elif” และ “else” สามารถละเว้นได้

ระบุเงื่อนไขด้วยตัวดำเนินการเปรียบเทียบ ฯลฯ

ระบุเงื่อนไขด้วยการดำเนินการที่ส่งคืนประเภทบูล (จริง เท็จ) เช่น ตัวดำเนินการเปรียบเทียบ

ตัวดำเนินการเปรียบเทียบ Python มีดังนี้

โอเปอเรเตอร์ผลลัพธ์
x < yจริงถ้า x น้อยกว่า y
x <= yจริงถ้า x น้อยกว่าหรือเท่ากับ y
x > yจริงถ้า x มากกว่า y
x >= yจริงถ้า x มากกว่าหรือเท่ากับ y
x == yจริงถ้าค่า x และ y เท่ากัน
x != yจริงถ้าค่า x และ y ไม่เท่ากันx is yจริงถ้า x และ y เป็นวัตถุเดียวกันx is not yจริงถ้า x และ y ไม่ใช่วัตถุเดียวกันx in yจริงถ้า x มีอยู่ใน yx not in yจริงถ้า x ไม่มีอยู่ใน y

ตัวอย่าง. เพื่อความสะดวก มันถูกกำหนดให้เป็นฟังก์ชันที่มีคำสั่ง def

def if_test(num):
    if num > 100:
        print('100 < num')
    elif num > 50:
        print('50 < num <= 100')
    elif num > 0:
        print('0 < num <= 50')
    elif num == 0:
        print('num == 0')
    else:
        print('num < 0')

if_test(1000)
# 100 < num

if_test(70)
# 50 < num <= 100

if_test(0)
# num == 0

if_test(-100)
# num < 0

สิ่งต่อไปนี้สามารถเขียนในลักษณะที่ไม่ซ้ำกับ Python ดูบทความต่อไปนี้สำหรับรายละเอียด
a < x < b

def if_test2(num):
    if 50 < num < 100:
        print('50 < num < 100')
    else:
        print('num <= 50 or num >= 100')

if_test2(70)
# 50 < num < 100

if_test2(0)
# num <= 50 or num >= 100
  • #ERROR!
  • !=

ข้างต้นเป็นการเปรียบเทียบค่า เพื่อเปรียบเทียบอัตลักษณ์ของวัตถุ ใช้ดังต่อไปนี้

  • is
  • is not

ตัวอย่างเช่น เมื่อเปรียบเทียบจำนวนเต็มและจำนวนจุดทศนิยม “==” จะส่งคืนค่า จริง หากค่าเท่ากัน แต่ “is” คืนค่าเท็จ เนื่องจากเป็นอ็อบเจ็กต์ต่างกัน

i = 10
print(type(i))
# <class 'int'>

f = 10.0
print(type(f))
# <class 'float'>

print(i == f)
# True

print(i is f)
# False

นอกจากนี้ยังเป็นไปได้ที่จะสร้างเงื่อนไขว่ารายการหรือสตริงมีองค์ประกอบเฉพาะ (อักขระ)

  • in:รวม
  • not in:ไม่รวม
def if_test_in(s):
    if 'a' in s:
        print('a is in string')
    else:
        print('a is NOT in string')

if_test_in('apple')
# a is in string

if_test_in('melon')
# a is NOT in string

ระบุเงื่อนไขตามหมายเลข รายการ ฯลฯ

นิพจน์เงื่อนไขของคำสั่ง if สามารถเป็นตัวเลข รายการ หรืออ็อบเจ็กต์อื่นๆ ที่ไม่ใช่ประเภทบูล (จริง หรือ เท็จ)

if 10:
    print('True')
# True

if [0, 1, 2]:
    print('True')
# True

ในนิพจน์เงื่อนไขของ Python if คำสั่ง อ็อบเจกต์ต่อไปนี้ถือเป็นเท็จ

  • ค่าคงที่ที่กำหนดให้เป็นเท็จ:None,false
  • ศูนย์ในประเภทตัวเลข:0,0,0j,Decimal(0),Fraction(0, 1)
  • ลำดับหรือคอลเลกชันที่ว่างเปล่า:',(),[],{},set(),range(0)Truth Value Testing — Built-in Types — Python 3.10.4 Documentation

ตัวเลขที่แสดงศูนย์ สตริงว่าง รายการ ฯลฯ ถือเป็นเท็จ อื่น ๆ ทั้งหมดถือเป็นจริง

วิธีตรวจสอบวัตถุด้วย bool()

print(bool(10))
# True

print(bool(0.0))
# False

print(bool([]))
# False

print(bool('False'))
# True

สามารถใช้เพื่อเขียนขั้นตอนง่ายๆ เมื่อรายการว่างเปล่า เป็นต้น

def if_test_list(l):
    if l:
        print('list is NOT empty')
    else:
        print('list is empty')

if_test_list([0, 1, 2])
# list is NOT empty

if_test_list([])
# list is empty

โปรดทราบว่าสตริง ‘False’ จะเป็นจริงด้วย เพราะดังที่แสดงในตัวอย่างด้านบน สตริงใดๆ ที่ไม่ว่างเปล่าในสตริงจะเป็นจริง’ ในการแปลงสตริงเฉพาะ เช่น ‘True’ หรือ ‘False’ เป็น 1,0 ให้ใช้ strtobool() ในโมดูล distutils.util

ระบุเงื่อนไขหรือการปฏิเสธหลายรายการด้วยตัวดำเนินการเชิงตรรกะ (และ หรือไม่)

ตัวดำเนินการเชิงตรรกะ (และหรือไม่ใช่) สามารถใช้เพื่อจัดการกับการรวมเชิงตรรกะ การแตกแยกทางตรรกะ และการปฏิเสธเงื่อนไขหลายเงื่อนไข

โอเปอเรเตอร์(ผลลัพธ์ (ในนิพจน์เงื่อนไขของคำสั่ง if)
x and yจริงถ้าทั้ง x และ y เป็นจริง
x or yจริงถ้า x หรือ y เป็นจริง
not xเท็จ ถ้า x เป็นจริง จริง ถ้า x เป็นเท็จ
def if_test_and_not(num):
    if num >= 0 and not num % 2 == 0:
        print('num is positive odd')
    else:
        print('num is NOT positive odd')

if_test_and_not(5)
# num is positive odd

if_test_and_not(10)
# num is NOT positive odd

if_test_and_not(-10)
# num is NOT positive odd

อันที่จริง “x และ y” และ “x หรือ y” ไม่คืนค่า True หรือ False แต่อาจเป็น x หรือ y ตราบใดที่ใช้ในนิพจน์เงื่อนไขในคำสั่ง if ก็ไม่จำเป็นต้องกังวลเกี่ยวกับสิ่งเหล่านี้ เนื่องจากพวกมันประเมินว่าจริงหรือเท็จ ดูบทความต่อไปนี้สำหรับรายละเอียด

สามารถใช้ได้และหรือมากกว่าหนึ่งครั้ง

def if_test_and_not_or(num):
    if num >= 0 and not num % 2 == 0 or num == -10:
        print('num is positive odd or -10')
    else:
        print('num is NOT positive odd or -10')

if_test_and_not_or(5)
# num is positive odd or -10

if_test_and_not_or(10)
# num is NOT positive odd or -10

if_test_and_not_or(-10)
# num is positive odd or -10

นิพจน์เงื่อนไขในบรรทัดใหม่และหลายบรรทัด

เมื่อใช้นิพจน์เงื่อนไขหลายรายการโดยเชื่อมต่อกับ “และ” หรือ “หรือ” และแต่ละบรรทัดยาวขึ้น บางครั้งจำเป็นต้องแบ่งนิพจน์เงื่อนไขและเขียนในหลายบรรทัด

ตัวแบ่งบรรทัดสามารถทำได้โดยใช้แบ็กสแลชหรือโดยการล้อมทั้งบรรทัดไว้ในวงเล็บ

def if_test_and_backslash(num):
    if num >= 0 \
       and not num % 2 == 0:
        print('num is positive odd')
    else:
        print('num is NOT positive odd')

if_test_and_backslash(5)
# num is positive odd

def if_test_and_brackets(num):
    if (num >= 0
        and not num % 2 == 0):
        print('num is positive odd')
    else:
        print('num is NOT positive odd')

if_test_and_brackets(5)
# num is positive odd

คุณสามารถใช้แบ็กสแลชเพื่อแบ่งบรรทัดได้มากเท่าที่คุณต้องการ ในทำนองเดียวกัน คุณสามารถขึ้นบรรทัดใหม่กี่ครั้งก็ได้ภายในวงเล็บ ไม่มีการจำกัดการเยื้อง

โปรดทราบว่านี่เป็นเทคนิคที่ใช้ได้ทุกที่ในโค้ด Python ไม่ใช่แค่ในคำสั่ง if