我是一名新的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:'))
我可能错过了一些非常简单的事情;但是,我一直无法找到答案。
答案 0 :(得分:419)
在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:'))
答案 1 :(得分:19)
您的意思是elif
吗?
答案 2 :(得分:13)
def function(a):
if a == '1':
print ('1a')
elif a == '2':
print ('2a')
else:
print ('3a')
答案 3 :(得分:10)
自古以来,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()
答案 4 :(得分:4)
这是你的函数的一点重构(它不使用“else”或“elif”):
def function(a):
if a not in (1, 2):
a = 3
print(str(a) + "a")
@ ghostdog74:Python 3需要括号“print”。
答案 5 :(得分:2)
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和括号之间的空间。