อธิบายการโยงเงื่อนไขด้วยคำสั่ง if ใน Python
- พื้นฐานของคำสั่ง if (if, elif, else)
- ระบุเงื่อนไขด้วยตัวดำเนินการเปรียบเทียบ ฯลฯ
- ระบุเงื่อนไขตามหมายเลข รายการ ฯลฯ
- ระบุเงื่อนไขหรือการปฏิเสธหลายรายการด้วยตัวดำเนินการเชิงตรรกะ (และ หรือไม่)
- นิพจน์เงื่อนไขในบรรทัดใหม่และหลายบรรทัด
นอกจากนี้ยังมีตัวดำเนินการ ternary ที่อธิบายสาขาที่มีเงื่อนไขในบรรทัดเดียว ดูบทความต่อไปนี้
- ที่เกี่ยวข้อง:การเขียนคำสั่ง if ในหนึ่งบรรทัดด้วยโอเปอเรเตอร์ ternary ของ Python (ตัวดำเนินการแบบมีเงื่อนไข)
พื้นฐานของคำสั่ง 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 is y
x is not y
x in y
x not in 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 ก็ไม่จำเป็นต้องกังวลเกี่ยวกับสิ่งเหล่านี้ เนื่องจากพวกมันประเมินว่าจริงหรือเท็จ ดูบทความต่อไปนี้สำหรับรายละเอียด
- ที่เกี่ยวข้อง:ตัวดำเนินการเชิงตรรกะของ Python “และ, หรือไม่” (สันธานเชิงตรรกะ, การแยกทางตรรกะ, การปฏิเสธ)
สามารถใช้ได้และหรือมากกว่าหนึ่งครั้ง
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
- ที่เกี่ยวข้อง:การเขียนสตริงยาวหลายบรรทัดใน Python