ตัวอย่างการใช้ if + any บนภาษา Python แบบอธิบายโคตรสั้น

ลดความยาวของ Code ด้วย if + any บน Python

Nopnithi Khaokaew (Game)
2 min readMay 30, 2018

— — — — — — — — — — — — — — —
สารบัญเนื้อหาทั้งหมด (My Contents)
— — — — — — — — — — — — — — —

โจทย์: ผมต้องการเขียนโปรแกรมตรวจสอบประโยคที่ผมพูด แล้วโปรแกรมจะบอกว่าชอบผลไม้หรือสัตว์? ข้อแม้คือผมจะชอบแค่อย่างเดียวนะ (โจทย์โคตรสิ้นคิด)

ผมจะเริ่มจาก skill การเขียนแบบกากๆไปจนถึงวิธีการเอาฟังก์ชั่น any เข้ามาช่วยให้ logic หรือโปรแกรมสั้นลง ใครที่เป็นอยู่แล้วข้ามไปดูช่วงท้ายเลยก็ได้ครับ

ประโยคคือ I like apples
ส่วน keyword ที่กำหนดประเภทไว้มี 4 คำ คือ apple, banana, dog, cat

เอาแบบสมัยประถมตอนหัดเขียนโปรแกรมเองใหม่ๆ ผมจะเขียนแบบนี้…

sentence = "I like an apples"

if "apple" in sentence:
print("I like fruits")
elif "banana" in sentence:
print("I like fruits")
elif "dog" in sentence:
print("I like animals")
elif "cat" in sentence:
print("I like animals")

หลังจากผมได้เรียน programming มาแล้ว ผมจะเอา boolean (or) เข้ามาช่วยให้ code สั้นลงครับ

sentence = "I like apples"

if "apple" in sentence or "banana" in sentence:
print("I like fruits")
elif "dog" in sentence or "cat" in sentence:
print("I like animals")

จริงๆมันก็โอเคแล้วนะ แต่ปัญหาคือถ้าผมมี keyword สัก 100 คำ บรรทัด if ผมคงยาวเหยียดแน่นอนถูกมั้ย งั้นผมเอา for loop กับ list มาช่วยครับ

sentence = "I like apples"
fruits = ["apple", "banana"]
animals = ["dog", "cat"]

for keyword in fruits:
if keyword in sentence:
print("I like fruits")
for keyword in animals:
if keyword in sentence:
print("I like animals")

สวยงาม แต่ if ใน Python ยังย่อสั้นลงได้อีกนี่

sentence = "I like apples"
fruits = ["apple", "banana"]
animals = ["dog", "cat"]

for keyword in fruits:
print("I like fruits") if keyword in sentence else False
for
keyword in animals:
print("I like animals") if keyword in sentence else False

มันก็ใช้ได้อยู่ แต่สิ่งที่ผมอยากแชร์คือฟังก์ชั่นพิเศษอย่าง any ครับ เมื่อรวมกับ for และ list จะทำให้โปรแกรมเราสั้นลงและสวยงามแค่ไหน ลองดูครับ

sentence = "I like apples"
fruits = ["apple", "banana"]
animals = ["dog", "cat"]

if any(keyword in sentence for keyword in fruits):
print("I like fruits")
elif any(keyword in sentence for keyword in animals):
print("I like animals")

แถมให้…แล้วถ้าใช้ dictionary แทน list หละ จะสวยกว่ามั้ย? (ตรง print ด้วย format แบบที่เห็นนั้นสำหรับ Python 3.6 ขึ้นไปเท่านั้นครับ)

sentence = "I like apples"
keywords = {"apple": "fruits", "banana": "fruits", "dog": "animals", "cat": "animals"}

for item, type in keywords.items():
if item in sentence:
print(f"I likes {type}")

code ทุกชุดจะได้ output ออกมา คือ…

I like fruits

— — — — — — — — — — — — — — —
สารบัญเนื้อหาทั้งหมด (My Contents)
— — — — — — — — — — — — — — —

--

--

Nopnithi Khaokaew (Game)
Nopnithi Khaokaew (Game)

Written by Nopnithi Khaokaew (Game)

Cloud Solutions Architect & Hobbyist Developer | 6x AWS Certified, CKA, CKAD, 2x HashiCorp Certified (Terraform, Vault), etc.