## 25. Python toplama yapmayı zaten biliyordu.

Bir önceki derste Reeborg'a iki sayıyı toplatabilmek için bir hayli uğraşmamız gerekti. Bu derste Python'da iki sayıyı toplamanın ne kadar kolay olduğunu göreceksiniz, dahası diğer matematiksel işlemleri de rahatlıkla yaptırabileceksiniz.

### İlk yapılacak iş

Python yorumlayıcısını (Python: Code and Learn) üçüncü sekmeye tıklayarak seçin. Görünüm aşağıdakine benzer olmalıdır(Fransızca dışında).

İlk iki satırı şimdilik görmezden gelin üçüncü satırda gördüğünüz üç tane yan yana koyulmuş şey ">>>" Python prompt'udur.

    >>>

Şimdi Python'un toplamayı Reeborg'dan daha kolay yapıp yapamadığını görelim. İmleci üçüncü satıra koyun ve "Add 8 and 4" yazıp "enter" tuşuna basın. Python size kendi dili ile cevap verecektir.

    >>>Add 8 and 4
      File "<input>", line 1
        Add 8 and 4
            ^
    SyntaxError: invalid syntax
    >>>

Python yorumlayıcısı ingilizce emirleri anlamaz. Ancak Python komutlarını anlayabildiğini farketmiş olmalısınız, örneğin and farklı bir renkle gösteriliyor.

Aşağıda prompt'un hazır olarak beklediğini göreceksiniz. Bu defa "8+4" yazın ve enter'a basın. Aşağıdaki gibi bir görüntü elde etmelisiniz.

    >>> 8+4
    12
    >>>

Başardık! Python iki sayıyı hemen topladı (bunu Reeborg'a yaptırmak çok zordu). Prompt yeni komutları girilmesi için yine hazır olarak bekliyor. Aşağıdakileri de deneyin.

    >>> 8+4
    12
    >>> 8-4
    4
    >>> 8*4
    32
    >>> 8/4
    2

Gördüğünüz gibi Python toplama, çıkarma, çarpma ve bölme yapmayı biliyor.

### Sayısal işlemlere devam

Python kendisine bir dizi matematiksel işlem verildiğinde hangisini önce (işlem önceliği) yapması gerektiğini bilir. Önce bölme ve çarpmalar, sonra toplama ve çıkarmalar yapılıyor. Aşağıdaki örnekleri inceleyin.

    >>> 2+3*5
    17
    >>> 2+ (3*5)   # boşluk bırakmanız bir şeyi değiştirmez
    17
    >>> (2+3)*5
    25
    >>> 2*4/8
    1
    >>> 2+1-4
    -1

Kendiniz de denemeler yapın, sizi şaşırtacak bir sonuç buldunuz mu?

### Şaşırtıcı bölme

Eğer şaşırtıcı bir sonuç bulamadıysanız, yeteri kadar deneme yapmamışsınızdır. `7/3` ve `1/2` işlemlerini deneyin.

### Tam sayılı bölme

Python farklı tipteki sayıları tanıyabilir. En basit tip tamsayılardır. Python bir tamsayıyı bir başka tamsayı ile böldüğünde kalanı atar ve sonucu tam sayı olarak verir. Bu nedenle 7'yi 3'le böldüğümüzde Python 2 sonucunu verir. Kalanı elde etmek için `%` sembolü kullanılır.

    >>> 7/3
    2
    >>> 7%3
    1
    >>> 1/2
    0
    >>> 1%2
    1

Beklediğimiz gibi bir sonuç elde edebilmek için Python'a gerçek sayılar(floats) kullandığımızı belirtmeliyiz. Bunu sayılardan en az birisinin sonuna nokta ekleyerek sağlayabiliriz.

    >>> 1./2
    0.5
    >>> 1/2.
    0.5
    >>> 1.00000/2
    0.5

### Biraz daha matematik

Python temel matematiksel işlemlerden daha fazlasını bilir. Anlayabilmeniz için örnekler aşağıda.

    >>> 3*3*3*3
    81
    >>> 3**4  # üs alma
    81
    >>> 7.3 % 3  # kalan
    1.2999999999999998

En son sonuç neredeyse umduğumuz gibi 1.3'e eşittir. 1.3 ile 1.2999999999999998 arasındaki fark çok küçüktür, fark olmasının nedeni bilgisayarların ondalıkla sayılarla çalışma şeklinden kaynaklanır. Bunun nedenini biraz daha bilgisayar programlama öğrendikten sonra, ilerideki derslerde açıklayacağım. Pratikte aradaki fark büyük bir sorun yaratmaz. Aşağıdaki komutu kullanarak görüntüyü daha iyi hale getirebiliriz.

    >>> print 7.3 % 3
    1.3

print komutu Python'a hesaplamanın sonucunu bize göstermesini söyler ve bunu akıllıca yapar. Python bazen yaptığı hesaplamaların sonucunu bize göstermez. print komutunu kullanarak bu hesapların sonucunu da görebiliriz.

Meraklı mısınız? Bir Reeborg programında print komutunu kullanırsanız ne olur?...

### Büyük Sayılar

Aşağıdakini deneyin:

    >>>2147483648
    2147483648L

Dikkatle bakın: cevabın sonundaki "L" harfini görüyor musunuz? L, Long integer (uzun tamsayı) anlamına gelir, bu sayılar bilgisayarın hafızasında kolayca gösterilemezler. 32 bitlik çipi olan bir bilgisayar için, benim ve muhtemelen sizin kullandığınız, tüm pozitif sayılar 32 bitin kombinasyonları olarak temsil edilirler ve en büyük tamsayı -1 = 2147483647'dir. Bundan büyük bir tamsayı Pyhon'un (veya diğer bilgisayar programlama dillerinin) matematiksel işlemleri yapabilmesi için gelişmiş teknikler kullanmasını gerektirir. Bu ise bilgisayarın yavaşlamasına neden olur. Python büyük sayıların sonuna L koyarak bunu bize hatırlatır. Eğer gerçekten ihtiyacınız yoksa, çok büyük sayıları kullanmaktan kaçının.

### 1,000 büyük bir sayı değildir

Aşağıdakini deneyin:

    >>> 1,000
    (1, 0)
    >>> 1,000,000,000
    (1, 0, 0, 0)

Ne oluyor? Şimdilik söyleyeceğim, binler hanesini İngilizce konuşulan ülkelerde olduğu gibi virgül ile ayırmamanızdır. Python'da virgülün ne anlama geldiğini daha sonra göreceğiz. Bu arada virgül print komutu ile kullanılırsa ne olduğunu aşağıda görebilirsiniz:

    >>> print 5,4
    5 4
    >>> print 5,              4
    5 4

Print komutunda virgül kullanıldığı zaman iki sayının arasında bir boşluk bırakılır ve verilen komuttaki diğer boşluklar önemsenmez.

### Bilimsel gösterim (Scientific notation)

Bilimsel gösterim hakkında daha önceden bilginiz olabilir:

Bu gösterim çok küçük ve çok büyük sayıların uygun bir şekilde yazılmasını sağlar. Python'da bilimsel gösterimi kullanır, ancak `x 10` yerine E harfini kullanır.

    >>> 2e3
    2000.0
    >>> 2.5E-1
    0.25

Deneyin!

### Diğer sayı tipleri

Python ile karmaşık sayılar, sekiz ve 16 tabanındaki sayılarla da işlem yapabilirsiniz. İleride 16 tabanındaki sayılarla işlem yapacağız.

### Sayıları karşılaştırmak

Python sayıları karşılaştırıp birinin diğerinden küçük (`<`) , büyük (`>`) , eşit (`==`) veya eşit olmadıklarını(`!=`) da bulabilir.

    >>> 1<2
    True
    >>> 3<2
    False
    >>> 1>2
    False
    >>> 3>2
    True
    >>> 2==2
    True
    >>> 3==2
    False
    >>> 2!=2
    False
    >>> 3!=2
    True

Deneyin! Sayıların eşit olduğunu test etmek için iki eşittir işaretinin yan yana kullanıldığına dikkat edin. Eğer tek bir eşittir işareti kullanılırsa Python yakınacaktır. [Başka karşılaştırma operatörleri de vardır: `<>, <=, >=`. Bunları deneyip ne işe yaradıklarını bulabilirsiniz.]

Reeborg'a toplama yapmayı öğretmek - - Python komutlarının yorumlanması.