Implement a function called first_mondays with a single parameter, namely a year
ID: 3689124 • Letter: I
Question
Implement a function called first_mondays with a single parameter, namely a year y. The function should print the dates of the first Monday of every month in that year. For example, first_mondays(2016) should print
First Mondays of 2016:
January 4, 2016
February 1, 2016
March 7, 2016
April 4, 2016
May 2, 2016
June 6, 2016
July 4, 2016
August 1, 2016
September 5, 2016
October 3, 2016
November 7, 2016
December 5, 2016
This is to be written in Python 3.5 and please use correct indentation! Can not use Python's datetime module!
Explanation / Answer
#Assuming that jan 1st 1800 is Wednesday
def leap(year):
if(year%400==0):
#print(year,'*');
return 1
elif(year%100==0):
#print(year,'**');
return 0
elif(year%4==0):
#print(year,'***');
return 1
#print(year,'**#');
return 0
def first_mondays(year):
days=0
for i in range(1800,year):
if(leap(i)==1):
days+=366
#print(i,366)
else:
days+=365
#print(i,365)
fday = (3+days)%7
days_mon = [31,28,31,30,31,30,31,31,30,31,30,31]
if(leap(year)==1):
days_mon[1]=29
names = ['January','February','March','April','May','June','July','August','September','October','November','December']
for i in range(0,12):
if(fday<=1):
print(names[i],1+1-fday,year)
else:
print(names[i],1+8-fday,year)
fday = fday+days_mon[i]
fday = fday%7;
first_mondays(2016)
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.