## 34. Çukulatalı kek tarifi

Sizi bilmiyorum, ama benim karnım acıktı. Güzel bir çukulatalı kek olsaydı iyi olurdu.

- Malzemeler

- 4 yumurta
- 100 g şeker
- 250 g çikolata
- 30 g kakao

Keki yapabilmek için aşağıdakine benzer bir tarife ihtiyacımız var:

- Fırını 180 C'ye kadar ısıt.
- Yumurtaların aklarını sarılarından ayır.
- v.b.

Tarif bir bilgisayar programına benzer: istenen sonucu elde etmek için adım adım eksiksiz uygulanması gereken bir dizi emir. Bu noktada Python'a geri dönüyorum.

### Listeler (Lists)

Aşağıdakini Python yorumlayıcısı ile deneyebilirisiniz:

    >>> malzemeler = ["4 yumurta", "100 g şeker",
    ...     "250 g çikolata", "30 g kakao"]
    >>>

`malzemeler` Pythonda kullanılan listelere bir örnektir. Bir liste herhangi bir sayıda eleman içerebilir. Az önceki örnekte tüm elemanlar string seçilmişler, listenin elemanları sayılar, başka listeler veya henüz görmediğimiz Python nesneleri de olabilir. Şimdi aşağıdakini deneyin:

    >>> for eleman in malzemeler:
    ...    print eleman
    4 yumurta
    100 g şeker
    250 g çikolata
    30 g kakao

    >>> malzemeler[0]
    '4 yumurta'

    >>> malzemeler[0:2]
    ['4 yumurta', '100 g şeker']

Daha önceden gördüklerimizden biraz farklı olsa da bunlar tanıdık gelmiş olmalı. Aşağıdakini de deneyin:

    >>> for harf in malzemeler[0]:
    ...     print harf
    ...
    4

    y
    u
    m
    u
    r
    t
    a

    >>> malzemeler[0][2]
    'y'

    >>> '4 yumurta'[2]
    'y'

Daha önce gördüğümüz gibi burada `malzemeler[0]` '4 yumurta' ile eş anlamlıdır; bu nedenle `malzemeler[0][2]` '4 yumurta'daki üçüncü (Python saymaya 0'dan başlar, hatırlayın) karakterdir.

Yukarıdaki tarifte önemli bir malzemeyi unuttum: kekin üzerine süreceğimiz krema. Bunu listeye ekleyebilir ve eklendiğini aşağıdaki gibi kontrol edebilirim:

    >>> malzemeler.append("krema")
    >>> print malzemeler
    ['4 yumurta', '100 g şeker', '250 g çukulata', '30 g kakao', 'krema']

`append()` liste sınıfının bir metodudur. `malzemeler` bu sınıfın bir örneğidir. Daha önceki derslerde gördüğümüz gibi, `malzemeler` örneğindeki `append` metodunu araya nokta koyarak kullanıyoruz. `append`'in parametresi listeye eklemek istediğimiz nesnedir. Ekleme her zaman listenin sonuna yapılır.

Listelerin başka metotları da vardır; bunları yeri geldiğinde açıklayacağım. Eğer bunları görmek istiyorsanız Python yorumlayıcısında `dir([])` yazın ve Enter'a basın. Burada `[]` boş bir listedir, onun yerine herhangi bir liste de kullanılsa aynı sonuç alınır. `append` metodunu görebildiniz mi.

Listeye eleman eklemeyi öğrendik, şimdi sıra silmede. Bunun için del komutunu kullanacağız.

    >>> del malzemeler[3]
    >>> print malzemeler
    ['4 yumurta', '100 g şeker', '250 g çukulata', 'krema']

del komutu listelerden eleman silmekten başka işlerde yapar. Örneğin, tanımlanmış bir değişkeni silebilir.

    >>> a = 3
    >>> print a
    3
    >>> del a
    >>> print a
    Traceback (most recent call last):
      File "<input>", line 1, in ?
    NameError: name 'a' is not defined

### Deneyin!

Reeborg'un dünyasında kendine özgü adları olan iki tane robot yaratın, biraz dolaşmalarını sağlayın ve daha sonra robotlardan birisinin del komutu ile yok olmasını sağlayın. Robot ekrandan kaybolmadan önce diğer robotun en azından bir adım daha atmasına ihtiyacınız olabilir.

### `range()`hakkında bir sır

`range()`hakkında bir sır öğrenmeye hazırsınız:

    >>> print range(6)
    [0, 1, 2, 3, 4, 5]

Doğru: `range()` bir liste yaratır!

### Liste, tamsayı ve stringlerin birbirine dönüştürülmesi

Bir veri tipini diğer bir veri tipine dönüştürmekte kullanılan Python fonksiyonları aşağıda verilmiştir:

    >>>  first_number = 1304
    >>>  second_number = 987
    >>>
    >>>  # str() ile tamsayının string'e dönüştürülmesi
    >>>  first_string = str(first_number)
    >>>  first_string
    '1304'
    >>>  second_string = str(second_number)
    >>>  second_string
    '987'

    >>>  # int() ile stringin tamsayıya dönüştürülmesi
    >>>  int(first_string)
    1304

    >>>  # list() ile bir stringin listeye dönüştürülmesi
    >>>  first_list = list(first_string)
    >>>  first_list
    ['1', '3', '0', '4']

    >>>  second_list = list(second_string)
    >>>  second_list
    ['9', '8', '7']

    >>>  # join() ile string aralarının doldurulması
    >>>  '...'.join(second_string)
    '9...8...7'
    >>>  '-'.join(first_string)
    '1-3-0-4'
    >>>  # boş stringle '' eski haline getirmek
    >>>  ''.join(first_string)
    >>>  '1304'
    >>>  ''.join(second_string)
    >>>  '987'

    >>>  # pop() ile listenin son elemanının alınıp silinmesi
    >>>  # Not: pop() append()'in bir anlamda tersidir
    >>>  first_list
    ['1', '3', '0', '4']
    >>>  last_element = first_list.pop()
    >>>  last_element
    '4'
    >>>  first_list
    ['1', '3', '0']

    >>>  # len() fonksiyonu bir listedeki
    >>>  # eleman sayısını verir
    >>>  len(first_list)
    3

### Liste, string ve tamsayıları kullanarak Reeborg'a toplama yaptırmak

Aşağıda gösterildiği gibi Reeborg'a liste, string ve tamsayıları kullanarak toplama yapması için yardımcı olun.

Çukulatalı kek tarifi - - Farklı bir tanımlama