'else if'的正确语法是什么?
我是一位正在从2.6.4飞跃到3.1.1的新Python程序员。一切都很好,直到我试图使用'else if'语句。由于我无法理解的原因,解释器在'else if'中的'if'之后给我一个语法错误。'else 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:'))
不用担心,我们都需要学习一段时间。 我觉得python把这样的elphisise放在可读性上,然后去使用elkif而不是它。 我建议您随时打开python API手册:http://docs.python.org/3。1/ 重要链接是 教程:http://docs.python.org/3.1/tutorial/index.html 语言参考:http://docs.python.org/3.1/reference/index.html Library参考资料:http://docs.python.org/3.1/library/index.html – 2010-03-07 10:37:27
Perl使用相同的关键字,其基本原理是为了防止您忘记完成前一个else语句的写作并且开始编写另一个语句如果声明。显然这是编写C代码时常见的问题。 – 2015-10-06 23:54:55
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])
城市生活垃圾,例如使用字典执行功能。
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()
你可以,但请不要这样做。字典不是一个'elif'的好替代品。 – 2010-03-07 05:09:54
@ s.lott,OP的情况很简单。如果他必须检查a的许多值,那么字典更加整洁。你可能会习惯于不使用它,但我一直在使用它,并且我喜欢这种方法比编码许多if/else更好。哎呀,我甚至使用字典来执行功能。 – ghostdog74 2010-03-07 05:27:42
@ghostdog:我知道你*可以*使用字典来执行函数,但是这个想法让我害怕像计算得到的gotos或者粘贴Tcl字符串并且执行它们。这是好的做法吗?你能举出一个例子吗? – msw 2010-03-07 05:35:22
这里是你的函数的一个小重构(它不使用 “其他” 或 “ELIF”):
def function(a):
if a not in (1, 2):
a = 3
print(str(a) + "a")
@ ghostdog74:Python 3的要求括号 “打印”。
python 3用一个函数替换了python 2的print语句,因此需要括号,如果你想这样做,以及只是使用sys.stdout.write – 2010-08-26 14:07:58
应该是'('1','2')',操作使用字符串 – priestc 2011-12-20 16:23:44
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, e.g def adding():
elif answer = "b":
subtracting() #This would lead to a define, e.g def adding():
else:
print ("Invalid selection!")
这缩小稍微,使分拣出来的东西要容易得多。
其在Python 2.5,2.6和2.7中称为ELIF以及...所以这不是真正的新对于python 3.x,已经在现有的答案中陈述了...此外,您的条件需要使用==而不是= ...更不用说您缺少的缩进。 – Dyrborg 2015-03-15 21:01:32
即使python 1也有elif:https://docs.python.org/release/1.6/tut/node6.html#SECTION006100000000000000000 – 2016-05-03 10:20:48
我认为这不适用于2.6.4。 – wRAR 2010-03-07 05:38:10
的确,这些Python语法和语义元素在这些版本之间并没有改变。可能永远不会。 – 2010-03-07 07:56:16
你可以从python中if/else的好教程开始:http://www.dreamsyssoft.com/python-scripting-tutorial/ifelse-tutorial.php – 2013-01-10 14:05:12