Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

หาจำนวนครั้งที่แต่ละวันในสัปดาห์เกิดขึ้นในปีใดปีหนึ่งด้วย Python

ภาพรวม

โปรแกรมคำนวณว่าวันแต่ละวัน (จันทร์-อาทิตย์) เกิดขึ้นกี่ครั้งในปีที่กำหนด โดยรับพารามิเตอร์จำนวนวันในปี (365 หรือ 366) และวันแรกของปี

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

def num_of_occurrence(n, firstday):
    my_days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
    my_count = [4 for i in range(7)]  # ทุกวันมีอย่างน้อย 4 รอบ (28 วัน)
    my_position = -1
    
    for i in range(7):
        if firstday == my_days[i]:
            my_position = i
            break
    
    inc = n - 28  # วันที่เหลือหลังจาก 4 สัปดาห์เต็ม
    for i in range(my_position, my_position + inc):
        if i > 6:
            my_count[i % 7] = 5
        else:
            my_count[i] = 5
    
    for i in range(7):
        print(my_days[i], my_count[i])

num = 31  # ตัวอย่างใช้ 31 วัน
first_day = "Thursday"
num_of_occurrence(num, first_day)

ผลลัพธ์

Monday 4
Tuesday 4
Wednesday 4
Thursday 5
Friday 5
Saturday 5
Sunday 4

คำอธิบาย

  • ปีปกติมี 365 วัน = 52 สัปดาห์ + 1 วัน (ปีอธิกสุรทิน +2 วัน)
  • ทุกวันเกิดขึ้นอย่างน้อย 52 ครั้ง (4 รอบใน 28 วัน × 13 = 52)
  • วันที่เหลือ (1 หรือ 2 วัน) จะทำให้วันบางวันเกิดขึ้น 53 ครั้ง
  • อัลกอริทึมเริ่มนับจากวันแรกของปี แล้วกระจายวันที่เหลือไปยังวันถัดไป

หมายเหตุ

โค้ดตัวอย่างใช้ 31 วัน เพื่อสาธิตตรรกะ สำหรับปีจริงให้ใช้ 365 หรือ 366