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

     Leap Year หรือแปลเป็นภาษาไทยว่า ปีอธิกสุรทิน มันคือปีที่มีทั้งหมด 366 วัน จะมาเวียนมาทุกๆ 4 ปี โดยจะมีวันที่ 29 กุมภาพันธ์ เพิ่มขึ้นมาหนึ่งวันนั่นเอง 1 ปี คือ ระยะเวลาที่โลกหมุนรอบดวงอาทิตย์ จะใช้เวลา 365 วัน 6 ชั่วโมง 9 นาที หรือ 365.25 วัน ซึ่งโดยตามปฏิทินแล้ว 1 ปีมี 365 วัน ส่วนที่เกินมา 0.25 วัน เราจึงนับรวมให้ทุกๆ 4 ปี คือเพิ่มขึ้นมา 1 วัน แทนส่วนที่หายไป 0.25 วันในแต่ละปีนั่นเอง มันก็คงจะง่ายถ้าหากเราใช้ Microsoft Excel (ไมโครซอฟท์ เอ็กเซล) หรือ Google Sheets (กูเกิล ชีท) ในการค้นหาปีดังกล่าว แต่ถ้าเราต้องการที่จะเขียนออกมาเป็นโปรแกรมล่ะ และในบทความนี้เราจะมาสอนวิธีการหาปีที่มี 366 วัน โดยใช้ภาษา Python (ไพทอน) ในการคำนวณกัน 

 

ซึ่งจะมีสูตรในการคำนวณหาดังนี้

1.จะต้องเป็นปี ค.ศ. ที่หารด้วย 400 ลงตัว

2.ปีนั้นจะต้องหารด้วย 100 ไม่ลงตัว แต่หารด้วย 4 ลงตัว

เช่น 2020/400 = 5.05 หารด้วย 400 ไม่ลงตัว แต่ 2020/4 = 505 และ 505/100 = 5.05 ก็จะตรงกับเงื่อนไขที่สอง ทำให้เป็นปีอธิกสุรทิน

ซึ่งจะได้เงื่อนไขดังนี้

(y%400 == 0 ) or (y%4 == 0) and (y%100 != 0)

     ถ้าหากว่าข้อมูลที่เราทำการระบุเข้าไป หารด้วย 400 ลงตัว ปีนั้นก็จะเป็นปีที่มี 366 วัน หรือเป็นปีอธิกสุรทิน หรือถ้าปีนั้นหารด้วย 4 ลงตัว และหารด้วย 100 ไม่ลงตัว ปีนั้นก็จะเป็นปีที่มี 366 วัน หรือเป็นปีอธิกสุรทินเช่นกัน แต่ถ้าหากหารด้วย 4 ลงตัวแล้ว แถมยังหารด้วย 100 ลงตัว ปีนั้นก็จะไม่ใช่ปีอธิกสุรทิน

ตัวอย่างโค้ด

year = int(input("ระบุปี พ.ศ. ที่ต้องการตรวจสอบ: "))    #รับค่าเข้ามาเป็นปี พ.ศ.
y = year - 543                                    #นำไปลบกับ 543 เพื่อเปลี่ยนเป็น ค.ศ.
if (y%400 == 0 ) or (y%4 == 0) and (y%100 != 0):  #จากนั้นนำไปคำนวณกับสูตรที่กล่าวไว้ข้างต้น
    print 'ปี พ.ศ.',year,'เป็นปีที่มี 366 วัน'
else:
    print 'ปี พ.ศ.',year,'เป็นที่มี 365 วัน'

     ในบรรทัดการแสดงผลหรือ print ให้เราคืนค่าปี พ.ศ. หรือ year เพราะเนื่องจากเราต้องการหาว่าปีพ.ศ.นั้นเป็นปีอธิกสุรทินรึเปล่า เราจึงจำเป็นต้องคืนค่าที่อินพุตเข้ามา ไม่ใช่ค่าที่นำไปลบกับ 543 หรือค่า y 

ตัวอย่างการใช้งาน

ตัวอย่างการใช้งานเมื่อใส่ข้อมูล 2563 ลงในโปรแกรม
ตัวอย่างที่ 1

     ผลลัพธ์จากการทดลองใช้งาน โดยทำการใส่ค่า 2563 จากนั้นระบบจะนำไปลบกับ 543 ซึ่งก็คือ ค.ศ.2020 โดยจะตรงกับเงื่อนไข หาร 4 ลงตัว และหาร 100 ไม่ลงตัว 2020/4 = 505 และ 505/100 = 5.05 นั่นเอง ทำให้ปีดังกล่าวเป็นปีอธิกสุรทิน หรือเป็นปีที่ทั้งหมดมี 366 วัน จากนั้นเราก็คืนค่า year หรือ พ.ศ. ออกมา

ตัวอย่างการใช้งานเมื่อใส่ข้อมูล 2560 ลงในโปรแกรม
ตัวอย่างที่ 2

     ผลลัพธ์จากการทดลองใช้งาน โดยทำการใส่ค่า 2560 จากนั้นระบบจะนำไปลบกับ 543 ซึ่งก็คือ ค.ศ.2017 โดยจะไม่ตรงกับเงื่อนไขใดเลย หาร 400 ไม่ลงตัว และหาร 4 ไม่ลงตัว 2017/400 = 5.0425 และ 2017/4 = 504.25 นั่นเอง ทำให้ปีดังกล่าวไม่เป็นปีอธิกสุรทิน หรือเป็นปีที่ทั้งหมดมี 365 วัน 

     เพียงเท่านี้เราก็สามารถคำนวณหาปี พ.ศ. ที่เป็นปีอธิกสุรทิน หรือเป็นปีที่มีทั้งหมด 366 วันได้แล้ว นอกจากนี้หากเราไม่ต้องการหาปี พ.ศ. เราก็สามารถทำได้โดยไม่ต้องนำปีเหล่านั้นไปลบกับ 543 จากนั้นเราก็สามารถหาผลลัพธ์ได้แล้ว ง่ายมากเลยทีเดียวเพียงแค่เขียนโค้ดไม่กี่บรรทัดเท่านั้น

 

 

เรียนรู้เพิ่มเติมเกี่ยวกับ : Python ตัวดำเนินการ (Operator) สำหรับเปรียบเทียบความสัมพันธ์ใน Python (ไพทอน) ,ตัวแปร และ คำสงวน ในภาษา Python ไพทอน ,การเขียนข้อความอธิบายในโค้ด ของ ไพทอน Python comment , การรับค่าทาง Keyboard ใน Python ,ตัวแปรที่ใช้ในฟังก์ชันการคำนวณตัวเลขเเละการแทนค่า ใน Python

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
มารู้จักประเภทของเรียงความภาษาอังกฤษ
โดย Kannaphat อ 24 ม.ค. 2021 1:24 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
5
อ 24 ม.ค. 2021 1:24 pm โดย Kannaphat
การตัดรายการขายสินทรัพย์ที่มีค่าเสื่อม (Assets)
โดย Jiratchaya ส 23 ม.ค. 2021 11:02 pm บอร์ด Accounting software & ERP โปรแกรมบัญชี ระบบอีอาร์พี
0
14
ส 23 ม.ค. 2021 11:02 pm โดย Jiratchaya
วิธีการเขียน Essay อย่างไรให้ตอบโจทย์ผู้อ่าน
โดย Kannaphat ส 23 ม.ค. 2021 6:01 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
12
ส 23 ม.ค. 2021 6:01 pm โดย Kannaphat
python2.7 ติดปัญหา Non-ASCII character
โดย chakirin.bfds ส 23 ม.ค. 2021 12:59 pm บอร์ด Programming - C/C++ & java & Python
4
32
ส 23 ม.ค. 2021 2:40 pm โดย chakirin.bfds
ติดปัญหา find หา input ไม่เจอในไฟล์ javascript
โดย eange08 ศ 22 ม.ค. 2021 4:39 pm บอร์ด JavaScript & Jquery Ajax
1
49
ส 23 ม.ค. 2021 3:04 pm โดย eange08
โปรแกรม Kdenlive ตัดเสียงรบกวนอย่างไรคะ
โดย Kannaphat ศ 22 ม.ค. 2021 3:08 pm บอร์ด ถาม - ตอบ คอมพิวเตอร์
2
22
ศ 22 ม.ค. 2021 4:55 pm โดย Kannaphat
ขอวิธีดึงข้อมูลใน list มาแสดงเป็นข้อความทีละบรรทัด
โดย chakirin.bfds พฤ 21 ม.ค. 2021 6:38 pm บอร์ด Programming - C/C++ & java & Python
3
35
ส 23 ม.ค. 2021 1:31 pm โดย mindphp
อะไรบ้างที่คุณต้องรู้เกี่ยวกับการ ‘ซ่อมนาฬิกา’ !
โดย totheworld พฤ 21 ม.ค. 2021 3:05 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
11
พฤ 21 ม.ค. 2021 3:05 pm โดย totheworld