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

J.S*_*JJJ 4 python if-statement

例如.

据一些专家介绍,

这里的条件是互斥的:

if(n>0):
    print "Number is Positive"
if(n<0):
    print "Number is Negative"
if(n==0):
    print "Number is ZERO"
Run Code Online (Sandbox Code Playgroud)

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

 if n > 0:
    print "Number is Positive"
 elif n < 0:
    print "Number is Negative"
 else:
    print "Number is ZERO"
Run Code Online (Sandbox Code Playgroud)

所以我只想问一个问题,'if''elif'之间有什么区别?我知道'if'和'elif'之间的基本区别.但我只是想知道,为什么一些新手程序员喜欢'elif'而不是'if'?

Ósc*_*pez 16

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

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

greatest = None
if a >= b and a >= c:
    greatest = a
elif b >= a and b >= c:
    greatest = b
else:
    greatest = c
print greatest
Run Code Online (Sandbox Code Playgroud)

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

greatest = None
if a > greatest:
    greatest = a
if b > greatest:
    greatest = b
if c > greatest:
    greatest = c
print greatest
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,if-if-if并且if-elif-else是有用的,这取决于你需要做什么.特别是,我的第二个例子更有用,因为将条件置于循环中很容易 - 所以我们有多少个数并不重要,而在第一个例子中我们需要写很多每个附加数字的手工条件.


cor*_*vid 10

你可以连续if使用elif,并完成与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')
Run Code Online (Sandbox Code Playgroud)

这会印刷

divisible by 2
Run Code Online (Sandbox Code Playgroud)

但是,假设您将elif上面的内容替换为if并删除该else条款......

divisible by 2
divisible by 3
Run Code Online (Sandbox Code Playgroud)

elif链条的陈述,并选择适当的第一个.