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, but1900is 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
