Я - новый Python программист, который делает прыжок от 2.6.4 до 3.1.1. Все пошло прекрасное, пока я не пытался еще использовать 'если' оператор. Интерпретатор дает мне синтаксическую ошибку после, 'если' в 'еще, если' по причине я, может казаться, не выясняю.
def function(a):
if a == '1':
print ('1a')
else if a == '2'
print ('2a')
else print ('3a')
function(input('input:'))
Я, вероятно, пропускаю что-то очень простое; однако, я не смог найти ответ самостоятельно.
В Python написано "иначе, если" "элиф".
Кроме того, вам понадобится двоеточие после elif
и else
.
Простой ответ на простой вопрос. У меня была такая же проблема, когда я только начал (последние пару недель).
Итак, ваш код должен выглядеть так:
def function(a):
if a == '1':
print('1a')
elif a == '2':
print('2a')
else:
print('3a')
function(input('input:'))
издавна правильный синтаксис для 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()
Вот небольшой рефакторинг вашей функции (она не использует else или elif):
def function(a):
if a not in (1, 2):
a = 3
print(str(a) + "a")
@ ghostdog74: Python 3 требует скобок для «печати».
def function(a):
if a == '1':
print ('1a')
elif a == '2':
print ('2a')
else:
print ('3a')