YZ Destekli Kodlama Notları

Python ile Programlama · Ünite 2

Veri Tipleri ve Temel İşlemler

10 soruluk deneme testine geç ↓

1. Değişkenler ve atama

Python'da değişken bir kutu değil, bellekteki bir nesneye yapıştırılan etikettir. Atama işareti «eşittir» demek değil, «sağdaki nesneyi soldaki isme bağla» demektir. Önce sağ taraf hesaplanır, sonra isim sonuca bağlanır; x = x + 1 bu yüzden anlamlıdır.

b = a ile iki etiket aynı nesneye yapışır. b = 301 yazınca b yeni nesneye taşınır, a yerinde kalır.
a = 300
b = a
print(a is b)   # True: aynı nesne
b = 301
print(a is b)   # False: b yeni nesneye bağlandı
print(a)        # 300, a değişmedi
a = [1, 2, 3]
b = [1, 2, 3]
print(a == b)   # True: değerler aynı
print(a is b)   # False: iki ayrı liste

Atama kalıpları

ad, yas, sehir = "Ayşe", 28, "Ankara"   # çoklu atama (tuple unpacking)

x, y = 10, 20
x, y = y, x          # yer değiştirme (swap), geçici değişken yok

a = b = c = 0        # zincirli atama: üçü aynı nesneye

sayac += 1           # artırmalı atama: sayac = sayac + 1

İsimlendirme kuralları

İsimDurumNeden?
toplam_fiyat, _gizli, x1Geçerli, PEP 8'e uygunKüçük harf + alt tire (snake_case)
2sayiGeçersizRakamla başlayamaz
kullanici-adiGeçersizTire, boşluk, @ yasak
for, if, True, NoneGeçersiz35 ayrılmış kelimeden biri
TotalPriceGeçerli ama önerilmezPEP 8 değişkenler için snake_case ister
list, print, sumGeçerli ama tehlikeliYerleşik işlevi gölgeler (shadowing)

Dinamik tipleme: tür bildirmezsin (C'deki int x; gibi), tür nesnede saklanır. Aynı x önce 5, sonra "beş", sonra [1, 2, 3] olabilir. Esnek ama tür hataları çalışma anına kalır; bu yüzden tp, q, d yerine toplam_fiyat, urun_miktari, indirim_orani gibi anlamlı isimler çok önemli.

2. Sayısal tipler ve aritmetik

intfloatcomplex
Ne?Tam sayıOndalıklı (kayan noktalı)Gerçel + sanal kısım
BellekSınırsız (taşma yok)64 bit, IEEE 754İki float (128 bit)
KesinlikTam≈ 15–17 basamakHer bileşen ≈ 15–17
Örnek42, 0xFF, 0b10103.14, 1.5e63 + 4j
// ve %VarVarYok (TypeError)

Yedi aritmetik operatör

OperatörAdı15 ve 4 ileSonuç
+Toplama15 + 419
-Çıkarma15 - 411
*Çarpma15 * 460
/Bölme15 / 43.75 (her zaman float)
//Tam bölme (taban)15 // 43
%Mod (kalan)15 % 43
**Üs alma15 ** 450625
print(7 / 2)     # 3.5
print(7 // 2)    # 3
print(-7 // 2)   # -4  ← taban: -3.5'ten küçük en büyük tam sayı
print(7.0 // 2)  # 3.0 ← float girerse float çıkar

Birim dönüştürme kalıbı: tam bölme büyük birimi, mod kalanı verir.

toplam = 90065
gun    = toplam // 86400       # 1
kalan  = toplam % 86400
saat   = kalan // 3600         # 1
kalan  = kalan % 3600
dakika = kalan // 60           # 1
saniye = kalan % 60            # 5

İşlem önceliği

print(2 + 3 * 4)    # 14
print(2 ** 3 ** 2)  # 512 = 2 ** 9 (sağdan sola)
print(-1 ** 2)      # -1  = -(1 ** 2)
print((-1) ** 2)    # 1

Tip dönüşümleri ve float hassasiyeti

Örtük dönüşüm: farklı tipler işleme girince sonuç daha geniş tipe yükselir: int → float → complex. 2 + 3.0 = 5.0. Açık dönüşüm: int(), float(), complex() ile sen istersin.

int(3.9)      # 3   ← kırpar, yuvarlamaz
int(-3.9)     # -3  ← sıfıra doğru kırpar
int("42")     # 42
float("3.14") # 3.14
round(2.5)    # 2   ← banker yuvarlaması: en yakın çifte
round(3.5)    # 4
import math
print(0.1 + 0.2 == 0.3)               # False
print(math.isclose(0.1 + 0.2, 0.3))   # True

from decimal import Decimal, ROUND_HALF_UP
fiyat = Decimal('149.99')               # metin olarak ver!
toplam = (fiyat * Decimal('1.20')).quantize(Decimal('0.01'), rounding=ROUND_HALF_UP)
print(toplam)                           # 179.99
math öğesiNe yapar?Örnek
math.pi, math.eπ ve Euler sayısı3.14159…, 2.71828…
math.sqrt(x)Karekök (float)sqrt(16) → 4.0
math.floor(x)x'ten küçük-eşit en büyük tam sayıfloor(-2.1) → -3
math.ceil(x)x'ten büyük-eşit en küçük tam sayıceil(-2.1) → -2
math.isclose(a, b)Yaklaşık eşitlikFloat karşılaştırma

3. Karakter dizileri (string)

String: tırnak içindeki, Unicode karakterlerden oluşan sıralı ve değiştirilemez (immutable) dizi. Tek ('…'), çift ("…") ya da çok satır için üçlü tırnak kullanılır. İçinde ' geçiyorsa "…" seç. Ham dize r"C:\Users\dosya" ters eğik çizgiyi kaçış karakteri saymaz; Windows yolları için ideal.

KaçışAnlamı
\nYeni satır
\tSekme (tab)
\\Ters eğik çizginin kendisi
\' ve \"Tırnak işareti

İndeksleme ve dilimleme

Pozitif indeks baştan 0'la, negatif indeks sondan −1'le başlar.

Dilim söz dizimi metin[başlangıç:bitiş:adım]. Başlangıç dahil, bitiş hariç.

s = "Python"
s[0]     # 'P'
s[-1]    # 'n'
s[1:4]   # 'yth'  (1, 2, 3)
s[:3]    # 'Pyt'
s[3:]    # 'hon'
s[::2]   # 'Pto'  (ikişer atla)
s[::-1]  # 'nohtyP' (ters çevir)
s[0:100] # 'Python' (taşma hata vermez)

Sık kullanılan metotlar

MetotÖrnekSonuç
upper / lower"py".upper()"PY"
strip / lstrip / rstrip" hi ".strip()"hi"
replace"ab".replace("a", "c")"cb"
split"a,b".split(",")["a", "b"]
join"-".join(["a", "b"])"a-b"
find"abc".find("z")-1 (bulamazsa)
index"abc".index("z")ValueError (bulamazsa)
startswith / endswith"x.pdf".endswith(".pdf")True
count"banana".count("a")3
capitalize"py".capitalize()"Py"
casefold"Straße".casefold()Gelişmiş küçük harf

Biçimlendirme: %, format(), f-string

YöntemÖrnekSürümHız / okunurluk
% operatörü"Merhaba %s" % ad2.xOrta / düşük
str.format()"Merhaba {}".format(ad)2.6+Yavaş / orta
f-stringf"Merhaba {ad}"3.6+ (PEP 498)En hızlı / yüksek

4. Mantıksal ifadeler (bool)

bool yalnızca True ve False alır ve int'in alt sınıfıdır: True 1, False 0 gibi davranır. True + True = 2, sum([True, True, False]) = 2. Python'a 2.3 sürümünde PEP 285 ile eklendi.

not, and, or ve kısa devre

OperatörNe döndürür?Kısa devre
not xHer zaman True / FalseYok (tek işlenen)
x and yx falsy ise x, değilse yx falsy ise y'ye hiç bakılmaz
x or yx truthy ise x, değilse yx truthy ise y'ye hiç bakılmaz

Öncelik: not → and → or. and ile or her zaman bool döndürmez, son baktığı değeri döndürür. Bu yüzden kullanici_adi = girdi or "Misafir" girdi boşsa varsayılan değeri atar.

0 or [] or None or "merhaba"   # 'merhaba' (ilk truthy)
"" or "armut"                   # 'armut'
False and print("D")           # False, print hiç çalışmaz
not "python"                   # False

Truthy / falsy

Her nesnenin bir doğruluk değeri var. Falsy olanlar az: None, False, 0, 0.0, 0j, boş string "", boş [] () {} set(), range(0). Geri kalan her şey truthy.

ÇağrıSonuçNot
int(True)1bool → int
int("merhaba")ValueErrorSayısal olmayan metin
float(True)1.0
bool(42)TrueSıfır dışı her sayı truthy
bool("")FalseBoş string
str(True)'True'bool → str

5. Girdi ve çıktı

Program üç evreden oluşur: girdi → işlem → çıktı. stdin (standart girdi) genelde klavye, stdout (standart çıktı) terminaldir; input() ve print() bunları bizim yerimize yönetir.

print() fonksiyonu değerlerin arasına sep, sonuna end koyar. Varsayılanlar tek boşluk ve yeni satır.

print("Elma", "Armut", "Muz", sep=", ")  # Elma, Armut, Muz
print("2025", "04", "22", sep="-")        # 2025-04-22
print("Yükleniyor", end=" ")
print("tamamlandı.")                       # Yükleniyor tamamlandı.
print("C:\\Users")                         # C:\Users

f-string biçim belirteçleri

Süslü parantezde ifadeden sonra iki nokta koyup biçim belirteci yazılır. Hizalama: < sol, > sağ, ^ orta.

BelirteçÖrnekÇıktı
:.2ff"{3.14159:.2f}"3.14
:>10f"{'Py':>10}"8 boşluk + Py
:^20f"{'Başlık':^20}"Ortalanmış
:,f"{1234567:,}"1,234,567
:,.2ff"{1234.5678:,.2f}"1,234.57
:.1%f"{0.87:.1%}"87.0%
:10.3ff"{3.14159:10.3f}"Genişlik 10, 3 basamak
kilo = float(input("Kilo (kg): "))
boy  = float(input("Boy (m): "))
vki  = kilo / (boy ** 2)
print(f"VKİ: {vki:.2f}")
print("-" * 25)

Kendini test et!

Cevabı görmek için soruya dokun.

  1. 1.x, y = 3, 8 ve ardından x, y = y, x çalışınca x ve y ne olur?

    ✓ x = 8, y = 3. Sağ taraf önce hesaplanır, sonra isimlere dağıtılır.

  2. 2.17 // 5, 17 % 5, -17 // 5 ve 17 / 5 kaçtır?

    ✓ 3, 2, -4 (taban) ve 3.4.

  3. 3.9735 saniye kaç saat, kaç dakika, kaç saniyedir?

    ✓ 9735 // 3600 = 2 saat, kalan 2535; 2535 // 60 = 42 dakika, 2535 % 60 = 15 saniye.

  4. 4.s = "yapayzeka" için s[2:5] ve s[-4:] nedir?

    ✓ 'pay' ve 'zeka'.

  5. 5."" or "Misafir" ve "Ali" or "Misafir" ne döndürür?

    ✓ 'Misafir' (boş string falsy) ve 'Ali' (ilk truthy değer).

  6. 6.yas = input("Yaş: ") satırından sonra yas + 5 neden hata verir?

    ✓ input() string döndürür; string ile int toplanamaz (TypeError). int(input(...)) ile dönüştürmek gerekir.

Deneme testi

Sınavda çıkabilecek türden 10 soru. Bir şık seç; doğru cevap ve açıklaması hemen çıkar.

  1. 1.Aşağıdaki değişken adlarından hangisi Python'da geçersizdir?

  2. 2.a = [1, 2] ve b = [1, 2] tanımlanırsa a == b ve a is b ifadeleri sırasıyla ne döndürür?

  3. 3.print(-7 // 2) satırının çıktısı nedir?

  4. 4.print(2 ** 3 ** 2) satırının çıktısı nedir?

  5. 5.int(-3.9) ve round(2.5) ifadelerinin sonuçları sırasıyla nedir?

  6. 6.s = "Python" için s[1:4] ifadesinin sonucu nedir?

  7. 7.Aranan alt dize bulunamadığında -1 döndüren string metodu hangisidir?

  8. 8.bool("False") ifadesinin sonucu nedir?

  9. 9.kullanici = "" or "Misafir" satırından sonra kullanici değişkeninin değeri nedir?

  10. 10.print("A", "B", "C", sep="-", end="!") satırının çıktısı nedir?

Bu not ders kitabının yerine geçmez; konu kendi cümlelerimizle, yapay zekâ desteğiyle özetlendi.