我是一名新的Python程序员,正在从2.6.4跳到3.1.1。一切都很好,直到我尝试使用'else if'语句。解释器在“else if”中的“if”后面给了我一个语法错误,原因我似乎不知道。

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

function(input('input:'))

我可能忽略了一些非常简单的东西;然而,我自己还没能找到答案。


在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:'))

你是说艾丽夫吗?


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

自古以来,Python中if/else if的正确语法是elif。顺便说一下,如果你有很多if/else,你可以用字典

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

如你所见,else if应该改为elif, '2'后面应该有冒号,else语句后面应该有新行,并关闭print和括号之间的空格。