'if'和'else if'之间的主要区别是什么?

时间:2014-09-06 18:27:23

标签: python if-statement

例如......

据一些专家介绍,

这里的条件是相互排斥的:

if(n>0):
    print "Number is Positive"
if(n<0):
    print "Number is Negative"
if(n==0):
    print "Number is ZERO"

用elif和其他方式重写会更好:

 if n > 0:
    print "Number is Positive"
 elif n < 0:
    print "Number is Negative"
 else:
    print "Number is ZERO"

所以我只想问一个问题,&#39;之间是否存在差异?如果&#39; &#39; elif&#39; 。我知道&#39;之间的基本区别。如果&#39;和&#39; elif&#39;。但我只是想知道,为什么一些新手程序员更喜欢&#39; elif&#39;过去&#39;如果&#39;?

2 个答案:

答案 0 :(得分:15)

第一种形式if-if-if测试所有条件,而第二种if-elif-else只测试所需数量:如果找到一个True条件,它停止并且不评估其余部分。换句话说:当条件互斥时使用if-elif-else

让我们写一个例子。如果你想确定三个数字之间的最大值,我们可以测试一个是否大于或等于其他值,直到我们找到最大值 - 但是一旦找到该值,就没有必要测试其他值: / p>

greatest = None
if a >= b and a >= c:
    greatest = a
elif b >= a and b >= c:
    greatest = b
else:
    greatest = c
print greatest

或者,我们可以假设一个初始值为最大值,并依次测试其他每个值,看看假设是否成立,根据需要更新假设值:

greatest = None
if a > greatest:
    greatest = a
if b > greatest:
    greatest = b
if c > greatest:
    greatest = c
print greatest

正如您所看到的,if-if-ifif-elif-else都很有用,具体取决于您需要做什么。特别是,我的第二个例子更有用,因为它很容易将条件置于一个循环中 - 所以它与我们有多少数字并不重要,而在第一个例子中我们&#39 ; d需要为每个额外的数字手动编写许多条件。

答案 1 :(得分:9)

如果链条中没有任何条件得到满足,您可以将ifelif链接,并以else结束。检查语句时,它会找到第一个匹配的语句并执行该块中的指令,然后从if / elif / else块中断

n = 6
if n % 2 == 0:
  print('divisible by 2')
elif n % 3 == 0:
  print('divisible by 3')
else:
  print('not divisible by two or three')

这会打印

divisible by 2

但是,假设您使用elif替换上面的if并删除else条款......

divisible by 2
divisible by 3

elif将语句链接起来并选择第一个合适的语句。