Can someone help me with my code?
the four outputs below I can't figure out how to fix

Input: April 11
Your output: Invalid
Expected output: Spring

Input: March 3
Your output: Invalid
Expected output: Winter

Input: June 21
Your output: Invalid
Expected output:
Summer

Input: November 7
Your output: Invalid
Expected output: Autumn

try:
input_month, input_day = input().split()
input_month = input_month.lower()
input_day = int(input_day)
except ValueError:
print("Invalid")
exit()

months = {
"january": 31, "february": 29, "march": 31, "april": 30,
"may": 31, "june": 30, "july": 31, "august": 31,
"september": 30, "october": 31, "november": 30, "december": 31
}

if input_month not in months or not (1 <= input_day <= months[input_month]):
print("Invalid")
else:
if (input_month == "december" and input_day >= 21) or (input_month == "march" and input_day >= 21) or (input_month == "june" and input_day >= 21) or (input_month == "september" and input_day >= 21):
print("Spring")

elif (input_month == "march" and input_day >= 1) or (input_month == "april") or (input_month == "may") or (input_month == "june" and input_day <= 20):
print("Spring")
elif (input_month == "june" and input_day >= 21) or (input_month == "september") or (input_month == "july") or (input_month == "august"):
print("Summer")
elif (input_month == "september" and input_day >= 21) or (input_month == "october") or (input_month == "november") or (input_month == "december") or (input_month == "january") or (input_month == "february"):
print("Autumn")
elif (input_month == "december" and input_day <= 20) or (input_month == "january" or input_month == "february"):
print("Winter")



Answer :

Answer:

Gemini has just been updated.  See update

close

Conversation with Gemini

expand_moreedit

Fix this code: Input: April 11

Your output: Invalid

Expected output: Spring

Input: March 3

Your output: Invalid

Expected output: Winter

Input: June 21

Your output: Invalid

Expected output:

Summer

Input: November 7

Your output: Invalid

Expected output: Autumn

try:

input_month, input_day = input().split()

input_month = input_month.lower()

input_day = int(input_day)

except ValueError:

print("Invalid")

exit()

months = {

"january": 31, "february": 29, "march": 31, "april": 30,

"may": 31, "june": 30, "july": 31, "august": 31,

"september": 30, "october": 31, "november": 30, "december": 31

}

if input_month not in months or not (1 <= input_day <= months[input_month]):

print("Invalid")

else:

if (input_month == "december" and input_day >= 21) or (input_month == "march" and input_day >= 21) or (input_month == "june" and input_day >= 21) or (input_month == "september" and input_day >= 21):

print("Spring")

elif (input_month == "march" and input_day >= 1) or (input_month == "april") or (input_month == "may") or (input_month == "june" and input_day <= 20):

print("Spring")

elif (input_month == "june" and input_day >= 21) or (input_month == "september") or (input_month == "july") or (input_month == "august"):

print("Summer")

elif (input_month == "september" and input_day >= 21) or (input_month == "october") or (input_month == "november") or (input_month == "december") or (input_month == "january") or (input_month == "february"):

print("Autumn")

elif (input_month == "december" and input_day <= 20) or (input_month == "january" or input_month == "february"):

print("Winter")

Show drafts

volume_up

The problem with the code is the logic for determining the seasons. The current logic checks for overlapping days between seasons. Here's the fix:

Python

try:

input_month, input_day = input().split()

input_month = input_month.lower()

input_day = int(input_day)

except ValueError:

print("Invalid")

exit()

months = {

"january": 31, "february": 29, "march": 31, "april": 30,

"may": 31, "june": 30, "july": 31, "august": 31,

"september": 30, "october": 31, "november": 30, "december": 31

}

if input_month not in months or not (1 <= input_day <= months[input_month]):

print("Invalid")

else:

# Check for winter first (December to February)

if input_month in ("december", "january", "february") and (input_month == "december" and input_day <= 20 or input_month not in ("december", "january")):

print("Winter")

# Check for Spring (March to May)

elif input_month in ("march", "april", "may"):

print("Spring")

# Check for Summer (June to August)

elif input_month in ("june", "july", "august"):

print("Summer")

# Fall is everything else (September to November)

else:

print("Autumn")

Explanation:

Changes made:

We check for Winter first. This avoids the overlapping day issue.

We use a single if statement with nested conditions to check for each season.

We simplified the logic for each season check

Other Questions