什么是“其他如果”正确的语法?

我是一个从2.6.4到3.1.1的新Python程序员。 一切都很好,直到我试图使用'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:')) 

我可能错过了很简单的事情; 然而,我一直无法自己find答案。

在python“else if”中拼写“elif”。
另外,你需要elifelse的冒号。

简单的回答一个简单的问题。 当我第一次开始时(在过去的几个星期),我也有同样的问题。

所以你的代码应该是:

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

你的意思是elif

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

自古以来, 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,使用字典执行function的例子。

 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需要“print”的括号。

它看起来像你在“else if”和“else”语句中丢失了一些冒号。

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, eg def adding(): elif answer = "b": subtracting() #This would lead to a define, eg def adding(): else: print ("Invalid selection!") 

这使得它略微变窄,使分类更容易。