🐍 class-666

📖 Ders 2 — Operatörler

Aritmetik, kalan, karşılaştırma ve mantıksal operatörler. Bitince 🟢 Kolay alıştırmalardan başla.

1. Aritmetik operatörler — 7 kardeş

Operatörler Python'un hesap makinesi tuşlarıdır. Dördünü zaten tanıyorsun, üçü yeni (//, %, **) — ve asıl güç o üçünde:

İşlemÖrnekSonuçNot
+ toplama15 + 722
- çıkarma15 - 78
* çarpma15 * 7105
/ bölme15 / 72.142857…sonuç hep float, 8/2 bile 4.0
// tam bölme15 // 72bölümün tam kısmı
% kalan (mod)15 % 71bölmeden ARTAN
** üs alma2 ** 1010242'yi 10 kere kendisiyle çarp
print(15 / 3)     # 5.0  — tam bölünse bile float!
print(2 ** 3)     # 8    — 2 × 2 × 2
print(5 ** 2)     # 25   — 5'in karesi
Bilgisayar dünyası 2'nin üsleri üzerine kuruludur: 1 KB = 2 ** 10 = 1024 bayt. ** ile sık karşılaşacaksın.

2. % kafa karıştırıyorsa: pasta paylaştırma

% bölme yapmaz — paylaştırmadan artakalanı verir. 13 dilim pastayı 5 kişiye dağıt: herkese 2'şer dilim çıkar (5×2=10 dilim dağıttın), elinde 3 dilim artar. İşte o artan dilimler %'nin cevabıdır:

print(13 // 5)   # 2    (kişi başı dilim — bölüm)
print(13 % 5)    # 3    (tabakta artan — kalan)
print(13 / 5)    # 2.6  (normal bölme — bambaşka şey!)
print(8 % 4)     # 0    (tam paylaşıldı, artan yok)

% asla ondalık üretmez; "kaç tane tam sığar"dan artakalanı söyler. Döngüsel (başa saran) şeylerde de altındır: hafta 7 günde bir başa sarar → 100 % 7 = 2, yani 100 gün sonra haftanın günü 2 ileri kaymıştır.

En ünlü kullanımı: çift/tek ayrımı. Çift sayılar 2'ye tam bölünür → x % 2 çiftte 0, tekte 1 verir. 0 falsy olduğu için if x % 2 tekleri seçer.
Klasik hata: %'yi bölme sanmak. 1 % 2'yi 0.5 sanan çok olur — oysa cevap 1: 1'in içinde 2 hiç yok (0 tane), 1'in tamamı artar. Ondalık görmek istiyorsan aradığın operatör /.

3. Aritmetik atama kısayolları

"Kutudakini al, üstüne işle, kutuya geri koy" o kadar sık yapılır ki kısayolu var. Kumbara gibi düşün: += para atmak, -= para çekmek:

skor = 100
skor += 50     # skor = skor + 50  →  150
skor *= 2      # skor = skor * 2   →  300
skor -= 6      # skor = skor - 6   →  294
skor //= 7     # skor = skor // 7  →  42
print(skor)    # 42

Tüm aile: += -= *= /= %= //= **=. Zincirlenince değişken adım adım değişir — kafanda her satırdan sonra değeri takip et, gerekirse aralara print koyup izle.

4. İşlem önceliği: kim önce hesaplanır?

Python matematik dersindeki sırayı izler — "önce çarpma bölme, sonra toplama çıkarma". Tam sıra: önce **, sonra * / // %, en son + -. Parantez ise her şeyi ezer:

print(2 + 3 * 4)     # 14  — önce 3*4, sonra +2 (20 DEĞİL!)
print((2 + 3) * 4)   # 20  — parantez önce
print(2 * 3 ** 2)    # 18  — önce 3**2=9, sonra 2*9
print(10 - 4 - 3)    # 3   — aynı öncelikte soldan sağa
Emin değilsen parantez koy — fazladan parantez hata değildir, okunaklılıktır. (fiyat * adet) - indirim niyetini herkese anlatır.

5. Karşılaştırma operatörleri: soru sorup bool alırsın

Bir karşılaştırma sorudur; Python cevabı True/False değeri olarak üretir — aynen 2+3'ün 5 üretmesi gibi. Üretilen cevap değişkene bile atanır:

print(15 > 7)      # True
print(15 <= 15)    # True   (küçük VEYA eşit)
print(7 == 7)      # True   (eşit mi?)
print(7 != 7)      # False  (eşit DEĞİL mi? — üstü çizili ≠ gibi düşün)
cevap = 10 > 3     # cevap kutusunda artık True var
print(cevap)       # True
Klasik hata: tek = ATAMADIR, çift == SORUDUR. x = 5 "x artık 5 olsun" der; x == 5 "x, 5 mi?" diye sorar. Karıştırırsan ya hata alırsın ya da — daha kötüsü — farkında olmadan değeri ezersin.
İki tuzak daha: harfe duyarlı: "a" == "A" → False. Sayıda tür değil değer: 10 == 10.0 → True.

6. Mantıksal operatörler: and, or, not

Bool'ları birleştirir — kural günlük dil gibidir. Sinema gişesini düşün: "18 yaşından büyük VE bileti olan girer" — tek şart yetmez:

OperatörNe zaman True?Günlük örnek
andikisi de True ise"18+ VE bileti varsa girer"
oren az biri True ise"üye VEYA kuponluysa indirim"
nottersler"yağmur YOKsa yürüyüş"
yas, bilet_var = 20, True
print(yas >= 18 and bilet_var)   # True  (ikisi de tamam)
print(yas >= 18 and False)       # False (bilet yoksa yaş yetmez)
print(False or True)             # True  (biri var ya, yeter)
print(not True)                  # False (tersledi)
and'de False yutandır (bir False her şeyi False yapar); or'da True yutandır. not ise sadece hemen önündekini tersler — kapsamı büyütmek istersen parantez: not (a and b).

Python'a özel bir şıklık daha — zincirli karşılaştırma: 1 < x < 10 = "x, 1 ile 10 arasında mı?" (1 < x and x < 10 ile aynı).

7. Hepsi bir arada

Gerçek bir kasa hesabı — aritmetik, tam bölme, koşul ve f-string aynı sahnede:

fiyat, adet, kupon = 250, 3, True
toplam = fiyat * adet                                  # 750
odenecek = toplam - toplam // 10 if kupon else toplam  # 750 - 75 = 675
print(f"Ödenecek: {odenecek} TL")                      # Ödenecek: 675 TL

8. Sık Yapılan Hatalar

HataYanlış düşünceGerçek
= ile == karıştırmakx = 5 "eşit mi?" sorar= atar, == sorar. Soru soruyorsan çift yaz.
% ile / karıştırmak1 % 2 = 0.51 % 2 = 1 (kalan!), 1 / 2 = 0.5 (bölme)
İşlem önceliğini unutmak2 + 3 * 4 = 20Önce çarpma: 2 + 12 = 14. Soldan sağa okumak yetmez.
/ sonucuna şaşırmak8 / 2 = 44.0 — bölme HEP float verir. Tam sayı istiyorsan //.
//'yi yuvarlama sanmak17 // 5 = 3.4 ≈ 3'e yuvarlarYuvarlamaz, küsuratı atar: 19 // 5 de 3'tür (3.8'e rağmen 4 değil).
Sessiz hata: if x = 5: yazarsan Python neyse ki hata verip durdurur. Ama sonuc = x == 5 yazacakken sonuc = x yazarsan hata YOK — program yanlış değerle sessizce devam eder. Karşılaştırma yazdığında iki eşittiri gözünle say.

9. Kendini Sına

Önce kendi cevabını ver, sonra aç:

1) print(10 % 3, 10 // 3, 10 / 3) ne yazar? — cevabı gör

1 3 3.3333333333333335 — kalan 1 (3×3=9, artan 1), tam bölüm 3, normal bölme ise float. Üçü üç ayrı soruya cevap verir.

2) print(2 + 2 ** 3 * 2) kaç yazar? — cevabı gör

18 — sıra: önce üs 2**3=8, sonra çarpma 8*2=16, en son toplama 2+16=18. Soldan sağa okuyup 128 bulan da olur, 64 bulan da — öncelik tablosu kazanır.

3) print(not (5 > 3 and 2 > 4)) ne yazar? — cevabı gör

True — içeriden dışarı: 5 > 3 → True, 2 > 4 → False, True and False → False (and'de bir False yeter), not False → True.