#! python3 # -*- encoding: utf-8 -*- #Leap year verification # Ulf Benjaminsson, 2017-01-14 import sys #(year, true if leap year) def makeTestCase(a, b): return (a, b); def makeTestCases(): return [ makeTestCase(1800, False), makeTestCase(1900, False), makeTestCase(2100, False), makeTestCase(2200, False), makeTestCase(2300, False), makeTestCase(2500, False), makeTestCase(1600, True), makeTestCase(2000, True), makeTestCase(2400, True), ]; #In the Gregorian calendar three criteria must be taken into account to identify leap years: #The year can be evenly divided by 4; #If the year can be evenly divided by 100, it is NOT a leap year, unless; #The year is also evenly divisible by 400. Then it is a leap year. #Constraints: 1900 100000): raise ValueError("Bad argument: year must be 1900 < n < 10^5, was: {!s}".format(year)) return (year % 400 == 0 or year % 100 != 0) and (year % 4 == 0); def main(): samples = makeTestCases(); print('Testing for Leap Year ({:d} tests)'.format(len(samples))); for (year, correctAnswer) in samples: try: result = isLeapYear(year); except ValueError as error: print(error); continue; passed = result == correctAnswer; print('{!s} {} = {:d} {!s}'.format( "Passed:" if passed else "\tFailed:", str(year), result, '.') ); if(not passed): print('\tShould be: {:d}'.format(correctAnswer)) ; return 0; if __name__ == '__main__': status = main(); sys.exit(status);