J'essaie donc de faire mes devoirs de saison en Python en y ajoutant les dates des saisons et du solstice, mais quand je l'exécute, je continue à recevoir "Invalid" quand j'essaye de mettre le mois et le jour. Voici mon code pour référence:

input_month = input()
input_day = int(input())

if input_month == ('March', 'April', 'May', 'June'):
    print('Spring')
elif input_month == ('June', 'July', 'August', 'September'):
    print('Summer')
elif input_month == ('September', 'October', 'November', 'December'):
    print('Autumn')
elif input_month == ('December', 'January', 'February', 'March'):
    print('Winter')
else:
    print('Invalid')

if (input_month == 'March') and (input_day < 20):
    print('Winter')
elif (input_month == 'June') and (input_day < 21):
    print('Spring')
elif (input_month == 'September') and (input_day < 22):
    print('Summer')
elif (input_month == 'December') and (input_day < 21):
    print('Autumn')
else:
    print('Invalid')
-3
Kryptix 5 juin 2020 à 03:24

3 réponses

Meilleure réponse

Même après le == à in, il y a toujours un défaut: Si vous saisissez March et 10, vous obtiendrez Spring et Winter. Voici le code fixe:

input_month = input()
input_day = int(input())

if input_month in ('April', 'May'):
    print('Spring')
elif input_month in ('July', 'August'):
    print('Summer')
elif input_month in ('October', 'November'):
    print('Autumn')
elif input_month in ('January', 'February'):
    print('Winter')
if (input_month == 'March') and (input_day < 20):
    print('Winter')
elif (input_month == 'June') and (input_day < 21):
    print('Spring')
elif (input_month == 'September') and (input_day < 22):
    print('Summer')
elif (input_month == 'December') and (input_day < 21):
    print('Autumn')
1
Ann Zen 5 juin 2020 à 00:31

Eh bien, la principale raison pour laquelle l'entrée n'est pas valide est que vous comparez l'entrée, prise sous forme de chaîne, à un tuple:

if input_month == ('March', 'April', 'May', 'June'):
    [...]

Cela ne fonctionnera jamais. Je pense que vous souhaitez utiliser le mot clé in:

if input_month in ('March', 'April', 'May', 'June')

Vous pouvez également envisager de procéder à la validation des entrées:

input_day = int(input()) # How do you know that this cast will work?
0
Z4-tier 5 juin 2020 à 00:28

Vous comparez une chaîne à un tuple, ce sera toujours faux. Au lieu de cela, vous devez vérifier si le mois est à l'intérieur du tuple, alors utilisez in au lieu de == dans la première partie.

0
czr 5 juin 2020 à 00:27