3
votes

Pourquoi les instructions «else» et «if» sont-elles en cours d'exécution?

En posant cette question, j'ai déjà vérifié les autres liens qui ont des titres similaires. Tous ceux-ci n'ont pas de réponse à ma question ou ne s'appliquent pas à ce morceau de code. Par exemple, le lien ici: Pourquoi mon script batch exécutant à la fois l'instruction if et else quand l'instruction if correspond? dit que c'est parce que l'OP a utilisé echo dans le script. Ici, je ne l'utilise pas mais j'obtiens toujours le résultat à la fois du if et du else.

while True:
    selection = input("Type a command or use a page selection")
    if selection in ('exit','quit'):
        sys.exit()
    if selection in ('page 1','1'):
        print("Page 1 text here")
    if selection in ('page 2','2'):
        print("Page 2 text here")
    else:
        print("Invalid command or page number")


4 commentaires

De quel if faites-vous référence (il y a trois if s séparés dans votre code)? Quelles sont les données d'entrée que vous utilisez, qu'obtenez-vous et qu'attendez-vous?


J'ai copié / collé en python, entré 2 et il n'a imprimé que "Texte de la page 2 ici", puis mis en boucle de nouveau en haut. Semble bien fonctionner.


@GarrGodfrey, oui mais si vous tapez 1 , cela vous donnera la page 1 et le message "Commande et numéro de page invalides".


vrai, c'est comme ça que c'est écrit. Je suppose que OP voulait utiliser elif


3 Réponses :


1
votes

Vous souhaitez probablement utiliser if-elif-else dans ce genre de situations:

while True:
    selection = input("Type a command or use a page selection")
    if selection in ('exit','quit'):
        sys.exit()
    elif selection in ('page 1','1'):
        print("Page 1 text here")
    elif selection in ('page 2','2'):
        print("Page 2 text here")
    else:
        print("Invalid command or page number")


0 commentaires

1
votes

Pour exécuter une seule instruction if dans une série d'entre elles, vous devez avoir l'instruction else if, elif, chaque fois que vous mettez if, elle est considérée avec les autres instructions if / elif / else. Votre instruction else est indépendante des deux premières instructions if, je l'ai corrigée ci-dessous.

while True:
    selection = input("Type a command or use a page selection: ")
    if selection in ('exit','quit'):
        sys.exit()
    elif selection in ('page 1','1'):
        print("Page 1 text here")
    elif selection in ('page 2','2'):
        print("Page 2 text here")
    else:
        print("Invalid command or page number")


0 commentaires

2
votes

S'il s'agit d'un conditionnel long - vous devez utiliser elif au milieu:

if 1:
    a()
elif 2:
    b()
elif 3:
    c()
else:
    d()


0 commentaires