关于python:’else if’的正确语法是什么?

What is the correct syntax for 'else if'?

我是一个新的Python程序员,正在从2.6.4跃升到3.1.1。在我尝试使用"else if"语句之前,一切都很顺利。解释器在"else if"中的"if"后面给了我一个语法错误,原因是我似乎不知道。

1
2
3
4
5
6
7
8
def function(a):
    if a == '1':
        print ('1a')
    else if a == '2'
        print ('2a')
    else print ('3a')

function(input('input:'))

我可能错过了一些非常简单的事情;但是,我自己找不到答案。


在python中,"else if"拼写为"elif"。另外,在elifelse后面需要一个结肠。

简单问题的简单答案。我刚开始的时候也遇到了同样的问题(最近几周)。

所以你的代码应该是:

1
2
3
4
5
6
7
8
9
def function(a):
    if a == '1':
        print('1a')
    elif a == '2':
        print('2a')
    else:
        print('3a')

function(input('input:'))


你是说elif吗?


1
2
3
4
5
6
7
def function(a):
    if a == '1':
        print ('1a')
    elif a == '2':
        print ('2a')
    else:
        print ('3a')

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

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

对于MSW,使用字典执行函数的示例。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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"):

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

@ghostdog74:python 3需要括号来表示"print"。


1
2
3
4
5
6
7
def function(a):
    if a == '1':
        print ('1a')
    elif a == '2':
        print ('2a')
    else:
        print ('3a')

应更正为:

1
2
3
4
5
6
7
def function(a):
    if a == '1':
        print('1a')
    elif a == '2':
        print('2a')
    else:
        print('3a')

如您所见,否则if应该改为elif,在'2'后应该有冒号,否则,在else语句后应该有一行新行,并关闭打印和括号之间的空格。