【问题标题】:What's the main difference between 'if' and 'else if'? [duplicate]“如果”和“如果”之间的主要区别是什么? [复制]
【发布时间】:2014-09-06 18:27:23
【问题描述】:

例如

根据一些专家的说法,

这里的条件是互斥的:

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

最好用elif和else重写:

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

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

【问题讨论】:

标签: python if-statement


【解决方案1】:

第一种形式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

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

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

如您所见,if-if-ifif-elif-else 都很有用,具体取决于您需要做什么。特别是,我的第二个示例更有用,因为将条件放在循环中很容易 - 所以我们有多少数字并不重要,而在第一个示例中,我们需要写很多为每个额外的数字手动设置条件。

【讨论】:

  • 好吧,你的意思是处理差异。
  • @J.Smith.JJJ 他们是不同的行为,要清楚。有时您需要一个,有时另一个 - 这取决于您要解决的问题。
  • @J.Smith.JJJ 我添加了一个例子来说明我的观点。
【解决方案2】:

您可以将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 链接语句并选择第一个合适的语句。

【讨论】:

  • 最佳方式..(使用示例)
  • 这个例子确实展示了if和elif的主要区别,非常清楚。
猜你喜欢
  • 2011-05-20
  • 2017-03-10
  • 1970-01-01
  • 1970-01-01
  • 2020-08-15
  • 2011-02-23
  • 1970-01-01
  • 1970-01-01
  • 2018-11-10
相关资源
最近更新 更多