👤

Your task is to write and test a function which takes three arguments (a year, a month, and a day of the month) and returns the corresponding day of the year (for example the 225th day of the year), or returns None if any of the arguments is invalid.

Hint: You need to find the number of days in every month, including February in leap years.

Answer :

Answer:

This is in python

Explanation:

Alter my code if you need anything changed. (You may need to create a new function to add a day to February if necessary)

months = [31,28,31,30,31,30,31,31,30,31,30,31]

monthNames = ['january','february','march','april','may','june',

            'july','august','september','october','november','december']

array = []

def test(y,m,d): #Does not account for leap-year. Make a new function that adds a day to february and call it before this one

   if m.lower() not in monthNames or y < 1 or d > 31:

       if m.lower() == "april" or m.lower() == "june" or m.lower() == "september" or m.lower() == "november" and d > 30:

           return None

       elif m.lower() == "february" and d > months[1]:

           return None

       return None

   num = monthNames.index(m.lower()) #m should be the inputted month

   months[num] = d

   date = months[num]

   for n in range(num):

       array.append(months[n])

   tempTotal = sum(array)

   

   return tempTotal + date

x = int(input("Enter year: "))

y = input("Enter month: ")

z = int(input("Enter day: "))

print(f"{y.capitalize()} {z} is day {test(x,y,z)} in {x}")