Python 3'te Operatörlerle Matematik Nasıl Yapılır
Giriş
Sayılar programlamada son derece yaygındır. Ekran boyutu boyutları, coğrafi konumlar, para ve puanlar, bir videoda geçen süre miktarı, oyun avatarlarının pozisyonları ve sayısal kodlar atayarak renkler gibi şeyleri temsil etmek için kullanılırlar.
Programlamada matematiksel işlemleri etkin bir şekilde gerçekleştirebilmek, sayılarla ne kadar sık çalışacağınızı düşündüğünüzde geliştirilmesi gereken önemli bir beceridir. Yüksek düzeyde bir matematik anlayışı kesinlikle sizi daha iyi bir programcı yapabilir, ancak bir ön koşul değildir. Matematik geçmişiniz yoksa, matematiği başarmak istediklerinizi başarmak için bir araç olarak ve mantıksal düşüncenizi geliştirmek için bir yol olarak düşünmeye çalışın.
Python'daki en yaygın kullanılan iki sayısal veri türü ile çalışacağız: integers ve floats:
- Integers (tam sayılar) pozitif, negatif veya 0 olabilen tam sayılardır (…,
-1
,0
,1
, …). - Floats (ondalık sayılar) ondalık nokta içerirler (örneğin,
9.0
veya-2.25
).
Bu öğretici Python'da sayı veri türleriyle kullanılabilecek operatörleri ele alacaktır.
Operatörler
Bir operatör
, bir işlemi belirten bir sembol veya işlevdir. Örneğin, matematikte artı işareti veya + toplama işlemini gösteren bir operatördür.
Python'da, matematikten getirilmiş bazı tanıdık operatörleri göreceğiz, ancak kullanacağımız diğer operatörler bilgisayar programlamasına özgüdür.
İşte Python'daki matematikle ilgili operatörlerin hızlı bir referans tablosu. Bu öğreticide aşağıdaki tüm işlemleri ele alacağız.
İşlem | Ne döndürür |
---|---|
x + y |
x ve y 'nin toplamı |
x - y |
x ve y 'nin farkı |
-x |
x 'in işaretinin değiştirilmiş hali |
+x | x 'in kimliği |
x * y | x ve y'nin çarpımı |
x / y | x ve y'nin bölümü |
x // y | x ve y 'nin kat bölümü |
x % y | x / y 'nin kalanı |
x ** y | x 'in y kuvveti |
Bu öğreticide +=
ve *=
gibi aritmetik operatörü =
operatörü ile birleştiren bileşik atama operatörlerini de ele alacağız.
Toplama ve Çıkarma
Python'da toplama ve çıkarma operatörleri matematikteki gibi benzer şekilde çalışır. Aslında, Python programlama dilini bir hesap makinesi olarak kullanabilirsiniz.
Bilgi: Bu öğreticideki örnek kodları takip etmek için, yerel sisteminizde python3
komutunu çalıştırarak bir Python interaktif kabuğu açın. Daha sonra, örnekleri kopyalayabilir, yapıştırabilir veya >>>
isteminden sonra ekleyerek düzenleyebilirsiniz.
İlk olarak tam sayılarla başlayarak bazı örnekleri inceleyelim:
print(1 + 5)
[Çıktı]
6
Tam sayıları doğrudan print
ifadesine geçirmek yerine, tam sayı değerlerini temsil edecek değişkenler tanımlayabiliriz:
a = 88
b = 103
print(a + b)
Çıktı
191
Tam sayılar hem pozitif hem negatif (ve ayrıca 0) olabileceği için, negatif bir sayı ile pozitif bir sayı toplayabiliriz:
c = -36
d = 25
print(c + d)
Çıktı
-11
Toplama işlemi ondalıklı sayılarla (floats) da benzer şekilde davranacaktır:
e = 5.5
f = 2.5
print(e + f)
Çıktı
8.0
İki ondalıklı sayı topladığımız için, Python ondalıklı bir değer döndürdü.
Çıkarma işlemi için sözdizimi toplama ile aynıdır, sadece operatörü artı işaretinden (+
) eksi işaretine (-
) değiştirirsiniz:
g = 75.67
h = 32
print(g - h)
Çıktı
43.67
Burada, bir tam sayıyı bir ondalıklı sayıdan çıkardık. Python, bir denklemdeki sayılardan en az biri ondalıklı sayı float ise bir ondalıklı sayı döndürecektir.
Unary Aritmetik Operasyonlar
Bir unary (tekli) matematiksel ifade, yalnızca bir bileşen veya elemandan oluşur ve Python'da artı (+
) ve eksi (-
) işaretleri, bir değerle eşleşen tek bir eleman olarak kullanılarak değerin kimliğini (+) döndürebilir veya işaretini değiştirebilir (-).
Sık kullanılmasa da, artı işareti değerin kimliğini belirtir. Artı işaretini pozitif değerlerle kullanabiliriz:
i = 3.3
print(+i)
Çıktı
3.3
Artı işaretini negatif bir değerle kullandığımızda, bu değerin kimliğini döndürür ve bu durumda negatif bir değer olur:
j = -19
print(+j)
Çıktı
-19
Negatif bir değerle artı işareti aynı negatif değeri döndürür.
Eksi işareti ise bir değerin işaretini değiştirir. Yani, pozitif bir değeri geçirdiğimizde, değerin önündeki eksi işareti negatif bir değer döndürecektir:
i = 3.3
print(-i)
Çıktı
-3.3
Alternatif olarak, eksi işareti unary operatörünü negatif bir değerle kullandığımızda, pozitif bir değer döndürülür:
j = -19
print(-j)
**Çıktı**
19
Artı işareti ve eksi işaretiyle belirtilen unary aritmetik işlemleri, +i
durumunda değerin kimliğini, -i
durumunda ise değerin ters işaretini döndürecektir.
Çarpma ve Bölme
Toplama ve çıkarma gibi, çarpma ve bölme işlemleri de matematikte olduğu gibi çok benzer görünecektir. Python'da çarpma için kullanacağımız işaret *
ve bölme için kullanacağımız işaret /
olacaktır.
İşte iki ondalıklı değerle Python'da çarpma işlemi yapmanın bir örneği:
k = 100.1
l = 10.1
print(k * l)
Çıktı
1011.0099999999999
Python 3'te bölme yaptığınızda, bölüm her zaman ondalıklı bir sayı olarak döndürülür, hatta iki tam sayı kullansanız bile:
m = 80
n = 5
print(m / n)
Çıktı
16.0
Bu, Python 2 ve Python 3 arasındaki en büyük değişikliklerden biridir. Python 3'ün yaklaşımı kesirli bir cevap sağlar, böylece 11
'i 2
'ye böldüğünüzde 5.5
bölümü döndürülür. Python 2'de 11 / 2
ifadesi için döndürülen bölüm 5
'tir.
Python 2'nin /
operatörü taban bölmesi floor division yapar, burada x
bölümüne göre döndürülen sayı x
'e eşit veya daha küçük olan en büyük tam sayıdır. Yukarıdaki print(80 / 5)
örneğini Python 2 ile çalıştırırsanız, ondalık olmadan 16
çıktısını alırsınız.
Python 3'te, taban bölmesi yapmak için //
kullanabilirsiniz. 100 // 40
ifadesi 2
değerini döndürecektir. Taban bölmesi, bölümün tam sayı olması gerektiğinde yararlıdır.
Modül
%
operatörü modülüs olarak bilinir ve bölümden sonra bölüm yerine kalanı döndürür. Bu, örneğin aynı sayının katlarını bulmak için kullanışlıdır.
Modülüs operatörünün nasıl çalıştığını görelim:
o = 85
p = 15
print(o % p)
Çıktı
10
Bunu açıklayacak olursak, 85'i 15'e böldüğümüzde bölüm 5 ve kalan 10 olur. Burada döndürülen değer 10
’dur çünkü modülüs operatörü bir bölme ifadesinin kalanını döndürür.
Eğer modülüs ile iki ondalıklı sayı kullanırsak, kalan için bir ondalıklı değer döndürülür:
q = 36.0
r = 6.0
print(q % r)
Çıktı
0.0
36.0’ın 6.0’a bölünmesi durumunda kalan yoktur, bu yüzden döndürülen değer 0.0
olur.
Üs Alma
Python'da **
operatörü, soldaki sayıyı sağdaki üsse yükseltmek için kullanılır. Yani, 5 ** 3
ifadesinde, 5 sayısı 3. kuvvetine yükseltilir. Matematikte bu ifade genellikle 5³ olarak yazılır ve aslında 5’in kendisiyle 3 kez çarpıldığı anlamına gelir. Python'da 5 ** 3
veya 5 * 5 * 5
ifadesini çalıştırarak aynı 125
sonucunu alırız.
Değişkenlerle bir örnek yapalım:
s = 52.25
t = 7
print(s ** t)
Çıktı
1063173305051.292
**
operatörü ile 52.25
ondalıklı sayısını 7
kuvvete yükselterek büyük bir ondalıklı değer elde ediyoruz.
Operatör Önceliği
Python’da, matematikte olduğu gibi, operatörler soldan sağa veya sağdan sola değil, öncelik sırasına göre değerlendirilir.
Aşağıdaki ifadeye bakalım:
u = 10 + 10 * 5
Soldan sağa okuyabiliriz, ancak çarpma işleminin önce yapılacağını unutmayın. Eğer print(u)
komutunu çağırırsak, aşağıdaki değeri alırız:
Çıktı
60
Bunun nedeni, 10 * 5
ifadesinin 50
olarak değerlendirilmesi ve ardından 10
eklenerek nihai sonucun 60
olarak döndürülmesidir.
Bunun yerine 10
'u 10
ile toplamak ve ardından bu toplamı 5
ile çarpmak istiyorsak, matematikte olduğu gibi parantez kullanabiliriz:
u = (10 + 10) * 5
print(u)
Çıktı
100
İşlem sırasını hatırlamak için PEMDAS kısaltmasını kullanabilirsiniz:
Emir Mektup 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)
Başka bir kısaltmaya da aşina olabilirsiniz, örneğin BEDMAS veya BODMAS. Hangi kısaltma sizin için daha uygunsa, Python’da matematik işlemleri yaparken beklediğiniz sonuçların döndürülmesi için bunu aklınızda tutmaya çalışın.
Atama Operatörleri
En yaygın atama operatörü, zaten kullandığınız eşittir işareti =
’dir. =
atama operatörü, sağdaki değeri soldaki bir değişkene atar. Örneğin, v = 23
ifadesi, 23
tam sayısının değerini v
değişkenine atar.
Programlamada, bir değişkenin değeri üzerinde bir işlem yapan ve ardından bu yeni değeri o değişkene atayan bileşik atama operatörlerini kullanmak yaygındır. Bu bileşik operatörler, bir aritmetik operatörü =
operatörüyle birleştirir, bu yüzden toplama için +
ile =
’i birleştirip +=
bileşik operatörünü elde ederiz. Bunun nasıl göründüğünü gözden geçirelim:
w = 5
w += 1
print(w)
Çıktı
6
İlk olarak w
değişkenini 5
değerine ayarladık, ardından +=
bileşik atama operatörünü kullanarak sağdaki sayıyı soldaki değişkenin değerine ekledik ve sonucu w
değişkenine atadık.
Bileşik atama operatörleri genellikle bir süreci birkaç kez tekrar etmek istediğinizde kullanılır, bu durumda for döngüsü ile işlemi otomatikleştirebiliriz:
for x in range(0, 7):
x *= 2
print(x)
Çıktı
0
2
4
6
8
10
12
for döngüsü ile, *=
operatörünün, değişken w
'yi 2
ile çarptığı ve ardından sonraki döngü yinelemesi için sonucu w
'ye atadığı süreci otomatikleştirebildik.
Python’da tartışılan aritmetik operatörlerin her biri için bir bileşik atama operatörü vardır:
y += 1 # ekle ve değeri ata
y -= 1 # çıkar ve değeri ata
y *= 2 # çarp ve değeri ata
y /= 3 # böl ve değeri ata
y // = 5 # taban bölmesi yap ve değeri ata
y **= 2 # üssünü al ve değeri ata
y %= 3 # kalanı al ve değeri ata
Bileşik atama operatörleri, bir şeylerin kademeli olarak artırılması veya azaltılması gerektiğinde ya da programınızda belirli süreçleri otomatikleştirmeniz gerektiğinde kullanışlı olabilir.
Sonuç
Bu eğitim, tamsayı ve ondalıklı sayısal veri türleriyle kullanacağınız birçok operatörü kapsadı. Python'da sayılar hakkında okumaya devam etmek isterseniz, Python 3'te Sayılarla Çalışmak için Yerleşik Fonksiyonlar başlığına devam edebilirsiniz.
Lisa Tagliaferri tarafından yazılan How To Do Math in Python 3 with Operators Program makalesinin düzenlenmiş çevirisi.
Daha Fazla Oku:
- Sonraki Makale:Sayılarla Çalışmak İçin Yerleşik Python 3 Fonksiyonları
- Önceki Makale:Python 3'te Dize Biçimlendiricileri Nasıl Kullanılır