ตัวอย่างการใช้ if + any บนภาษา Python แบบอธิบายโคตรสั้น
ลดความยาวของ Code ด้วย if + any บน Python
— — — — — — — — — — — — — — —
สารบัญเนื้อหาทั้งหมด (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)
— — — — — — — — — — — — — — —