ปีนักษัตร เป็นปีตามปฏิทินสุริยคติไทยและชาติอื่นในเอเชียตะวันออก เช่น จีน เวียดนาม และญี่ปุ่น แบ่งเป็นรอบปี รอบละสิบสองปี แต่ละปีกำหนดสัตว์เรียกเป็นชื่อเรียงกันไปดังนี้ เริ่มจากปี ชวด-หนู, ฉลู-วัว, ขาล-เสือ, เถาะ-กระต่าย, มะโรง-งูใหญ่, มะเส็ง-งูเล็ก, มะเมีย-ม้า, มะแม-แพะ, วอก-ลิง, ระกา-ไก่, จอ-สุนัข, กุน-หมู ตามลำดับ และในบทความนี้เราจะมาหาวิธีการคำนวณเพื่อหาปีนักษัตรโดย Python กัน เนื่องจากว่าสูตรสำหรับการคำนวณหาปีนักษัตรนั้น ถ้าจะคิดตามวิธีการทางโหราศาสตร์นั้นค่อนข้างที่จะยุ่งยาก เราจึงดัดแปลงมาเป็นวิธีการคำนวณทางคอมพิวเตอร์แบบง่ายๆ ซึ่งเราจะใช้ ตัวแปรชนิด List และ While loop เข้ามาช่วยในการคำนวณกัน
โดยหาค่าที่เหลือจากการหารตามวิธีต่อไปนี้
ค่าที่เหลือ = (ปี พ.ศ. +5) % 12
จากนั้นนำค่าที่เหลือไปใช้เป็นตัวเลขในการอ่านชื่อปีนักษัตรจากลิสต์ที่เราจะสร้าง เช่นถ้าค่าที่เหลือเป็น 1 แสดงว่าตรงกับ ฉลู เป็นต้น
โดยเริ่มจากการสร้างลิสต์สำหรับเก็บข้อมูลชื่อปีนักษัตรก่อน จะมีตัวอย่างดังนี้
zodiac = ['ชวด-หนู', 'ฉลู-วัว', 'ขาล-เสือ', 'เถาะ-กระต่าย', 'มะโรง-งูใหญ่', 'มะเส็ง-งูเล็ก',
'มะเมีย-ม้า', 'มะแม-แพะ', 'วอก-ลิง', 'ระกา-ไก่', 'จอ-สุนัข', 'กุน-หมู']
จากนั้นให้เราทำการรับค่าปี พ.ศ. จากทางคีย์บอร์ด
year = int(input('ปี พ.ศ.:'))
และให้กำหนดตัวแปร ขึ้นมาหนึ่งตัวและใช้สูตรหาในการหา ค่าที่เหลือ = (ปี พ.ศ. +5) % 12
x = (year + 5) % 12 #กำหนดให้ตัวแปร x = ค่าที่เหลือจากการหาร
จากนั้นกำหนดตัวแปรอีกตัวแปรหนึ่งขึ้นมา เพื่อใช้สำหรับแทนค่าในการอ่านชื่อจากลิสต์ที่เราสร้าง
z = zodiac[x] #กำหนดให้ตัวแปร z = list[ลำดับที่] ซึ่งลำดับที่จะเป็นค่าที่เหลือจากการหารนั่นเอง
ตัวอย่างโค้ดโดยรวม
zodiac = ['ชวด-หนู', 'ฉลู-วัว', 'ขาล-เสือ', 'เถาะ-กระต่าย', 'มะโรง-งูใหญ่', 'มะเส็ง-งูเล็ก',
'มะเมีย-ม้า', 'มะแม-แพะ', 'วอก-ลิง', 'ระกา-ไก่', 'จอ-สุนัข', 'กุน-หมู']
while True: #ใช้ Whlie loop เข้ามาช่วยทำให้สามารถรับค่าได้เรื่อยๆ ถ้าเงื่อนไขเป็นจริง
year = int(input('ปี พ.ศ.:'))
if year < 1: #ถ้าปีน้อยกว่า 1 จะให้หยุดการทำงาน
break
x = (year + 5) % 12
z = zodiac[x]
print 'ตรงกับปีนักษัตร', z
การใช้ While loop จะทำให้เราสามารถกำหนดเงื่อนไขในการใช้งานได้ง่ายยิ่งขึ้น ทำให้โปรแกรมของเราทำงานได้เรื่อยๆ ตามเงื่อนไขที่เรากำหนด
ผลลัพธ์การใช้งาน
ผลลัพธ์ที่ออกมาจากการใช้งาน โดยทำการใส่ค่า 2540 โปรแกรมก็จะนำค่าดังกล่าวไปเข้าสูตร (2540 +5)%12 ซึ่ง % เป็นการหารแบบเศษ ผลลัพธ์ที่ได้คือ 212.083 หรือ .083 โปรแกรมก็จะทำการปัดเศษขึ้นเป็น 1 ทำให้ค่าดังกล่าวตรงกับ ลำดับที่หนึ่งของลิสต์ที่เราสร้าง คือ 'ฉลู - วัว' โดยลิสต์นั้นจะเริ่มนับจาก 0 นั่นเอง และต่อมาทดลองใส่ค่า 2563 โปรแกรมก็จะเข้าสูตร (2563+5)%12 ซึ่งเท่า 214 โดยที่ไม่มีเศษ หรือผลลัพธ์ก็คือ 0 นั่นเอง ทำให้ตรงกับลำดับที่ศูนย์ของลิสต์ที่เราสร้าง หลังจากนั้นเมื่อเราใส่ค่า 0 ก็จะตรงกับเงื่อนไข break ทำให้โปรแกรมหยุดทำงาน
เพียงเท่านี้เราก็สามารถคำนวณหาปีนักษัตรจากเลขปี พ.ศ. ได้แล้ว ไม่ต้องใช้วิธีการทางโหราศาสตร์ที่ค่อนข้างที่จะยุ่งยาก ทำให้เราสามารถรู้ปีนักษัตรใน พ.ศ. ก่อนๆ หรือข้างหน้าได้อย่างง่ายดายเลยทีเดียว
ช่องทางการศึกษาเพิ่มเติมเกี่ยวกับ Python
วิธีการหา Leap Year ในไพทอน ปีที่ มี 366 วัน เดือนกุมภาพันธ์ 29 วัน
การรับค่าจากแป้นพิมพ์ใน Python (ไพทอน)
ตัวดำเนินการ (Operator) สำหรับเปรียบเทียบความสัมพันธ์ใน Python (ไพทอน)
การอ่านข้อมูล จาก Google Sheet ด้วย Python
การตั้งค่า Task Scheduler ให้โปรแกรมทำงานอัตโนมัติ ทำงานซ้ำๆตามเวลาที่กำหนด