295 votes

Quelle est la syntaxe correcte pour 'else if'?

Je suis un nouveau programmeur Python qui fait le saut de 2.6.4 à 3.1.1. Tout s'est bien passé jusqu'à ce que j'essaie d'utiliser la déclaration "else if". L'interprète me donne une erreur de syntaxe après le «si» dans «sinon si» pour une raison que je n'arrive pas à comprendre.

 def function(a):
    if a == '1':
        print ('1a')
    else if a == '2'
        print ('2a')
    else print ('3a')

function(input('input:'))
 

Je manque probablement quelque chose de très simple; Cependant, je n'ai pas pu trouver la réponse par moi-même.

453voto

Oxinabox Points 3930

En python "else if" est orthographié "elif".

En outre, vous avez besoin d'un deux-points après elif et else .

Réponse simple à une question simple.

J'ai eu le même problème au début (au cours des dernières semaines)

Donc, votre code devrait lire:

 def function(a):
    if a == '1':
        print('1a')
    elif a == '2':
        print('2a')
    else:
        print('3a')

function(input('input:'))
 

21voto

Nick Presta Points 13298

Voulez-vous dire elif ?

13voto

Tom Points 6907
def function(a):
    if a == '1':
        print ('1a')
    elif a == '2':
        print ('2a')
    else:
        print ('3a')

10voto

ghostdog74 Points 86060

depuis des temps anciens, la syntaxe correcte pour if/else if en Python est elif . Par ailleurs, vous pouvez utiliser le dictionnaire si vous avez beaucoup de if/else .eg

 d={"1":"1a","2":"2a"}
if not a in d: print("3a")
else: print (d[a])
 

Pour msw, exemple d'exécution de fonctions à l'aide d'un dictionnaire.

 def print_one(arg=None):
    print "one"

def print_two(num):
    print "two %s" % num

execfunctions = { 1 : (print_one, ['**arg'] ) , 2 : (print_two , ['**arg'] )}
try:
    execfunctions[1][0]()
except KeyError,e:
    print "Invalid option: ",e

try:
    execfunctions[2][0]("test")
except KeyError,e:
    print "Invalid option: ",e
else:
    sys.exit()
 

4voto

Winston C. Yang Points 582

Voici un petit refactoring de votre fonction (elle n'utilise pas "else" ou "elif"):

 def function(a):
    if a not in (1, 2):
        a = 3
    print(str(a) + "a")
 

@ ghostdog74: Python 3 nécessite des parenthèses pour "print".

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