Bir önceki engelli atlama alıştırmasında üç seçimlik vermek istediğimizden dolayı (bitir, git veya zıpla) iç içe iki tane if/else kullanmamız gerekti. Buda yazılan kodun içe içe yazılmasını mecbur hale getirdi. Reeborg'a 10 ayrı seçimlik vermemiz gerekseydi ne olurdu; kodlar içe içe yazılacağından okunması bir hayli zor olacaktı. Bu durumu ortadan kaldırmak için Guido van Rossum, Python'un yaratıcısı, else den sonra kullanılan if leri temsil etmek için elif adında bir komut hazırlamıştır. elif komutu else if in kısaltılmışıdır. Bu yeni komut yardımıyla az önceki kod aşağıdaki gibi yazılabilir:
def move_jump_or_finish(): if next_to_beeper(): turn_off() elif front_is_clear(): move() else: jump_one_hurdle()
Üç seçimlik olduğunu şimdi daha rahat görebiliyoruz, seçimlikler aynı hizada yazılmışlar. else den sonraki komutun çalıştırılabilmesi için kendisinden önce gelen tüm şartların (next_to_beeper ve front_is_clear) False olması gerekir. Daha fazla seçimliğimiz olsaydı tek yapmamız gereken yeni elif 'ler eklemek olacaktı.
def move_jump_or_finish(): if next_to_beeper(): turn_off() elif front_is_clear(): move() elif right_is_clear(): # her zaman false pass else: jump_one_hurdle()
Reeborg en alt duvarın üstünde hareket ettiğinden sağında her zaman bir duvar vardır. Bu nedenle right_is_clear() her zaman False sonucunu verir ve pass (Phytonda hiç bir şey yapma anlamına gelir) komutu hiç bir zaman yerine getirilmez. Bunun yerine left_is_clear() kullanılsaydı True değerini alacağından Reeborg takılıp kalacak ve hiç bir şey yapmayacaktı. Bunu deneyin!
if, elif, else kullanarak yeni bir program yazın bu program önceki iki alıştırmadaki engellerle çalıştığı gibi aşağıdaki şekildeki engellerle de çalışabilsin. (dünya dosyası hurdles3.wld).