You should avoid using global and you not use your parameter date at all!
month_names = [
"january","february","march","april",
"may","june","july","august","september","october","november","december"
]
day_in_month = [31,28,31,30,31,30,31,31,30,31,30,31]
def is_a_valid_date(date):
month, day = date.split(" ") # split with space the month and day
month_index = month_names.index(month) # find the index of the month_index from the month_names
day_as_int = int(day) # convert the day to int for compering
return day_as_int <= day_in_month[month_index] # check if it bigger
print(is_a_valid_date("february 29")) # False
print(is_a_valid_date("february 28")) # True
If you want to catch the edge cases like upper case and worng input:
month_names = [
"january","february","march","april",
"may","june","july","august","september","october","november","december"
]
day_in_month = [31,28,31,30,31,30,31,31,30,31,30,31]
# make it lower case
def is_a_valid_date(date):
try:
month, day = date.lower().split(" ") # split with space the month and day
month_index = month_names.index(month) # find the index of the month_index from the month_names
day_as_int = int(day) # convert the day to int for compering
return day_as_int > 0 and day_as_int <= day_in_month[month_index] # check if it bigger
except ValueError:
return False
print(is_a_valid_date("february 29")) # False
print(is_a_valid_date("february 28")) # True
print(is_a_valid_date("febGuary 28")) # False
print(is_a_valid_date("february 0")) # False
print(is_a_valid_date("February 1")) # True
print(is_a_valid_date("February1")) # False
print(is_a_valid_date("February gasf")) # False
print(is_a_valid_date("")) # False