web-dev-qa-db-fra.com

Quelle est la syntaxe correcte pour 'else if'?

Je suis un nouveau programmeur Python qui passe de 2.6.4 à 3.1.1. Tout s'est bien passé jusqu'à ce que j'essaye d'utiliser l'expression 'else if'. L'interprète me donne une erreur de syntaxe après le 'if' dans 'else if' 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 été capable de trouver la réponse par moi-même.

270
user269857

En python _ "else if" est orthographié "Elif".
De plus, vous avez besoin de deux points après le Elif et le else.

Réponse simple à une question simple. J'ai eu le même problème quand j'ai commencé (au cours des deux dernières semaines).

Donc, votre code devrait se lire comme suit:

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

function(input('input:'))
425
Lyndon White

Voulez-vous dire Elif ?

19
Nick Presta
def function(a):
    if a == '1':
        print ('1a')
    Elif a == '2':
        print ('2a')
    else:
        print ('3a')
13
Tom

depuis des temps anciens, la syntaxe correcte pour if/else if dans Python est Elif. En passant, vous pouvez utiliser le dictionnaire si vous avez beaucoup de if/else.

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 de 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()
10
ghostdog74

Voici un petit refactoring de votre fonction (il 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 "imprimer".

4
Winston C. Yang
def function(a):
    if a == '1':
        print ('1a')
    else if a == '2'
        print ('2a')
    else print ('3a')

Devrait être corrigé pour:

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

Comme vous pouvez le constater, sinon, si devrait être remplacé par Elif, il devrait y avoir des deux-points après le '2' et sinon, il devrait y avoir une nouvelle ligne après l'instruction else, et fermer l'espace entre l'impression et les parenthèses.

2
MilkyWay90