Python Operatörlerle Matematik İşlemleri
Giriş
Programlamada sayılar neredeyse her yerde karşımıza çıkar.
Ekran boyutlarını, coğrafi konumları, para miktarlarını, oyun puanlarını,
bir videoda geçen süreyi ya da renkleri sayısal kodlar aracılığıyla ifade etmek için kullanılırlar.
Kısacası, sayılar olmadan yazılım dünyası eksik kalır — bu yüzden Python’da matematiksel işlemleri doğru şekilde öğrenmek oldukça önemlidir.
Programlamada matematiksel işlemleri etkili bir şekilde yapabilmek,
sayılarla çok sık çalışacağın için geliştirilmesi gereken önemli bir beceridir.
Elbette matematiğe dair genel bir anlayış seni daha iyi bir programcı yapabilir, ancak bu bir ön şart değildir.
Matematik bilgin azsa bile, onu bir araç olarak görmelisin.
yapmak istediklerini gerçekleştirmene ve mantıksal düşünme becerini geliştirmene yardımcı olur.
Bu bölümde Python’daki en yaygın iki sayısal veri türü ile çalışacağız:
tamsayılar (integers) ve ondalıklı sayılar (floats).
- Tamsayılar (int): Ondalık kısmı olmayan, pozitif, negatif veya sıfır olabilen sayılardır
(örneğin: …, -1, 0, 1, 2 …). - Ondalıklı sayılar (float): Ondalık nokta içeren, yani gerçek sayıları temsil eden değerlerdir
(örneğin: 9.0 veya -2.25).
Bu rehberde, Python’da bu sayısal veri türleriyle kullanılabilen matematiksel operatörleri inceleyeceğiz.
Operatörler
Operatör, bir işlemi temsil eden sembol veya fonksiyondur.
Örneğin matematikteki + (artı) işareti, toplama işlemini ifade eden bir operatördür.
Python’da matematikten aşina olduğumuz bazı operatörleri göreceğiz,
ancak bunlara ek olarak yalnızca programlamaya özgü bazı operatörler de bulunur.
Aşağıda, Python’daki matematikle ilgili operatörlerin kısa bir özet tablosunu bulabilirsin.
Bu derste bu operatörlerin her birini ayrıntılı şekilde inceleyeceğiz.
| İşlem | Ne döndürür |
|---|---|
x + y | x ile y’nin toplamını döndürür. |
x - y | x ile y’nin farkını döndürür. |
-x | x’in işaretini değiştirir. |
+x | x’in kimliğini (değerini olduğu gibi) döndürür. |
x * y | x ile y’nin çarpımını döndürür. |
x / y | x’in y’ye bölümünü (ondalık olarak) döndürür. |
x // y | x’in y’ye tam sayı bölme (floor division) sonucunu döndürür. |
x % y | x’in y’ye bölümünden kalanı döndürür. |
x ** y | x’in y üssünü (x üzeri y) döndürür. |
Ayrıca, aritmetik operatörleri = ile birleştiren bileşik atama operatörlerini de inceleyeceğiz.
Örneğin += ve *= gibi operatörler, hem işlem yapar hem de sonucu aynı değişkene atar.
Toplama ve Çıkarma
Python’da toplama (+) ve çıkarma (-) operatörleri, matematiktekiyle aynı şekilde çalışır.
Hatta Python’u bir hesap makinesi gibi kullanarak doğrudan bu işlemleri gerçekleştirebilirsin.
Şimdi birkaç örnek yapalım ve üzerinden gidelim, önce tamsayılarla (integers) başlayalım:
print(5+3)
Output
8
Tamsayıları doğrudan print ifadesine yazmak yerine, bu sayıları temsil eden değişkenler tanımlayabiliriz:
x = 34
y = 56
print(x+y)
Output
90
Tamsayılar pozitif, negatif ya da sıfır olabilir. Bir negatif sayıyı ve pozitif bir sayıyı toplamak da mümkündür. Şimdi bir örnek yapalım:
a = -34
b = 16
print(a+b)
Output
-18
Toplama işlemi, ondalıklı sayılar (float) ile de aynı şekilde çalışır. Daha iyi anlamanız için bir örnek yapalım:
a = 5.3
b = 6.2
print(a+b)
Output
11.5
İki float sayıyı topladığımız için, Python sonucu ondalık noktalı (float) bir değer olarak döndürür.
Çıkarma işleminin sözdizimi (syntax) da toplamayla aynıdır,
tek fark operatörün + yerine - olmasıdır:
c = 64.43
d = 32
print(c-d)
Output
32.43
Burada bir ondalıklı sayıdan (float) bir tamsayı (int) çıkardık.
Python’da, eğer işlemin içinde en az bir tane float varsa, sonuç da float türünde döner.
Tekli Aritmetik İşlemler
Tekli (unary) matematiksel ifadeler yalnızca bir öğeden oluşur.
Python’da + ve - işaretleri tek başına kullanılarak bir değerin kimliğini korumak (+) ya da işaretini değiştirmek (-) için kullanılabilir.
Çok sık kullanılmasa da, + işareti bir sayının kimliğini (değerini olduğu gibi) temsil eder.
Yani pozitif bir sayıyla kullanıldığında değeri değiştirmez:
i = 135
print(+i)
Output
135
+ işaretini negatif bir değerle kullandığımızda da, Python o sayının kendisiyle aynı değeri döndürür,
yani sonuç yine negatif olur:
j = -456
print(+j)
Output
-456
Negatif bir sayıda + işareti kullanıldığında, sonuç yine aynı negatif değer olur.
Buna karşılık - işareti, bir sayının işaretini tersine çevirir. Yani pozitif bir sayının önüne - koyarsan, negatif bir değer elde edersin:
i = 135
print(-i)
Output
-135
Benzer bir şekilde, - işaretini negatif bir sayıyla kullanırsan,
bu kez işaret değişir ve sonuç pozitif bir değer olur:
j = -456
print(-j)
Output
456
Tekli (unary) aritmetik işlemler, + ve - işaretleriyle yapılır.
+i ifadesi sayının kendisiyle aynı değeri döndürürken,
-i ifadesi sayının zıt işaretlisini döndürür.
Çarpma ve Bölme
Tıpkı toplama ve çıkarma işlemlerinde olduğu gibi,
çarpma ve bölme işlemleri de Python’da matematikteki görünüme oldukça benzer.
- Çarpma işlemi için
*işareti kullanılır. - Bölme işlemi için ise
/işareti kullanılır.
İşte iki ondalıklı sayı (float) ile yapılan bir çarpma örneği:
i = 100.1
j = 10.1
print(i * j)
Output
1011.0099999999999
Python'da bir bölme işlemi yaptığında, sonuç (bölüm) her zaman float (ondalıklı sayı) olarak döner.
ister iki tamsayı kullansan bile:
m = 90
n = 10
print(m / n)
Output
9.0
Bu durum, Python 2 ile Python 3 arasındaki en büyük farklardan biridir.
Python 3’te / operatörü her zaman ondalıklı bir sonuç döndürür.
Örneğin 13 / 2 işleminin sonucu 6.5 olur.
Ancak Python 2’de aynı ifade 6 döndürürdü, çünkü tam sayı bölmesi yapardı.
Python 2’de / operatörü tam sayı bölme (floor division) işlemi yapar.
Yani sonuç, bölüm değerine eşit veya ondan küçük olan en büyük tamsayıyı döndürür.
Örneğin Python 2’de print(80 / 5) ifadesini çalıştırırsan,
çıktı 16 olur ve ondalık kısım gösterilmez.
Python 3’te bu işlemi yapmak için // operatörünü kullanabilirsin.
Örneğin 100 // 40 ifadesi 2 sonucunu döndürür.
Tam sayı bölme, sonucu tam sayı olarak almak istediğin durumlarda oldukça kullanışlıdır.
Mod (Kalan) İşlemi
% operatörü, mod (kalan) operatörüdür.
Bölme işleminden sonra bölüm değil, kalan değeri döndürür.
Bu operatör özellikle bir sayının başka bir sayının katı olup olmadığını kontrol etmek için oldukça kullanışlıdır.
Hadi bir örnekle nasıl çalıştığına bakalım:
m = 85
n = 15
print(m / n)
Output
10
Bu işlemi adım adım açıklayalım:
85sayısı15’e bölündüğünde, bölüm 5, kalan ise 10 olur.%(modulo) operatörü ise bu kalan değeri döndürür.- Yani burada sonuç 10’dur.
Eğer modulo (%) işlemini iki ondalıklı sayı (float) ile yaparsan,
Python kalan değeri de float türünde döndürür:
a = 42.0
b = 6.0
print(a % b)
Output
0.0
42.0 sayısı 6.0’a tam bölündüğü için hiç kalan yoktur.
Bu nedenle işlem sonucu 0.0 olarak döndürülür.
Üs Alma İşlemi
Python’da ** operatörü, soldaki sayıyı sağdaki üssüne yükseltmek için kullanılır.
Yani 5 ** 3 ifadesinde, 5 sayısı 3. kuvvetine çıkarılır.
Matematikte bunu genellikle 5³ şeklinde görürüz —
aslında bu, 5’in kendisiyle 3 kez çarpılması anlamına gelir.
Python’da hem 5 ** 3 hem de 5 * 5 * 5 ifadeleri aynı sonucu, yani 125 değerini döndürür.
Şimdi aynı işlemi değişkenler oluşturup bir örnekle gösterelim:
x = 5.2
y = 7
print(x ** y)
Output
102807.1702528
5.2 sayısını ** operatörüyle 7. kuvvetine çıkardığımızda,
Python işlemi gerçekleştirir ve oldukça büyük bir ondalıklı (float) değer döndürür.
Operatör Önceliği
Python’da (tıpkı matematikte olduğu gibi) işlemler soldan sağa ya da sağdan sola değil,
öncelik sırasına göre değerlendirilir.
Yani bazı operatörler, diğerlerinden önce çalışır.
Daha iyi anlamak için bir örnek yapalım:
a = 10 + 10 * 5
Bu ifadeyi soldan sağa okuyor olsak da, Python önce çarpma işlemini yapacaktır.
Yani print(u) komutunu çalıştırdığımızda, aşağıdaki sonucu elde ederiz:
Output
60
Bunun nedeni, önce 10 * 5 işleminin yapılıp 50 sonucunun elde edilmesi,
daha sonra bu sonuca 10 eklenerek 60 değerinin döndürülmesidir.
Eğer önce 10 + 10 işlemini yapmak, ardından sonucu 5 ile çarpmak istiyorsak,
tıpkı matematikte olduğu gibi parantezleri kullanabiliriz:
a = (10 + 10) * 5
Output
100
İşlem önceliğini hatırlamanın kolay bir yolu,
PEMDAS kısaltmasını kullanmaktır:
| Sıra | Harf | Anlamı |
|---|---|---|
| 1 | P | Parantez (Parentheses) |
| 2 | E | Üs (Exponent) |
| 3 | M | Çarpma (Multiplication) |
| 4 | D | Bölme (Division) |
| 5 | A | Toplama (Addition) |
| 6 | S | Çıkarma (Subtraction) |
Önemli olan, Python’da matematiksel işlemleri yaparken doğru sırayı hatırlamak,
böylece beklediğin sonuçları elde etmektir.
Atama Operatörleri
En sık kullanılan atama operatörü aslında zaten tanıdığınız = işaretidir.
= operatörü, sağdaki değeri soldaki değişkene atar.
Örneğin:
v = 23
Programlama yaparken, bir değişkenin mevcut değeri üzerinde işlem yapıp
sonucu aynı değişkene geri atayan bileşik atama operatörleri sıkça kullanılır.
Bu operatörler, bir aritmetik operatör ile = işaretinin birleşimidir.
Örneğin toplama için + ile = birleştirilir ve ortaya += çıkar.
Hadi bunun nasıl göründüğüne bakalım:
a = 82
a += 3
print(a)
Output
85
İlk olarak a değişkenine 82 değerini atadık.
Ardından += bileşik atama operatörünü kullanarak, sağdaki sayıyı soldaki değişkenin değerine ekledik.
ve sonucu tekrar a değişkenine geri atadık.
Bileşik atama operatörleri, özellikle bir işlemi birden fazla kez tekrarlamak istediğimiz for döngülerinde oldukça sık kullanılır.
Bu sayede her döngü turunda bir değişkenin değerini kolayca güncelleyebiliriz:
for x in range(0, 5):
x *= 2
print(x)
Output
0
2
4
6
8
Bu for döngüsü sayesinde, *= operatörünün yaptığı işlemi otomatikleştirmiş olduk.
Her döngü adımında x değişkeni 2 ile çarpıldı
ve elde edilen sonuç bir sonraki adımda kullanılmak üzere tekrar x değişkenine atanmış oldu.
Python’da, bu derste incelediğimiz her aritmetik operatör için bir bileşik atama operatörü bulunur:
y += 1 # önce topla, sonra sonucu ata
y -= 1 # önce çıkar, sonra sonucu ata
y *= 2 # önce çarp, sonra sonucu ata
y /= 3 # önce böl, sonra sonucu ata
y //= 5 # önce tam sayı bölmesi yap, sonra sonucu ata
y **= 2 # önce üssünü al, sonra sonucu ata
y %= 3 # önce kalanı bul, sonra sonucu ata
Bileşik atama operatörleri, bir değeri adım adım artırman veya azaltman gerektiğinde ya da programındaki bazı işlemleri otomatikleştirmek istediğinde oldukça kullanışlıdır.
Bu operatörler kodu hem daha kısa, hem de okunabilir hale getirir.
Sonuç
Bu derste, tamsayı (int) ve ondalıklı sayı (float) veri türleriyle kullanabileceğin birçok farklı aritmetik operatörü öğrendin.
Artık Python’da toplama, çıkarma, çarpma, bölme, üssünü alma, mod alma gibi
temel matematiksel işlemleri rahatlıkla gerçekleştirebilirsin.
Ayrıca bileşik atama operatörleri sayesinde, değişken değerlerini adım adım artırabilir, azaltabilir veya belirli bir matematiksel ilişkiyi otomatik hale getirebilirsin.
Bu hem kodunun daha kısa hem de daha okunabilir olmasını sağlar.
Ders boyunca gördüğün gibi, Python yalnızca bir programlama dili değil, aynı zamanda güçlü bir matematiksel işlem platformu gibidir.