为什么我要使用elif而不是反复使用if语句。 我无法找到有关此事的任何文件。提前谢谢。
答案 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>
,if
和elif
。换句话说,案件是相互排斥的。
它还允许短路逻辑。找到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()
这两个条件是相互独立的。如果a
和b
都评估为True
,则会进行do_something*
个函数调用。相反,如果你写了
if a:
do_something1()
elif b:
do_something2()
然后如果a
评估为True
,那么do_something1
将被调用,但do_something2
将被调用 - 即使b
也是如此。因此elif
构造允许您轻松指定互斥条件。