ดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งาน
 

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

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
ขอวิธีเช็คเว็บไซด์ที่มาจาก Google 10 หน้าแรกหน่อยค่ะ
โดย Kannaphat ส 27 ก.พ. 2021 4:59 pm บอร์ด ถาม - ตอบ คอมพิวเตอร์
0
12
ส 27 ก.พ. 2021 4:59 pm โดย Kannaphat
Review เว็บไซต์ หางานที่ต่างๆ
โดย fighthrmd125 ส 27 ก.พ. 2021 3:13 pm บอร์ด Share Knowledge
0
11
ส 27 ก.พ. 2021 3:13 pm โดย fighthrmd125
PDPA กับงาน HR ของบริษัท
โดย fighthrmd125 ส 27 ก.พ. 2021 1:48 pm บอร์ด Share Knowledge
0
8
ส 27 ก.พ. 2021 1:48 pm โดย fighthrmd125
ประโยชน์ของ การใช้ Skype และ Web board ในการทำงาน
โดย fighthrmd125 ส 27 ก.พ. 2021 12:23 pm บอร์ด Share Knowledge
0
12
ส 27 ก.พ. 2021 12:23 pm โดย fighthrmd125
การจ้างงานผู้พิการ
โดย fighthrmd125 พฤ 25 ก.พ. 2021 5:53 pm บอร์ด Share Knowledge
0
14
พฤ 25 ก.พ. 2021 5:53 pm โดย fighthrmd125
แนวทางการสรรหา ช่องทาง สรรหาผู้พิการเข้าทำงาน
โดย fighthrmd125 พฤ 25 ก.พ. 2021 5:12 pm บอร์ด Share Knowledge
0
9
พฤ 25 ก.พ. 2021 5:12 pm โดย fighthrmd125
Google Structured ส่วนการ vote ในบทความจะดึงข้อมูลมาจากไหนค่ะ
โดย eange08 พฤ 25 ก.พ. 2021 5:04 pm บอร์ด Joomla Development
1
11
พฤ 25 ก.พ. 2021 5:34 pm โดย eange08
B - ระบบ LINE API ไม่ตอบพบข้อมูล [2021-02][001]
โดย tsukasaz พฤ 25 ก.พ. 2021 3:35 pm บอร์ด MlineCRM Line + MD-CRM
1
6
พฤ 25 ก.พ. 2021 3:35 pm โดย tsukasaz