为什么用elif语句代替if语句?

时间:2016-08-02 15:15:48

标签: python

为什么我要使用elif而不是反复使用if语句。 我无法找到有关此事的任何文件。提前谢谢。

5 个答案:

答案 0 :(得分:4)

如果您希望执行一个且只有一个案例,则可以使用<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <ul class="mainNav"> <li><a href="#home">Home</a></li> <li><a href="#about">About</a></li> <li><a href="#contact">Contact</a></li> </ul> <div id="home"> <h1>WELCOME !</h1> </div> <div id="about"> <h1>About Us</h1> </div> <div id="contact"> <h1>Contact Us</h1> </div>ifelif。换句话说,案件是相互排斥的。

它还允许短路逻辑。找到else if的{​​{1}}后,您可以跳过检查以下所有情况的条件。如果您只是发表了一系列elif声明,则无论如何都必须检查所有条件。

答案 1 :(得分:2)

考虑第一个if / elif组与第二组if之间的差异:

x = 0

if x == 0:
    print("Zero")
elif x % 2 == 0:
    print("Even")
elif x % 2 == 1:
    print("Odd")

print('---')

if x == 0:
    print("Zero")
if x % 2 == 0:
    print("Even")
if x % 2 == 1:
    print("Odd")

在第一个中,输出只会是:

Zero

在第二个中,输出将是:

Zero
Even

通过使用if / elif,一旦满足条件,将跳过该“梯形图”的其余部分。通过使用一堆单独的if,每个都将被测试,并且单个变量可以满足多个条件(如x所示)。

每个都有原因,但了解差异非常重要

答案 2 :(得分:1)

Python有一个elif的事实,而使用{}分隔块的其他语言没有,是缩进。 如果没有它,在某些情况下你必须有一个非常宽的屏幕...

你必须写:

if a:
    pass
else:
    if b:
        pass
    else:
        if c:
            pass
        else:
            pass

而不是:

if a:
    pass
elif b:
    pass
elif c:
    pass
else:
    pass

使用强制缩进的语言将允许您编写:

if (a) {
    // pass
}
else if (b) {
    // pass
}
else if (c) {
    // pass
}
else {
    // pass
}

答案 3 :(得分:1)

elif语句只被称为第一个if语句为false。请考虑以下示例:

if foo==2:
   print("foo is exactly 2")
elif foo%2 == 0:
   print("foo is not 2 but divisible by 2")

如果您使用两个if语句,在foo == 2的情况下,将打印两个消息。

答案 4 :(得分:0)

当你写:

if a:
    do_something1()
if b:
    do_something2()

这两个条件是相互独立的。如果ab都评估为True,则会进行do_something*个函数调用。相反,如果你写了

if a:
    do_something1()
elif b:
    do_something2()

然后如果a评估为True,那么do_something1将被调用,但do_something2将被调用 - 即使b也是如此。因此elif构造允许您轻松指定互斥条件。