
BÖLÜM 2 — Değişkenlerin Doğuşu: Bilgisayar Neyi “Hatırlar”?
Bu bölümün temel sorusu: 1.derste her şeyi doğrudan print() içine yazdık. Peki ya bir bilgiyi bir kere yazıp sonra defalarca kullanmak istersek? Bilgisayar bir şeyi nasıl “hatırlar”?🎯 Bölümün Öğrenme Hedefleri
Bu bölümün sonunda öğrenci;- bir programın neden "hafızaya" ihtiyaç duyduğunu,
- değişkenin aslında ne olduğunu (bir kutu benzetmesinin ötesinde),
- "=" işaretinin matematikteki "eşittir" ile neden aynı şey olmadığını,
- Python'un veri tiplerini (“int”, “float”, “str”, “bool”) neden ayrı ayrı takip ettiğini,
- tip dönüşümünün (type casting) hangi problemi çözdüğünü,
- değişken isimlendirme kurallarının neden var olduğunu
📌 Geçen Derste Neler Öğrendik?
İlk derste Python'un ne olduğunu, `print()` ile ekrana veri yazdırmayı, string ile sayı arasındaki farkı ve yorum satırlarını öğrendik. Ama fark ettiysen, her şeyi “doğrudan” yazdık:Kaynak kodu
Kod:
print("Ahmet")
print(25)Çıktı
Ahmet
25
2.1. Her Şey Bir Sorunla Başladı
Diyelim ki bir programda kullanıcının adını 10 farklı yerde kullanman gerekiyor; bir karşılama mesajında, bir raporda, bir dosya isminde. Her seferinde “Ahmet” yazmak hem yorucu hem de tehlikelidir: kullanıcı adını değiştirmek istediğinde, 10 yerin hepsini tek tek bulup değiştirmen gerekir.Burada ihtiyaç duyduğumuz şey bellidir: bir bilgiyi bir kere söyleyip bir isme bağlamak, sonra o ismi istediğimiz kadar kullanmak. İşte tam olarak değişkenler bu ihtiyaçtan doğar.
2.2. Büyük Fikir: İsimlendirilmiş Kutular
Kod:
isim = “Ahmet”Bunu kodu şöyle düşünebiliriz: Bilgisayarın hafızasında (RAM'de) bir yer ayrılıyor, oraya “Ahmet” değeri konuyor ve bu yere “isim” etiketi yapıştırılıyor. Artık ne zaman “isim” yazarsan, Python o etikete gidip içindeki değeri getirir:
Kaynak kodu
Kod:
isim = “Ahmet”
print(isim) # Ahmet
print(isim) # Ahmet (tekrar kullanabiliriz)Çıktı
Ahmet
Ahmet

2.3. “=” İşareti Matematikteki “Eşittir” Değildir!
Bu, yeni başlayanların neredeyse tamamının takıldığı bir noktadır. Matematikte “x = 5” dediğinde, bu "x, 5'e eşittir" anlamına gelir yani denklemin iki taraf birbirinin aynısıdır.Python'da ise “=” işareti atama (assignment) anlamına gelir yani “sağdaki değeri al, soldaki isme bağla.” Bu yüzden şu kod matematikte anlamsız olurdu ama Python'da tamamen normaldir:
Kaynak kodu
Kod:
sayi = 5
sayi = sayi + 1 #sayi değişkeninin içindeki değeri al ve 1 arttır
print(sayi) # ekrana yeni oluşan sayi değerini yaz 6Çıktı
6
BİLGİ
🤔 Neden Böyle Tasarlanmış: Çünkü programlama, matematiksel eşitlik ifade etmekten çok, bir süreç boyunca değişen durumları takip etmekle ilgilidir. Bir oyun skorunu, bir sayaç değerini, bir kullanıcı girdisini sürekli güncellemen gerekir “=” işareti bunun için tasarlanmıştır.
2.4. Kutu Benzetmesinin Sınırı: Aslında Etiket Yapıştırıyoruz
Az önce "kutu" dedik ama daha doğru bir benzetme şudur, değişken bir kutu değil, bir değere yapıştırdığın etikettir . Neden bu fark önemli?Kaynak kodu
Kod:
a = [1, 2, 3]
b = a
b.append(4)
print(a) # [1, 2, 3, 4] -- a da değişti!Çıktı
[1, 2, 3, 4]
2.5. Peki Python Bir Değerin “Ne Tür” Olduğunu Nasıl Bilir?
Değişkenlere değer atarken fark ettiysen, hiçbir zaman “bu bir sayı olacak” ya da “bu bir yazı olacak” demedik. Python bunu otomatik olarak anlar:Kod:
isim = “Ahmet” # Python bunu bir string (str) olarak tanır
yas = 25 # Python bunu bir tam sayı (int) olarak tanır
boy = 1.78 # Python bunu ondalıklı sayı (float) olarak tanır
ogrenci_mi = True # Python bunu mantıksal değer (bool) olarak tanırBunu nasıl anladığını öğrenmek için “type()” fonksiyonunu kullanabiliriz:
Kaynak kodu
Kod:
print(type(isim)) # <class 'str'>
print(type(yas)) # <class 'int'>
print(type(boy)) # <class 'float'>
print(type(ogrenci_mi)) # <class 'bool'>Çıktı
<class 'str'>
<class 'int'>
<class 'float'>
<class 'bool'>
2.6. Neden Python Veri Tiplerini Bu Kadar Önemsiyor?
Burada önemli bir soru soralım: Python neden 25 ile “25”'i farklı şeyler olarak görüyor? İkisi de görsel olarak neredeyse aynı görünüyor. Şu kodu bir deneyelim:Kaynak kodu
Kod:
print(25 + 25) # 50 -- toplama işlemi
print(“25” + “25”) # 2525 -- birleştirme (concatenation) işlemiÇıktı
50
2525
AKLINDA OLSUN
💡 Büyük Fikir: “+” işareti, üzerinde çalıştığı veri tipine göre farklı bir anlam kazanır. Sayılar üzerinde “+” toplama yapar. String'ler üzerinde “+” birleştirme yapar (yan yana ekler). Bu yüzden Python'un her değerin tipini kesin olarak bilmesi gerekir aksi hâlde “+” işaretinin ne yapması gerektiğine karar veremez.
Bu, tıpkı bir tercümanın “bu kelime fiil mi isim mi” bilmeden cümleyi doğru çeviremeyeceği gibidir. Tip bilgisi, Python'un işlemleri doğru yorumlaması için zorunludur.
2.7. Tip Uyumsuzluğu Sorunu ve Tip Dönüşümü (Type Casting)
Peki şu kodu çalıştırırsak ne olur?Kod:
yas = 25
mesaj = “Yaşım: ” + yasBu kod hata verir! Çünkü Python, bir string (“Yaşım: ”) ile bir sayıyı 25 doğrudan birleştiremez hangi işlemi yapacağını bilemez (toplama mı, birleştirme mi?). Burada devreye tip dönüşümü girer:
Kaynak kod
Kod:
yas = 25
mesaj = "Yaşım: " + str(yas) # sayıyı string'e çeviriyoruz
print(mesaj) # Yaşım: 25Çıktı
Yaşım: 25
BİLGİ
“str()”, “int()”, “float()” fonksiyonları, bir değeri bir tipten diğerine çevirmemizi sağlar:
Kaynak kod
Kod:
print(str(25)) # “25” (sayıyı yazıya çevirir)
print(int(“25”)) # 25 (yazıyı sayıya çevirir)
print(float(“3.14”)) # 3.14 (yazıyı ondalıklı sayıya çevirir)Çıktı
25
25
3.14
DİKKAT
⚠️ Dikkat: Her string sayıya çevrilemez, örneğin stringler:
Kod:
print(int("Ahmet")) # HATA! "Ahmet" bir sayı değil2.8. Değişken İsimlendirme Kuralları Neden Var?
Python'da her değişken ismini istediğin gibi seçemezsin. Bazı kurallar vardır:Kod:
isim = “Ahmet” # ✅ geçerli
_gizli = “veri” # ✅ geçerli (alt çizgiyle başlayabilir)
2isim = “Ahmet” # ❌ HATA! Sayıyla başlayamaz
kullanici-adi = “Ahmet” # ❌ HATA! Tire kullanılamazDERSTE
🤔 Neden Bu Kurallar Var? Python, kodu okurken “2isim” gibi bir ifade gördüğünde bunun bir sayı mı (“2”) yoksa bir isim mi (“isim”) olduğuna karar veremez ve belirsizlik oluşur. Kurallar, bu belirsizliği daha en baştan ortadan kaldırmak için vardır.
Ayrıca Python'da yaygın bir isimlendirme geleneği (zorunlu değil ama yaygın) şudur: birden fazla kelimeden oluşan değişkenlerde ya alt çizgi (`kullanici_adi`) ya da "camelCase" (`kullaniciAdi`) kullanılır. Python dünyasında genelde alt çizgi tercih edilir.
⚠️ Kavram Yanılgıları
❌ Yanlış düşünce: “ “=” işareti matematikteki eşittir gibi çalışır, iki tarafın aynı olduğunu söyler.”✅ Daha doğru düşünce: “=” bir atama işlemidir, sağdaki değeri hesaplar ve soldaki isme bağlar. Eşitlik kontrolü için Python'da ayrı bir işaret vardır (“==”), bunu ilerleyen derslerde detaylı göreceğiz.
❌ Yanlış düşünce: “ “25” ile 25 aynı şeydir, ikisi de sayı 25'i temsil eder.”
✅ Daha doğru düşünce: 25 bir tam sayıdır (int), “25” ise bir yazıdır (string) sadece görsel olarak aynı karakterlerden oluşur. Python bu ikisi üzerinde tamamen farklı işlemler yapar.
👨🏫 Öğretmen Notu
Değişkenler anlatılırken doğrudan “değişken bir kutudur” benzetmesiyle başlanıp orada bırakılması, ileride (özellikle listeler ve fonksiyonlarda) kavram yanılgılarına yol açar. Önerilen sıra:- Önce “bir bilgiyi tekrar tekrar kullanma ihtiyacı” problemi ortaya konur.
- Kutu/etiket benzetmesiyle temel fikir verilir.
- “=” işaretinin matematikten farkı özellikle vurgulanır bu, öğrencilerin en çok karıştırdığı noktadır.
- Veri tipleri, “neden önemli” sorusuyla birlikte (yani “+” işaretinin davranışı üzerinden) somutlaştırılır.
- Etiket benzetmesinin sınırları (aynı veriye iki isim bağlanması) şimdilik yüzeysel geçilir, ileride derinleştirilir.
✍️ Uygulama Soruları
Soru 1: “sehir” adında bir değişken oluştur ve içine yaşadığın şehri ata, sonra ekrana yazdır.Soru 2: Aşağıdaki kodun çıktısı ne olur?
Kod:
sayi = 10
sayi = sayi + 5
print(sayi)Soru 3: Aşağıdaki kod neden hata verir, nasıl düzeltilir?
Kod:
yas = 20
print("Yaşım: " + yas)Soru 4: “type()” fonksiyonunu kullanarak “3.14” değerinin hangi veri tipinde olduğunu bul.
Soru 5:Aşağıdaki değişken isimlerinden hangileri geçerlidir, hangileri değildir? Neden?
Kod:
“ad_soyad”, “1kisi”, “_ozel”, “kullanici-no”📌 Şu Ana Kadar Neler Öğrendik?
- Değişkenlerin bir bilgiyi bir isme bağlayarak tekrar tekrar kullanmamızı sağladığı
- “=” işaretinin matematikteki eşittirden farklı olarak bir atama olduğu
- Python'un her değeri otomatik olarak bir tipe (“int”, “float”, “str”, “bool”) atadığı
- “type()” fonksiyonuyla bir değerin tipinin nasıl kontrol edildiği
- Veri tiplerinin neden önemli olduğu (“+” işaretinin farklı davranması)
- Tip dönüşümünün (“str()”, “int()”, “float()”) hangi problemi çözdüğü
- Değişken isimlendirme kurallarının neden var olduğu
📌 Bu Bölümden Çıkarılacak En Önemli Sonuç
Değişkenler bir formülle değil, bir tekrar sorunuyla başladı: aynı bilgiyi defalarca yazmak yerine, ona bir isim verip o ismi kullanma ihtiyacı. Python bu ismi bir değere "atar" (eşitlemez) ve her değerin ne tür olduğunu otomatik takip eder — çünkü bir işlemin (`+` gibi) ne yapması gerektiğine karar vermek için önce üzerinde çalıştığı verinin türünü bilmesi gerekir.📝 Bölümün Kısa Özeti
Değişkenler, bir değeri bir isme bağlayıp tekrar tekrar kullanmamızı sağlar. “=” işareti matematikteki eşitlik değil, bir atama işlemidir. Python her değerin tipini (“int”, “float”, “str”, “bool”) otomatik olarak belirler ve bu tip bilgisi, işlemlerin (“+” gibi) nasıl davranacağını belirler. Farklı tipteki değerleri bir arada kullanmak istediğimizde “str()”, “int()”, “float()” gibi fonksiyonlarla tip dönüşümü yaparız. Değişken isimlendirmenin de sayıyla başlamama gibi belirli kuralları vardır.✍️ Soruların Cevapları
Cevap 1: Kod:
sehir = "İstanbul"
print(sehir)Cevap 2: “15”. Çünkü önce sağ taraf hesaplanır (10 + 5 = 15), sonra bu değer “sayi” ismine yeniden bağlanır.
Cevap 3: “yas” bir tam sayı (int), “Yaşım: ” ise bir string'dir; Python bu ikisini doğrudan “+” ile birleştiremez. Düzeltme:
Kod:
yas = 20
print("Yaşım: " + str(yas))Cevap 4:
Kaynak kodu
Kod:
print(type(3.14))Çıktı
<class 'float'>
Cevap 5:
- “ad_soyad” ✅ geçerli
- “1kisi” ❌ geçersiz (sayıyla başlıyor)
- “_ozel” ✅ geçerli (alt çizgiyle başlayabilir)
- “kullanici-no” ❌ geçersiz (tire kullanılamaz)
Bilgisayar Neyi "Hatırlar"? (Python 2.Ders)
