How to print every month in a specified year that contains five full weekends (Fri, Sat, Sun) in Python

1 Answer

0 votes
# A month has five full weekends when it has 31 days, and the 1st day of the month is a Friday.

import datetime

# ------------------------------------------------------------
# Month names as a single reusable constant
# ------------------------------------------------------------
month_names = [
    "January", "February", "March", "April", "May", "June",
    "July", "August", "September", "October", "November", "December"
]

# ------------------------------------------------------------
# Function: returns true if a month has 5 full weekends
# ------------------------------------------------------------
def has_five_full_weekends(year, month):
    first_day = datetime.date(year, month, 1)

    days_in_month = (datetime.date(year, month % 12 + 1, 1) -
                     datetime.timedelta(days=1)).day \
                    if month != 12 else 31

    weekday = first_day.weekday()  # Monday=0 ... Friday=4 ... Sunday=6

    return (days_in_month == 31 and weekday == 4)  # Friday

# ------------------------------------------------------------
# Main program
# ------------------------------------------------------------
def main():
    y_value = 2026

    for m in range(1, 13):
        if has_five_full_weekends(y_value, m):
            print(f"{month_names[m - 1]} {y_value} has five full weekends.")

if __name__ == "__main__":
    main()



"""
run:

May 2026 has five full weekends.

"""

 



answered May 26 by avibootz
edited May 26 by avibootz

Related questions

...