91 votes

Différence entre les "if" multiples et les "elif" ?

En python, y a-t-il une différence entre say :

if text == 'sometext':
    print(text)
if text == 'nottext':
    print("notanytext")

et

 if text == 'sometext':
        print(text)
 elif text == 'nottext':
        print("notanytext")

Je me demandais juste si les multiples if pourraient causer des problèmes indésirables et s'il serait préférable d'utiliser des elif s.

3voto

Algebra Points 5633

elif est juste une façon fantaisiste d'exprimer else: if ,

Les ifs multiples exécutent plusieurs branches après le test, tandis que les elifs sont mutuellement exclusifs et n'exécutent qu'une seule branche après le test.

Prenez les exemples de l'utilisateur2333594

    def analyzeAge( age ):
       if age < 21:
           print "You are a child"
       elif age > 21:
           print "You are an adult"
       else:   #Handle all cases were 'age' is negative 
           print "The age must be a positive integer!"

pourrait être reformulé comme suit :

    def analyzeAge( age ):
       if age < 21:
           print "You are a child"
       else:
             if age > 21:
                 print "You are an adult"
             else:   #Handle all cases were 'age' is negative 
                 print "The age must be a positive integer!"

L'autre exemple pourrait être :

def analyzeAge( age ):
       if age < 21:
           print "You are a child"
       else: pass #the if end
       if age > 21:
           print "You are an adult"
       else:   #Handle all cases were 'age' is negative 
           print "The age must be a positive integer!"

1voto

Harish RS Points 21

Lorsque vous utilisez plusieurs if votre code reviendra dans chaque if pour vérifier si l'expression convient à votre situation. Parfois, il arrive d'envoyer de nombreux résultats pour une seule expression, ce à quoi vous ne vous attendez même pas. Mais en utilisant elif termine le processus lorsque l'expression correspond à l'une de vos conditions.

1voto

Zach Valenta Points 653

Voici comment je décompose les déclarations de flux de contrôle :


# if: unaffected by preceding control statements
def if_example():
    if True:
        print('hey')
    if True:
        print('hi')  # will execute *even* if previous statements execute

imprimera hey y hi


# elif: affected by preceding control statements
def elif_example():
    if False:
        print('hey')
    elif True:
        print('hi')  # will execute *only* if previous statement *do not*

imprimera hi seulement parce que l'instruction précédente a été évaluée à False


# else: affected by preceding control statements
def else_example():
    if False:
        print('hey')
    elif False:
        print('hi')
    else:
        print('hello')  # will execute *only* if *all* previous statements *do not*

imprimera hello parce que tous les déclarations précédentes n'ont pas été exécutées

0voto

Sujith Points 1

Dans le cas de :

if text == 'sometext':
  print(text)
if text == 'nottext':
  print("notanytext")

Tous les if au même niveau d'indentation sont exécutées même si seulement la première if La déclaration est True .

Dans le cas de :

 if text == 'sometext':
        print(text)
 elif text == 'nottext':
        print("notanytext")

Lorsqu'un if La déclaration est True les déclarations précédentes sont omises/non exécutées.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X