def YearType(year):
leapyear = False
year = int(year)
if year MOD 4 == 0 or year MOD 400 == 0:
leapyear = True
elif (year MOD 100 == 0):
leapyear = False
elif leapyear == True:
print("wow this year is a leap year!")
else:
print("this isnt a leap year :(")
print YearType(2000)
Asked
Active
Viewed 45 times
-3

Dmitry Bychenko
- 180,369
- 20
- 160
- 215
-
Please always post the errors you get. I'm guessing it's an invalid syntax error on `MOD`. Do you mean [`%`](https://stackoverflow.com/q/4432208/2745495)? – Gino Mempin Oct 17 '21 at 12:36
1 Answers
1
There are several issues here:
- Algorithmic:
1900 MOD 4 == 0
, but1900
is not a leap year - Syntax: Python uses
%
instead ofMOD
- Logic:
elif leapyear == True:
should beif leapyear == True:
Code:
# Business Logics
if year % 400 == 0: # 1600, 2000, 2400 are leap years
leapyear = True
elif (year % 100 == 0): # 1800, 1900, 2100 are not leap years
leapyear = False
elif (year % 4 == 0): # 1996, 2004, 2008, 2012, 2020 are leap years
leapyear = True
else:
leapyear = False # 2018, 2019, 2021 are not leap years
# UI
if leapyear:
print("wow this year is a leap year!")
else:
print("this isnt a leap year :(")
Edit: If you want to implement a function, I suggest splitting it in two: business logics and UI:
def IsLeapYear(year):
if year % 400 == 0:
return True
elif (year % 100 == 0):
return False
elif (year % 4 == 0):
return True
else:
return False
def YearType(year):
if (IsLeapYear(year)):
print("wow this year is a leap year!")
else:
print("this isnt a leap year :(")
print(YearType(2000))

Sylvester Kruin
- 3,294
- 5
- 16
- 39

Dmitry Bychenko
- 180,369
- 20
- 160
- 215