Writing a program that takes a date as input and outputs the date's season

Question:

Ex: If the input is:
April
11
the output is: Spring

In addition, check if the string and int are valid (an actual month and day).
Ex: If the input is:
Blue
65
the output is: Invalid

The dates for each season are:
Spring: March 20 – June 20
Summer: June 21 – September 21
Autumn: September 22 – December 20
Winter: December 21 – March 19

I linked my code and it doesn’t work for these 2 inputs (and I can’t figure out why)
1.for November 7, my output is "Summer" when it should be "Autumn"
2.for September 31, my output is "Summer" when it should be "Invalid"

input_month = input()
input_day = int(input())
months= ('January', 'February','March', 'April' , 'May' , 'June' , 'July' , 'August' , 'September' , "October" , "November" , "December")

if not(input_month in months):
    print("Invalid")

elif input_month == 'March':
    if not(1<=input_day<=31):
        print ("Invalid")
    elif input_day<=19:
        print("Winter")
    else:
        print ("Spring")
elif input_month == 'April' :
    if not(1<=input_day<=30):
        print("Invalid")
    else:
        print("Spring")
elif input_month == 'May':
    if not(1<=input_day<=31):
        print("Invalid")
    else:
        print("Spring")
elif input_month == 'June':
    if not(1<=input_day<=30):
        print("Invalid")
    elif input_day<=20:
        print ("Spring")
    else:
        print("Summer")
elif input_month == 'July' or 'August':
    if not(1<=input_day<=31):
        print("Invalid")
    else: 
        print("Summer")
elif input_month == 'September':
    if not(1<=input_day<=30):
        print("Invalid")
    elif input_day<=21:
        print ("Summer")
    else:
        print ("Autumn")
elif input_month == "October":
    if not(1<=input_day<=31):
        print("Invalid")
    else:
        print("Autumn")
elif input_month == "November":
    if not(1<=input_day<=30):
        print("Invalid")
    else:
        print ("Autumn")
elif input_month == "December":
    if not(1<=input_day<=31):
        print("Invalid")
    elif input_day <=20:
        print ("Autumn")
    else:
        print ("Winter")
elif input_month == 'January':
    if not(1<=input_day<=31):
        print("Invalid")
    else:
        print("Winter")
elif input_month == "February":
    if not(1<=input_day<=29):
        print("Invalid")
    else:
        print ("Winter")
Asked By: help_me_pls

||

Answers:

You have a wrong line of code:

elif input_month == 'July' or 'August':

It should be:

elif input_month == 'July' or input_month == 'August':

or

elif input_month in ('July', 'August')

As @Steven Rumbalski mentioned below.

The code input_month == 'July' or 'August' always evaluates to True.

As it is parsed as (input_month == 'July') or ('August').

Empty strings are considered False, and all other strings are considered True, so 'August' always evaluates to True.

Answered By: ThRnk
input_month = input()
input_day = int(input())
months= ('January', 'February','March', 'April' , 'May' , 'June' , 'July' , 
'August' , 'September' , "October" , "November" , "December")

if not(input_month in months):
print("Invalid")

elif input_month == 'March':
  if not(1<=input_day<=31):
    print ("Invalid")
elif input_day<=19:
    print("Winter")
else:
    print ("Spring")
elif input_month == 'April' :
  if not(1<=input_day<=30):
    print("Invalid")
else:
    print("Spring")
elif input_month == 'May':
  if not(1<=input_day<=31):
    print("Invalid")
else:
    print("Spring")
elif input_month == 'June':
  if not(1<=input_day<=30):
    print("Invalid")
elif input_day<=20:
    print ("Spring")
else:
    print("Summer")
elif input_month == 'July' or input_month == 'August':
  if not(1<=input_day<=31):
    print("Invalid")
else: 
    print("Summer")
elif input_month == 'September':
  if not(1<=input_day<=30):
    print("Invalid")
elif input_day>=30:
    print ("Summer")
else:
    print ("Autumn")
elif input_month == "October":
  if not(1<=input_day<=31):
    print("Invalid")
else:
    print("Autumn")
elif input_month == "November":
  if not(1<=input_day<=30):
    print("Invalid")
else:
    print ("Autumn")
elif input_month == "December":
  if not(1<=input_day<=31):
    print("Invalid")
elif input_day <=20:
    print ("Autumn")
else:
    print ("Winter")
elif input_month == 'January':
  if not(1<=input_day<=31):
    print("Invalid")
else:
    print("Winter")
elif input_month == "February":
  if not(1<=input_day<=29):
    print("Invalid")
else:
    print ("Winter")

#You did a good job on the code help_me_pls, just a couple of mistakes using the <>
#This code now passes all tests.

Answered By: rmazur7831
input_month = input()
input_day = int(input())

months= ('January', 'February','March', 'April' , 'May' , 'June' , 'July' , 
'August' , 'September' , "October" , "November" , "December")

if not(input_month in months):
    print("Invalid")

elif input_month == 'March':
    if not(1<=input_day<=31):
        print ("Invalid")
    elif input_day<=19:
        print("Winter")
    else:
        print ("Spring")
elif input_month == 'April' :
    if not(1<=input_day<=30):
        print("Invalid")
    else:
        print("Spring")
elif input_month == 'May':
    if not(1<=input_day<=31):
        print("Invalid")
    else:
        print("Spring")
elif input_month == 'June':
    if not(1<=input_day<=30):
        print("Invalid")
    elif input_day<=20:
        print ("Spring")
    else:
        print("Summer")
elif input_month == 'July' or input_month == 'August':
    if not(1<=input_day<=31):
        print("Invalid")
    else: 
        print("Summer")
elif input_month == 'September':
    if not(1<=input_day<=30):
        print("Invalid")
    elif input_day<=21:
        print ("Summer")
    else:
        print ("Autumn")
elif input_month == "October":
    if not(1<=input_day<=31):
        print("Invalid")
    else:
        print("Autumn")
elif input_month == "November":
    if not(1<=input_day<=30):
        print("Invalid")
    else:
        print ("Autumn")
elif input_month == "December":
    if not(1<=input_day<=31):
        print("Invalid")
    elif input_day <=20:
        print ("Autumn")
    else:
        print ("Winter")
elif input_month == 'January':
    if not(1<=input_day<=31):
        print("Invalid")
    else:
        print("Winter")
elif input_month == "February":
    if not(1<=input_day<=29):
        print("Invalid")
    else:
        print ("Winter")
Answered By: Maggie
input_month = input()
input_day = int(input())
if input_month in ('April', 'May'):
    print('Spring')
elif input_month in ('June','July', 'August'):
    print('Summer')
elif input_month in ('October', 'November'):
    print('Autumn')
elif input_month in ('January', 'March'):
    print("Winter")
elif input_month == 'June' and (input_day == range(1, 20)):
    print("Spring")
elif input_month == 'June' and (input_day == range(21, 30)):
    print("Summer")
elif input_month == 'September' and (input_day == range(1, 21)):
    print("Summer")
elif input_month == 'September' and (input_day == range(22, 30)):
    print("Autumn")
elif input_month == 'December' and (input_day == range(1, 20)):
    print("Autumn")
elif input_month == 'December' and (input_day == range(21, 31)):
    print("Winter")
elif input_month == 'March' and (input_day == range(1, 19)):
    print("Winter")
elif input_month == 'March' and (input_day == range(20, 31)):
    print("Spring")
elif input_month == 'February' and (input_day == range(1, 28)):
    print("Winter")
else:
    print("Invalid")
Answered By: coder10002
Categories: questions Tags:
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.