# Leap year

Is it a leap year?

In 1582 the Gregorian calendar was introduced. Our planet takes approximately 365.25 days to orbit the sun once. It’s that .25 that creates the need for a leap year every four years. During non-leap years (common years) the calendar doesn’t take into account the extra quarter of a day required by Earth to complete a single orbit. In leap years there are 29 days in February instead of 28.

## Make

Write a program to say whether the year entered by a user is a leap year or not. Any year exactly divisible by four is usually a leap year unless it is also divisible by one hundred. The exception is that all years divisible by four hundred are always leap years.

Use this boilerplate code as a starting point:

### Success Criteria

Remember to add a comment before a subprogram, selection or iteration statement to explain its purpose.

#### Complete the subprogram called `is_leap_year` that:

1. Returns True if the year is a leap year or False if it is not.
2. If the year is exactly divisible by four it is a leap year…
3. …unless it is divisible by one hundred in which case it is not a leap year…
4. …although any year that is divisible by four hundred is a leap year.

#### Complete the `main program` so that:

1. The user can input a year.
2. It outputs whether the year is a leap year or not.

#### Typical inputs and outputs from the program would be:

Enter a year: 1900

1900 is not a leap year.

Enter a year: 2000

2000 is a leap year.

Enter a year: 2022

2022 is not a leap year.

Enter a year: 2024

2024 is a leap year.

#### Knowledge Organiser

Use these resources as a reference to help you meet the success criteria.

## Evaluate

Run the unit tests below to check that your program has met the success criteria.

Enter a year: 1900

1900 is not a leap year.

Enter a year: 2000

2000 is a leap year.

Enter a year: 2026

2026 is not a leap year.

Enter a year: 2028

2028 is a leap year.

Check that you have:

• Used comments within the code to describe the purpose of subprograms, conditions and iterations.
• Used meaningful identifier names. That means the names of subprograms and variables indicate what they are for.

Craig ‘n’ Dave

In partnership with