Каков правильный синтаксис для "else if"?

Я новый программист на Python, который совершает прыжок с 2.6.4 до 3.1.1. Все прошло нормально, пока я не попытался использовать инструкцию else. Интерпретатор дает мне синтаксическую ошибку после "if" in "else if" по той причине, которую я не могу понять.

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

function(input('input:'))

Вероятно, я пропустил что-то очень простое; однако я не смог найти ответ самостоятельно.

Ответ 1

В python "else if" написано "elif".
Кроме того, вам понадобится двоеточие после elif и else.

Простой ответ на простой вопрос. У меня была та же проблема, когда я впервые начал (за последние пару недель).

Итак, ваш код должен читать:

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

function(input('input:'))

Ответ 2

Вы имеете в виду elif?

Ответ 3

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

Ответ 4

с давних времен правильный синтаксис для if/else if в Python равен elif. Кстати, вы можете использовать словарь, если у вас есть много if/else.eg

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

Для msw, пример выполнения функций с использованием словаря.

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()

Ответ 5

Ниже приведен небольшой рефакторинг вашей функции (он не использует "else" или "elif" ):

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

@ghostdog74: Python 3 требует скобок для "print".

Ответ 6

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

Следует исправить на:

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

Как вы можете видеть, в противном случае, если значение должно быть изменено на elif, после '2' должны быть двоеточия, а в противном случае после оператора else должна быть новая строка, закрывающая пробел между print и круглыми скобками.

Ответ 7

Синтаксис if... elif... else

если тестовое выражение:

Body of if

тестовое выражение elif:

Body of elif

еще:

Body of else

Элиф - это сокращение, если еще. Это позволяет нам проверять наличие нескольких выражений.

Если условие if равно False, оно проверяет состояние следующего блока elif и так далее.

Если все условия ложны, выполняется тело else.

Только один блок из нескольких блоков if... elif... else выполняется согласно условию.

Блок if может иметь только один блок. Но он может иметь несколько блоков elif.

Ответ 8

Похоже, что вы пропустили несколько двоеточий в выражениях "else if" и "else".

Ответ 9

У Python 3.x были некоторые изменения, а это значит, что некоторые программы python2.7 могут не работать.

Я знаю, что этот ответ может быть запоздалым, но он указывает некоторые вещи.

Python 3.x эквивалент else if сокращен до elif. Это означает, что теперь код else if должен быть elif.

Вот пример:

print ("Hello! Type a letter. (a for adding, s for subtracting)")
answer = input()
if answer = "a":
adding() #This would lead to a define, e.g def adding():

elif answer = "b":
subtracting() #This would lead to a define, e.g def adding():

else:
print ("Invalid selection!")

Это немного сужает его и упрощает сортировку вещей.