Pythonでのelse文の整理


if-else文:
様々な言語と同じ使い方で、条件文でif文と組み合わせて使用されるelse文.if文の条件式の結果ブール値が偽の場合、プログラムはelse文の後のコードを実行します.その文法は最もよく知られています.
if expression:
    expr_true_suite
else:
    expr_false_suite

Elif(else-if)文:
Elifはpythonが提供するelse-if文で、複数の条件式の値が真であるかどうかを確認し、真の場合に特定のコードブロック内のコードを実行します.elseと同様にelifはオプションですが、1つのif文に複数のelif文を含めることができますが、最後には1つのelse文しかありません.
 
if expression1:
    expr1_true_suite
elif expression2:
    expr2_true_suite
elif expressionN:
    exprN_true_suite
else:
    none_of_the_above_suite

while-else/for-else文:
他の言語では,条件文を除いてelse分岐は見られないが,Pythonではwhileとforループでもelse文を用いることができる.これらの動作順序は、ループで使用される場合、else文はループが完了した後にのみ実行されます.すなわち、break文もelseコードブロックをスキップし、breakではなくループが正常に終了するとelse文が実行されます.
while-elseの例:
#!/usr/bin/env python
#       

def showMaxFactor(num):
	count=num/2
	while count>1:
		if num%count == 0:
			print 'largest factor of %d is %d' % (num,count)
			break
		count -=1
	else:
		print num,'is prime'
		
for i in range(10,21):
	showMaxFactor(i)

プログラムの実行結果は次のとおりです.
largest factor of 10 is 5
11 is prime
largest factor of 12 is 6
13 is prime
largest factor of 14 is 7
largest factor of 15 is 5
largest factor of 16 is 8
17 is prime
largest factor of 18 is 9
19 is prime
largest factor of 20 is 10
 
try-else文:
pythonのエラーと例外の場合、try-except文セグメントは、elseと連用することもできます.その機能とループのelse文には大きな違いはありません.try範囲内で異常が検出されていない場合、else句を実行します.文法を見てみましょう.
 try:
     log = open('logfile.txt','w')
 except:
     print 'file logfile.txt is not exsit'
 else:
     log.write('no exception caught')
     log.close()

もちろん、例外処理では、elseはfinallyと同様に使用できます:try-except-else-finally.