-3
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)
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 Answers1

1

There are several issues here:

  1. Algorithmic: 1900 MOD 4 == 0, but 1900 is not a leap year
  2. Syntax: Python uses % instead of MOD
  3. Logic: elif leapyear == True: should be if 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