94.1k views
8 votes
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.

User NomanJaved
by
4.3k points

1 Answer

3 votes

Answer:

This is in python

Step-by-step 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}")

User Sophonias
by
4.6k points