Bildiğiniz gibi Reeborg çok iyi bir durumda değil. Yalnızca sola dönebilir, duvarları önüne geldiğinde görebilir, bipleri üstünde olduğu zaman duyabilir ve yağ sızdırır. Reeborg'un birde pusulası (kırık da olsa) vardır ve bununla kuzeye dönük olup olmadığını anlayabilir. Pusulayı kullanmak için facing_north testini kullanabilirsiniz.
Reeborg'un yüzü kuzey'e dönünceye kadar sola dönmesini sağlayan kısa bir program yazın. Reeborg'un başlangıç pozisyonu ne olursa olsun yazdığınız program doğru çalışmalıdır.
Reeborg'un yaptığı testler aslında Python fonksiyonlarıdır. Bu fonksiyonlar bizim şimdiye kadar gördüklerimizden farklı olarak, bir sonuç göstermek yerine bir cevap verirler (True veya False) ve bu cevaba göre işlem yapılır. Bizim gördüğümüz fonksiyonlara benzer bir şeyler yapmak için return komutunu kullanabiliriz. Örnek:
>>> def add(a, b): ... answer = a + b ... return answer ... >>> c = add(4, 5) >>> print c 9 >>> # Sonucu ekrana direk yazdırabiliriz >>> print add(1, 1) 2
Yukarıdaki örnekte add() fonksiyonunu bir satır daha kısa bir şekilde aşağıdaki gibi yazabiliriz:
>>> def add(a, b): ... return a + b ... >>> c = add(4, 5) >>> print c 9
return komutu yalnızca bir değişkenin değerini değil geçerli bir Python ifadesinin sonucunu da geri döndürebilir. Eğer değerini geri döndürmek istediğiniz ifade kısa ise ekstra bir değişken kullanmak istemeyebilirsiniz (yukarıdaki answer değişkeni gibi). Ancak, ileride göreceğiniz gibi bazen bir değişkenden daha fazla sonuç geri döndürmek isteyebilirsiniz. Bu durumda ifade kullanmak yerine değişken kullanmak daha kolay olabilir.
Dersin başında bahsettiğimiz gibi Reeborg'un kırık bir pusulası vardır. Bu nedenle yalnızca kuzeye dönük olup olmadığını bilebilir. Artık, Reeborg'un aklında bir şeyler tutabileceğini öğrendiğimize göre, ona hangi yöne doğru baktığını öğretebiliriz. Örneğin:
def facing_south(): turn_left() turn_left() answer = facing_north() turn_left() turn_left() return answer
Bunun nasıl çalıştığını iki durumu incelerek anlayalım:
Artık Reeborg'un güneye bakıp bakmadığını anlamak için yeni testimizi kullanabiliriz:
while not facing_south(): turn_left()
Reeborg'un yüzünü batıya dönmesini sağlayan bir program yazın. Reeborg'un başlangıç pozisyonu ne olursa olsun yazdığınız program doğru çalışmalıdır. Reeborg farklı başlangıç pozisyonlarındayken programınızı deneyin.
Boş bir dünyada Reeborg'u yüzü herhangi bir yöne doğru olacak şekilde herhangi bir noktaya koyun. Reeborg'u buradan her zamanki başlangıç noktasına getiren ve yüzünü doğuya çeviren bir program yazın. Bu program Reeborg nereye hangi pozisyonda yerleştirilirse yerleştirilsin doğru olarak çalışmalıdır.