第一种形式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-if和if-elif-else都很有用,具体取决于您需要做什么.特别是,我的第二个例子更有用,因为将条件置于循环中很容易 – 所以我们有多少个数并不重要,而在第一个例子中我们需要写很多每个附加数字的手工条件.