15. Doğru değil not true!?

Reeborg'un bir bip buluncaya kadar yürümesini ve bip'i bulunca da kendisini kapatmasını istediğimizi varsayalım. Başlangıç pozisyonu aşağıdaki gibi olsun:

stop at beeper

Bunu pseudocode ile şöyle yapabiliriz:

If next to beeper,
... dur;
otherwise,
... yürümeye devam et.

Bunu Python koduna çevirirsek:

if next_to_beeper():
    turn_off()
else:
    move()           
Bu tam bir çözüm değil çünkü Reeborg'a bu işi tekrar etmesini söylemedik. Bu şu an için önemli değil biz şimdi aynı işi yapan aşağıdaki pseudocode 'a bakalım.

If not next to beeper,
...yürümeye devam et;
otherwise,
...dur.

yürümeye devam et ve dur'un yerlerini değiştirmemize rağmen iki pseudocode'da aynı işi yaparlar. Burada önemli olan nokta if den sonra  not'ın kullanılmasıdır. Bu şekilde Pythonda şartların tersi alınabilir: 
if not next_to_beeper():
    move()
else:
    turn_off()          

Bu kodu tam bir program haline getirmek için bir tanımlama yapmalı ve bu tanımlamayı yeteri kadar tekrar ettirmeliyiz.

Sıra sizde

not'ı kullanarak engel atlama programını yeniden yazınız.


Ekme biçme zamanı

Bahar geldi. Reeborg'un babası sonbaharda hasat etmek için bahçeye havuç tohumları atmıştı. Aşağıda gördüğünüz gibi bazı yerlerde iki filiz çıkarken bazı yerlerde hiç filiz çıkmamış. (dünya dosyası: harvest4.wld).

weeding

Reeborg'a filizleri düzenlemesi için yardım edin ve her yerde filiz sayısının aşağıda olduğu gibi bir tane olmasını sağlayın.

weeding

Kodlamanın bir bölümü için tavsiye:

# probleme uygun kelimeler
next_to_a_carrot = next_to_a_beeper
plant_carrot = put_beeper
pick_carrot = pick_beeper

def one_carrot_only():
    if not next_to_a_carrot():
        plant_carrot()      # filizi ek
    else:
        pick_carrot()
        if not next_to_a_carrot(): 
            plant_carrot()  

Gerçek hayatta filizlerin yerini değiştirmek iyi bir fikir olmayabilir!

previous If, else, if, else, .... - home - Bir süre için For a while next