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.
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.
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?
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.
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
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?...
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.
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 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!
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.
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.]