python 3チュートリアル(11):if/elif/else


pythonではifを用いて条件を判断することができる.
例えば、私たちは1つの機能が必要で、もし1人が今月20日を超えて遅刻しないならば、彼の給料は500元のボーナスを加えて、もし10日を超えて遅刻しないならば200元のボーナスがあって、遅刻しないで10日(10日を含む)未満ならばボーナスがありません.
award = 0
day = input('       ').strip()
if int(day) > 20:
	award += 500
	print('         ')
elif int(day) > 10:
	award += 200
	print('         ')
else:
	print('  ,       ,      ')

if,elif実行条件が必要な場合はif,elifの後の条件が成立する必要がある.
f判断は上から下へ、判断文にif、elifがある場合はifを先に実行し、if条件が成立するとifの下の内容を実行した後に終了し、elifを実行しない.上のコードのif条件(int(day)>20)とelif条件(int(day)>10)を交換すると、22を入力すると、皆勤ではなく半勤ボーナスが得られたことを示す.
ifが成立しない場合はelifに下がり、elifが成立しない場合はelifを実行して終了し、成立しない場合は成立した文(elseなど)に遭遇するまで下がり続け、成立した文に遭遇しない場合はエラーを報告して終了します.
完全なif文には、if、1つ以上のelif、および1つのelseが含まれます.elseは、ifおよびelifに合致しないものを受け入れた後に行われる操作であり、elseは判断条件を必要としません.
ifはネストすることもできますが、上記のコードを改善して、ユーザーの誤った入力(漢字やアルファベットの入力など)を防止すれば、ネストを使用して実現することができます.
award = 0
day = input('       ').strip()
if day.isdigit():
	if int(day) > 20:
		award += 500
		print('         ')
	elif int(day) > 10:
		award += 200
		print('         ')
	else:
		print('  ,       ,      ')
else:
	print('    ')

上記の改善されたコードの最も外側のif条件(if day.isdigit():には比較演算子はありません.ifは条件がTrueであれば実行できるからです.isdigit()は、dayが数字であるか否かを判断するものである.
1つのif文には1つのifしかありませんが、複数のelifがあります.
award = 0
day = input('       ').strip()

if day.isdigit():
	if int(day) > 20 and int(day) < 30:
		award += 500
		print('         ')

	elif int(day) <= 20 and int(day) > 10:
		award += 200
		print('         ')

	elif int(day) <= 10 and int(day)>= 0:
		award += 200
		print('         ?')

	else:
		print('  ,     30 ...')
else:
	print('    ')