ปีนักษัตร เป็นปีตามปฏิทินสุริยคติไทยและชาติอื่นในเอเชียตะวันออก เช่น จีน เวียดนาม และญี่ปุ่น แบ่งเป็นรอบปี รอบละสิบสองปี แต่ละปีกำหนดสัตว์เรียกเป็นชื่อเรียงกันไปดังนี้ เริ่มจากปี ชวด-หนูฉลู-วัวขาล-เสือเถาะ-กระต่ายมะโรง-งูใหญ่มะเส็ง-งูเล็กมะเมีย-ม้ามะแม-แพะวอก-ลิงระกา-ไก่จอ-สุนัขกุน-หมู ตามลำดับ และในบทความนี้เราจะมาหาวิธีการคำนวณเพื่อหาปีนักษัตรโดย 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 ให้โปรแกรมทำงานอัตโนมัติ ทำงานซ้ำๆตามเวลาที่กำหนด

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
พิมพ์ pdf จาก excel สามารถกำหนดให้พิมพ์บนล่างก่อนแล้วค่อยไปพิมพ์ซ้ายไปขวาได้มั้ยคะ
โดย MBMoo ศ 29 มี.ค. 2024 1:34 pm บอร์ด ถาม - ตอบ คอมพิวเตอร์
3
199
ศ 29 มี.ค. 2024 1:48 pm โดย mindphp View Topic พิมพ์ pdf จาก excel สามารถกำหนดให้พิมพ์บนล่างก่อนแล้วค่อยไปพิมพ์ซ้ายไปขวาได้มั้ยคะ
เมธอด dict() ในการพัฒนาระบบ Python การสร้างพจนานุกรมอย่างมีประสิทธิภาพ
โดย athirach.offcial พฤ 28 มี.ค. 2024 12:33 pm บอร์ด Python Knowledge
0
312
พฤ 28 มี.ค. 2024 12:33 pm โดย athirach.offcial View Topic เมธอด dict() ในการพัฒนาระบบ Python การสร้างพจนานุกรมอย่างมีประสิทธิภาพ
การใช้งาน filter() กรองตัวเลขหรือตัวอักษรในภาษา Python
โดย athirach.offcial พฤ 28 มี.ค. 2024 12:16 pm บอร์ด Python Knowledge
0
106
พฤ 28 มี.ค. 2024 12:16 pm โดย athirach.offcial View Topic การใช้งาน filter() กรองตัวเลขหรือตัวอักษรในภาษา Python
เมธอด strip() ใน Python การใช้งานเพื่อลบตัวอักษรที่กำหนด
โดย athirach.offcial พฤ 28 มี.ค. 2024 12:03 pm บอร์ด Python Knowledge
1
329
ศ 29 มี.ค. 2024 9:24 am โดย athirach.offcial View Topic เมธอด strip() ใน Python การใช้งานเพื่อลบตัวอักษรที่กำหนด
Attribute ในภาษา Python: วิธีกำหนดค่าและใช้งาน
โดย athirach.offcial พฤ 28 มี.ค. 2024 11:37 am บอร์ด Python Knowledge
0
86
พฤ 28 มี.ค. 2024 11:37 am โดย athirach.offcial View Topic Attribute ในภาษา Python: วิธีกำหนดค่าและใช้งาน
คำสั่ง eval() ใน Python วิธีการใช้งานการประมวลผลสตริงเป็นโค้ด
โดย athirach.offcial พฤ 28 มี.ค. 2024 11:07 am บอร์ด Python Knowledge
3
550
ศ 29 มี.ค. 2024 9:18 am โดย athirach.offcial View Topic คำสั่ง eval() ใน Python วิธีการใช้งานการประมวลผลสตริงเป็นโค้ด
การใช้งานเมทอด zip() ใน Python: รวมข้อมูลจาก objects หลายๆ อันเข้าด้วยกันเป็น tuple อธิบายและตัวอย่าง
โดย athirach.offcial พฤ 28 มี.ค. 2024 10:51 am บอร์ด Python Knowledge
1
122
พฤ 28 มี.ค. 2024 8:55 pm โดย athirach.offcial View Topic การใช้งานเมทอด zip() ใน Python: รวมข้อมูลจาก objects หลายๆ อันเข้าด้วยกันเป็น tuple อธิบายและตัวอย่าง
ปิดโหมดข้อความธรรมดาในอีเมลแล้ว แต่เครื่องมือไม่ขึ้น ต้องตั้งค่ายังไง
โดย Narisara พฤ 28 มี.ค. 2024 10:46 am บอร์ด ถาม - ตอบ คอมพิวเตอร์
1
126
พฤ 28 มี.ค. 2024 11:13 am โดย Narisara View Topic ปิดโหมดข้อความธรรมดาในอีเมลแล้ว แต่เครื่องมือไม่ขึ้น ต้องตั้งค่ายังไง