🐍 Daily Python Problem: ตรวจสอบ Palindrome! ✨

วันนี้มาสนุกกับการเขียนฟังก์ชัน is_palindrome กันค่ะ! Palindrome คือคำหรือประโยคที่อ่านจากหน้าไปหลัง หรือหลังมาหน้า แล้วยังได้ความหมายเหมือนเดิม (เช่น "level", "madam", "racecar")

📝 โจทย์ (Problem & Task):

เขียนฟังก์ชันที่รับ String และคืนค่าเป็น Boolean (True หรือ False) โดยมีเงื่อนไขสำคัญคือ ต้องไม่สนใจตัวพิมพ์เล็ก/ใหญ่ (Case-Insensitive)

💡 วิธีแก้ปัญหาที่สั้นและเร็วที่สุดใน Python!

1. แปลงเป็นตัวพิมพ์เล็กก่อน: ใช้ .lower() เพื่อให้ไม่สนใจ Case

2. พลิกคำ: ใช้เทคนิค Slicing ที่ยอดเยี่ยม: [::-1] เพื่อพลิก String กลับด้าน

3. เปรียบเทียบ: ใช้ == เพื่อเปรียบเทียบ String ต้นฉบับ (ที่แปลงเป็นตัวเล็กแล้ว) กับ String ที่พลิกกลับด้าน (ที่แปลงเป็นตัวเล็กแล้ว)

✨ วิธีแบบ Pythonic (บรรทัดเดียว):

return text.lower() == text.lower()[::-1]

ง่ายกว่านี้ไม่มีอีกแล้ว! ลองดูตัวอย่าง Input/Output แล้วเอาไปฝึกใช้กันนะคะ!

💖 Keep going. การทำโจทย์ทุกวันทำให้เราเก่งขึ้นแน่นอนค่ะ!

#python #programmer #data #ai #learnonlemon8

2025/11/8 แก้ไขเป็น

... อ่านเพิ่มเติมถ้าเพิ่งเริ่มเจอคำว่า palindrome แล้วสงสัยว่า “palindrome คืออะไร” สรุปง่ายๆ คือ “คำ/ข้อความที่อ่านจากซ้ายไปขวาและขวาไปซ้ายแล้วเหมือนเดิม” ตัวอย่างคลาสสิกที่เจอบ่อยมากคือ level, madam, racecar ซึ่งเอาไปใช้ทำโจทย์ฝึกคิดเชิงตรรกะได้ดี โดยเฉพาะเวลาเขียนฟังก์ชัน is_palindrome ใน Python สิ่งที่หลายคนพลาดตอนทำโจทย์ palindrome คือเงื่อนไข “ไม่สนใจตัวพิมพ์เล็ก/ใหญ่ (case-insensitive)” เช่น Racecar ต้องได้ True เหมือน racecar ดังนั้นก่อนเช็กควรแปลงข้อความเป็นตัวพิมพ์เล็กทั้งหมดด้วย .lower() (หรือจะใช้ .casefold() ก็ได้ ถ้าต้องการรองรับบางภาษาให้ละเอียดขึ้น) แล้วค่อยนำไปเทียบกับข้อความที่กลับด้านด้วยเทคนิค slicing [::-1] ตัวอย่างที่ฉันชอบใช้ทดสอบเร็วๆ: - "level" -> True - "Hello" -> False - "Racecar" -> True (เพราะแปลงเป็นตัวเล็กแล้ว) อีกจุดที่ทำให้ผลเพี้ยนคือ “ช่องว่างและเครื่องหมายวรรคตอน” ในชีวิตจริงเรามักอยากให้ประโยคอย่าง "A man, a plan, a canal: Panama" ถือเป็น palindrome ด้วย แต่ถ้าเช็กตรงๆ จะได้ False เพราะมีเว้นวรรคและเครื่องหมายต่างๆ วิธีแก้คือ “ทำความสะอาดสตริง” ก่อน เช่น เก็บเฉพาะตัวอักษร/ตัวเลข แล้วค่อยเช็กกลับด้าน ตัวอย่างแนวคิด: - แปลงเป็นตัวเล็ก - กรองให้เหลือเฉพาะตัวอักษรและตัวเลข (isalnum) - เทียบ s กับ s[::-1] โค้ดแนวนี้จะช่วยให้ฟังก์ชัน is_palindrome ใช้งานได้จริงมากขึ้นกับข้อความยาวๆ ไม่ใช่แค่คำสั้นๆ นอกจากนี้แนะนำให้เพิ่ม test case ไว้เสมอ เช่น สตริงว่าง "" (ส่วนใหญ่ถือว่า True), ตัวอักษรตัวเดียว "a" (True), หรือสตริงที่มีเลขอย่าง "1221" (True) สรุป: palindrome คือแนวคิดง่ายๆ แต่ทำให้โค้ดเราดีขึ้นได้ถ้าใส่ใจรายละเอียด เช่น case-insensitive และการจัดการช่องว่าง/สัญลักษณ์ ลองปรับจากแบบพื้นฐาน (lower + [::-1]) ไปเป็นเวอร์ชันที่ “clean string” แล้วจะรู้สึกว่าใช้ได้ครอบคลุมกว่าเยอะ

โพสต์ที่เกี่ยวข้อง

Python Cheat Sheet 📖 ภาษายอดนิยมสำหรับ AI/ML, Data Science, Web (Django/Flask)
Python Cheat Sheet 📖 เกริ่นนำ — ต้องเข้าใจอะไรบ้างก่อนเริ่ม 1. Python คืออะไร? — ภาษายอดนิยมสำหรับ AI/ML, Data Science, Web (Django/Flask), Automation 2. ติดตั้ง/รันที่ไหน? — ดาวน์โหลดจาก python.org รันด้วย python file.py หรือ Jupyter Notebook 3. Syntax พื้นฐาน — ไม่ใช้ {} แต่ใช้ indentatio
NerdDailyDose

NerdDailyDose

ถูกใจ 219 ครั้ง

ภาพแสดงตัวอย่างโค้ด Python สำหรับประเภทข้อมูล Text Type: str โดยใช้ฟังก์ชัน type() เพื่อตรวจสอบชนิดข้อมูลของตัวแปร 'a' ที่เก็บข้อความ 'Hello World' ซึ่งผลลัพธ์คือ <class 'str'>
ภาพแสดงตัวอย่างโค้ด Python สำหรับประเภทข้อมูล Numeric Types: int, float, complex โดยใช้ฟังก์ชัน type() เพื่อตรวจสอบชนิดข้อมูลของตัวแปร 'x', 'y', 'z' ที่เก็บค่าตัวเลข�ประเภทต่างๆ
ภาพแสดงตัวอย่างโค้ด Python สำหรับประเภทข้อมูล Sequence Types: list, tuple, range โดยใช้ฟังก์ชัน type() เพื่อตรวจสอบชนิดข้อมูลของตัวแปร 'x', 'y', 'z' ที่เก็บข้อมูลแบบลำดับ
🚀 สรุป Data Types ใน Python ที่ต้องรู้!
นี่คือประเภทข้อมูล (Data Types) พื้นฐานที่สำคัญมากๆ ในภาษา Python ค่ะ/ครับ! การรู้ว่าข้อมูลแต่ละประเภทเก็บค่าอย่างไรและทำงานอย่างไรคือหัวใจของการเขียนโค้ดเลย! 📊 ประเภทข้อมูลหลัก (Key Data Types): • Text Type: str (String) - ใช้สำหรับข้อความ • Numeric Types: int (จำนวนเต็ม), float (ทศนิยม), com
เดฟ

เดฟ

ถูกใจ 11 ครั้ง

ภาพแสดงตัวอย่างโค้ด Python สำหรับตรวจสอบว่ามีคำว่า "free" อยู่ในข้อความ "The best things in life are free!" หรือไม่ โดยใช้คีย์เวิร์ด `in` ซึ่งผลลัพธ์ที่ได้คือ `True`
ภาพแสดงตัวอย่างการใช้คีย์เวิร์ด `in` ในคำสั่ง `if` เพื่อตรวจสอบว่ามีคำว่า "free" อยู่ในข้อความหรือไม่ หากพบจะแสดงข้อความ "Yes, 'free' is present." ออกมา
ภาพแสดงตัวอย่างโค้ด Python สำหรับตรวจสอบว่าไม่มีคำว่า "expensive" อยู่ในข้อความ "The best things in life are free!" หรือไม่ โดยใช้คีย์เวิร์ด `not in` ซึ่งผลลัพธ์ที่ได้คือ `True`
🔍 BASIC PYTHON: ตรวจสอบข้อความย่อยใน String!
การตรวจสอบว่ามีคำหรือวลีที่เราต้องการอยู่ในข้อความหลักหรือไม่ เป็นฟังก์ชันที่ใช้บ่อยมากๆ ในการจัดการ String ค่ะ! 🧵 💡 วิธีตรวจสอบการมีอยู่ของ Substring: • 1. เช็คว่า "มี" (Is Present): ใช้คีย์เวิร์ด in • เราสามารถใช้ if "word" in my_string: เพื่อให้โค้ดทำงานต่อเมื่อพบคำนั้น • ถ
เดฟ

เดฟ

ถูกใจ 2 ครั้ง

3 สัญญาณที่บอกว่าคุณยังเขียน Python แบบยุคเก่าอยู่! 😱เลิกทำแบบนี้
เช็กด่วน! ใครยังเขียน Code แบบเดิมๆ อยู่บ้าง? ถึงเวลาอัปเกรดเป็น Modern Python เพื่อรองรับงาน AI แล้วค่ะ 🛠️🚀 🚩 1. การจัดการข้อมูล: * แบบยุคเก่า: ใช้ Dictionary เปล่าๆ ไม่รู้โครงสร้างข้อมูลที่ชัดเจน เสี่ยง Code พังง่ายมาก • แบบ Modern: อัปเกรดมาใช้ Pydantic กำหนด Schema ให้ชัดเจน มีระบบตรวจสอบอั
เดฟ

เดฟ

ถูกใจ 4 ครั้ง

🐍 Daily Python Problem: กรองเลขคู่ (Filter Even Numb
โจทย์วันนี้คือการเขียนฟังก์ชัน filter_even_numbers ที่รับ List ของตัวเลข แล้วคืนค่าเฉพาะ "ตัวเลขคู่" ออกมาเท่านั้น! 🎯 📝 โจทย์ (Problem & Task): เขียนฟังก์ชันที่คืนค่า (return) List ใหม่ ที่มีเฉพาะ Even Numbers (ตัวเลขคู่) จาก List เดิม 💡 2 วิธีเทพๆ ในการแก้ปัญหา Filter List ใน Py
เดฟ

เดฟ

ถูกใจ 1 ครั้ง

ดูเพิ่มเติม