Yazar: Hatice Özbolat

  • Veri Analisti Olmak İçin Yol Haritası: Sıfırdan İlk İşe

    Veri Analisti Olmak İçin Yol Haritası: Sıfırdan İlk İşe

    Veri analisti olmak istiyorsun ama nereden başlayacağını bilmiyorsan, bu yazı senin için. İnternette sayısız kurs, araç ve tavsiye var; hepsini aynı anda öğrenmeye çalışmak en sık yapılan hata. Burada sana sıralı, beş aşamalı bir yol ve kendi öğrenme deneyimimden çıkardığım üç ilke veriyorum.

    Veri analisti ne yapar?

    Veri analisti, bir kurumun elindeki veriyi soruya cevap verecek hale getirir. İş genelde şöyle akar:

    1. Soru gelir. “Geçen ay satışlar neden düştü?” ya da “Hangi müşteriler bizi bırakıyor?”
    2. Veri toplanır. Çoğu zaman bir veritabanından SQL ile çekilir.
    3. Veri temizlenir. Eksik değerler, tekrar eden satırlar, yanlış biçimlenmiş tarihler düzeltilir. İşin en çok zaman alan kısmı genellikle budur.
    4. Analiz yapılır. Gruplama, karşılaştırma, basit istatistik.
    5. Sonuç anlatılır. Bir grafik, bir pano ya da kısa bir sunum. Kimse 50 satırlık tablo okumak istemez; ne demek istediğini net söylemen gerekir.

    Yani bu iş yalnızca kod yazmak değil. Doğru soruyu anlamak ve sonucu anlaşılır anlatmak da en az kod kadar önemli.

    Başlamadan önce: üç öğrenme ilkesi

    Kendi öğrenme yolculuğumda en çok işe yarayan üç şeyi söyleyeyim. Aşağıdaki yol haritasını bu üç ilkeyle yürürsen çok daha hızlı ilerlersin.

    1. Pratik yap, izlemekle yetinme

    Bir videoyu izleyip “anladım” demek kolay. Ama aynı kodu boş bir sayfaya kendin yazamadığın sürece öğrenmiş sayılmazsın. Her yeni konudan sonra videoyu kapat ve aynı işi kendin yap. Takıldığın yer, asıl öğreneceğin yerdir.

    2. Sınava hazırlanır gibi hazırlan

    Veri analizini “bir gün öğrenirim” diye değil, bir sınava çalışır gibi çalış. Yani:

    • Konuları listele, her birine bir tarih ver.
    • Her hafta kendini sına: SQL soruları çöz, bir veri setini sıfırdan analiz et.
    • Yanlış yaptığın soruları not et ve bir hafta sonra tekrar çöz.

    Sınav disiplini, belirsiz bir hedefi takip edilebilir bir plana çevirir.

    3. “Bunu günlük hayatta nerede görüyorum?” diye sor

    Yeni bir kavram öğrendiğinde zihninde bir bağlantı kur. GROUP BY öğrendiğinde, bankanın harcamalarını kategoriye göre özetlediği ekranı düşün. Ortalama ile medyanın farkını öğrendiğinde, bir mahalledeki kira ilanlarını düşün: birkaç lüks daire ortalamayı yukarı çeker, medyan ise daha gerçekçi bir tablo verir. Bu bağlantılar kavramı ezberden çıkarıp kalıcı hale getirir.

    Yol haritası: beş aşama

    Süreler, haftada 8-10 saat ayırabilen biri için kaba bir tahmin. Daha çok ya da daha az vaktin varsa kendine göre ayarla; önemli olan sırayı korumak.

    AşamaNe öğreneceksin?Tahmini süre
    1. Excel / Google E-TablolarFormüller, filtre, pivot tablo, basit grafik2-3 hafta
    2. SQLSorgu yazmak, tabloları birleştirmek, gruplamak4-6 hafta
    3. Python ve PandasVeri okumak, temizlemek, dönüştürmek6-8 hafta
    4. Görselleştirme ve panoDoğru grafiği seçmek, bir pano aracı3-4 hafta
    5. Temel istatistikOrtalama, dağılım, korelasyon, basit test3-4 hafta

    1. Excel ya da Google E-Tablolar

    Birkaç yüz satırlık bir veriyi hızlıca incelemenin en kolay yolu hâlâ bir tablo programı. Pivot tablo (özet tablo) öğrendiğinde veri analizinin temel fikrini, yani gruplayıp özetlemeyi, kod yazmadan kavramış olursun. Bu fikir SQL ve Python’da da aynen karşına çıkacak.

    Pratik: Kendi aylık harcamalarını bir tabloya dök ve kategoriye göre pivot tablo yap.

    2. SQL

    Veri analisti ilanlarında en sık karşına çıkacak becerilerden biri. Verinin çoğu veritabanlarında durur ve SQL o veriye soru sormanın dilidir. Öncelik sırası:

    1. SELECT, WHERE, ORDER BY
    2. GROUP BY ve toplama fonksiyonları (COUNT, SUM, AVG)
    3. JOIN ile tabloları birleştirmek
    4. Alt sorgular ve pencere fonksiyonları (ROW_NUMBER, RANK)

    Pratik: Her gün birkaç SQL sorusu çöz. Sınav mantığı burada çok işe yarar: çözemediğin soruları bir listede topla ve haftanın sonunda tekrar dene.

    3. Python ve Pandas

    SQL ile çektiğin veriyi Python’da işleyip temizlemek, tekrar eden işleri otomatiğe bağlamak için Python öğreneceksin. Sıfırdan başlıyorsan bu blogdaki Python serisi tam bu amaçla hazırlandı: temellerden başlayıp NumPy ve Pandas’a kadar ilerliyor. Pandas’a geçince odaklanman gereken işler:

    • CSV ve Excel dosyası okumak
    • Eksik ve tekrar eden değerleri temizlemek
    • groupby ile özetlemek, merge ile tabloları birleştirmek
    • Tarih sütunlarıyla çalışmak

    Pratik: Kaggle’ın ücretsiz Learn bölümündeki Python ve Pandas kursları, kısa alıştırmalarla ilerlediği için iyi bir tamamlayıcı.

    4. Görselleştirme ve pano

    Analiz ne kadar iyi olursa olsun, sonucu anlatamazsan kimse kullanmaz. İki şeyi öğren:

    • Doğru grafik seçmek: Zaman içindeki değişim için çizgi, karşılaştırma için çubuk grafik. Pasta grafiği mümkün olduğunca az kullan.
    • Bir pano aracı: Power BI ya da Tableau’dan birini seçip ilerle. Hangisinin öne çıktığını anlamak için hedeflediğin ilanlara bak.

    Pratik: Aynı veriyi hem Python’la (Matplotlib) hem de seçtiğin pano aracıyla görselleştir.

    5. Temel istatistik

    Veri analisti olmak için ileri matematik gerekmez, ama ortalama ile medyanın farkını, dağılımı, korelasyonun nedensellik olmadığını ve basit bir A/B testini anlaman gerekir. Bu konular yanlış sonuç çıkarmanı engeller.

    Pratik: Her yeni kavramı günlük hayattan bir örnekle açıkla. “Dondurma satışları arttığında boğulma vakaları da artıyor” cümlesinin neden dondurmayı suçlamadığını (ikisinin de asıl sebebinin sıcak hava olduğunu) anlatabiliyorsan korelasyonu anlamışsın demektir.

    Portfolyo: çalışmalarını görünür kıl

    İş ilanı deneyim istiyor, deneyim için iş lazım. Bu kısır döngüyü kırmanın en iyi yolu, yaptıklarını gösterebileceğin bir portfolyo. İyi bir portfolyo projesinde şunlar olur:

    • Gerçek bir soru. “Titanic verisini analiz ettim” yerine “Hangi faktörler hayatta kalma şansını en çok etkiledi?”
    • Temizleme adımları. İşverenler verinin ne kadar dağınık geldiğini bilir; nasıl toparladığını görmek ister.
    • Kısa bir sonuç bölümü. Teknik olmayan birinin anlayacağı üç cümle.
    • Paylaşılabilir bir link. GitHub ya da Kaggle profili.

    Sevdiğin bir konudan proje seçmek motivasyonunu yüksek tutar. Bu blogdaki “Popüler Kültürü Kodluyorum” serisinde Netflix izleme geçmişiyle başlayan ve Spotify, futbol gibi verilerle devam edecek projeler, portfolyon için fikir verebilir.

    İlk başvuru

    • CV: Projelerini ve kullandığın araçları öne çıkar. Her projeye bir satırlık sonuç cümlesi ekle.
    • GitHub: Profil sayfan düzenli olsun; her projede ne yaptığını anlatan bir README bulunsun.
    • Mülakat: SQL ve vaka sorularına hazırlan. Bu blogda yakında “Veri Analisti Mülakat Soruları” ve “SQL Mülakat Soruları” yazıları da yayımlanacak.

    Sık yapılan hatalar

    1. Her şeyi aynı anda öğrenmeye çalışmak. Sırayı koru; SQL’i bitirmeden makine öğrenmesine atlama.
    2. Kurs biriktirmek. Beşinci kursu bitirmek yerine ilk projeni yap.
    3. Sadece temiz veri setleriyle çalışmak. Gerçek veri dağınıktır; temizlemeyi öğrenmek işin yarısıdır.
    4. Sonucu anlatmayı atlamak. “Ne buldun?” sorusuna iki cümleyle cevap veremiyorsan analiz bitmemiştir.

    Özetle

    Excel’le başla, SQL’i iyice öğren, Python’la güçlen, sonuçlarını görselleştirmeyi ve istatistiğin temelini ekle. Bunu yaparken pratik yap, sınava çalışır gibi disiplinli ol ve öğrendiğin her şeyi günlük hayattan bir örneğe bağla. Yol uzun görünebilir, ama her aşama bir öncekinin üstüne kuruluyor.

  • API Nedir? Günlük Hayattan Örneklerle

    API Nedir? Günlük Hayattan Örneklerle

    Telefonundaki hava durumu uygulaması havayı kendisi ölçmüyor. Bir yerden soruyor. İşte o “sorma” işini mümkün kılan şeye API denir. Bu yazıda API’nin ne olduğunu bir restoran benzetmesiyle anlatıyor, sonunda Python’la 5 satırda gerçek bir API’ye soru soruyoruz.

    API nedir?

    API, İngilizce “Application Programming Interface” sözcüklerinin kısaltması. Türkçede “uygulama programlama arayüzü” denir. Basitçe: iki yazılımın birbiriyle konuşmasını sağlayan kurallar bütünü.

    Bir yazılım diğerine “bana şu bilgiyi ver” ya da “şu işi yap” der. Diğer yazılım da ne cevap vereceğini ve hangi biçimde vereceğini önceden belirlemiştir. API, bu konuşmanın dilidir.

    Bir restoranda oturduğunu düşün:

    • Sen yemek istiyorsun ama mutfağa girmiyorsun.
    • Mutfak yemeği hazırlıyor ama senin masana gelmiyor.
    • Garson aradaki bağlantı: siparişini alıyor, mutfağa iletiyor, yemeği sana getiriyor.
    • Menü ise neyi isteyebileceğini gösteriyor. Menüde olmayan bir şeyi söylersen garson “Bunu yapamıyoruz” der.

    Yazılım dünyasında sen bir uygulamasın, mutfak başka bir şirketin sunucusu, garson API, menü de API’nin belgeleri. Mutfağın içinde ne olduğunu bilmen gerekmez; menüye bakıp doğru siparişi vermen yeter.

    API’leri her gün kullanıyorsun

    Farkında olmasan da günün birçok anında bir API çalışıyor:

    • Hava durumu: Telefonundaki uygulama, hava durumu verisi sunan bir servisin API’sine “şu şehirde hava kaç derece?” diye soruyor.
    • Google ile giriş yap: Bir sitede bu düğmeye bastığında site, kimliğini Google’ın API’si üzerinden doğruluyor. Site şifreni hiç görmüyor.
    • Online ödeme: Bir alışveriş sitesi kart bilgini kendisi işlemez; bir ödeme şirketinin API’sine gönderir.
    • Haritadaki konum: Bir kafenin sitesindeki küçük harita, bir harita servisinin API’sinden geliyor.
    • Yapay zekâ uygulamaları: Birçok uygulama, arka planda büyük bir dil modeline API üzerinden soru soruyor.

    Bir API’ye nasıl soru sorulur?

    Çoğu API web adresleri üzerinden çalışır. Bir adrese istek gönderirsin, cevap genellikle JSON adı verilen düzenli bir metin biçiminde gelir. JSON’u şimdilik “etiketli bilgiler listesi” gibi düşünebilirsin:

    {"sehir": "İstanbul", "sicaklik": 18.3}

    Örnek: Python’la hava durumunu sormak

    Open-Meteo, hava durumu verisi sunan açık bir API. Kişisel ve ticari olmayan kullanım için ücretsiz ve anahtar istemiyor. Aşağıdaki kodu Google Colab’da çalıştırabilirsin:

    import requests # internete istek göndermek için kullanılan kütüphane
    # Siparişimiz: İstanbul'un koordinatları ve şu anki sıcaklık
    adres = "https://api.open-meteo.com/v1/forecast"
    parametreler = {"latitude": 41.01, "longitude": 28.98, "current": "temperature_2m"}
    cevap = requests.get(adres, params=parametreler) # garsona siparişi verdik
    veri = cevap.json() # gelen JSON'u Python sözlüğüne çevirdik
    print("İstanbul'da şu an:", veri["current"]["temperature_2m"], "derece")

    Çıktı şuna benzer (sıcaklık o anki havaya göre değişir):

    İstanbul'da şu an: 18.3 derece

    Satır satır ne oldu?

    1. requests kütüphanesini çağırdık. Colab’da hazır yüklü gelir.
    2. Menüye bakıp siparişi hazırladık: hangi adres, hangi konum, hangi bilgi.
    3. requests.get ile isteği gönderdik.
    4. Gelen cevabı .json() ile Python’ın anlayacağı bir sözlüğe çevirdik.
    5. İhtiyacımız olan tek değeri sözlükten çekip yazdırdık.

    Koordinatları değiştirerek kendi şehrinin sıcaklığını öğrenebilirsin. Hava verisi Open-Meteo’dan geliyor ve CC BY 4.0 lisansıyla sunuluyor.

    API anahtarı nedir?

    Bazı API’ler seni tanımak ister. Bunun için sana özel, şifre gibi bir metin verir: API anahtarı. İki kuralı unutma:

    • API anahtarını kimseyle paylaşma, kodunu GitHub’a yüklerken içinde bırakma.
    • Ücretli API’lerde anahtarın sızarsa, başkasının kullandığı her istek senin faturana yazılabilir.

    Özetle

    API, yazılımların birbirine sipariş verdiği garsondur. Uygulamalar her şeyi kendisi yapmak yerine, işinin uzmanı olan başka servislerden API aracılığıyla yardım alır. Python’la birkaç satırda sen de bu siparişi verebilirsin.

    Kaynak: Open-Meteo belgeleri ve kullanım şartları

  • Kod Kartı: Python’da İki Değişkeni Tek Satırda Takas Etmek

    Kod Kartı: Python’da İki Değişkeni Tek Satırda Takas Etmek

    İki değişkenin değerini yer değiştirmen gerektiğinde Python’da geçici bir değişkene ihtiyacın yok. Tek satır yeter.

    Kod

    a = 5
    b = 9
    a, b = b, a # sağdaki değerler önce okunur, sonra sola yazılır
    print(a, b) # 9 5

    Bu satır nasıl çalışıyor?

    Python eşittirin önce sağ tarafını değerlendirir. b, a yazıldığı anda iki değer, yani 9 ve 5, bir demet (tuple) içinde paketlenir. Sonra bu paket açılır ve değerler sırayla soldaki isimlere dağıtılır: ilk değer a‘ya, ikincisi b‘ye. Değerler önceden okunduğu için hiçbir değer kaybolmaz.

    Başka birçok dilde aynı iş için üç satır ve geçici bir değişken yazarsın:

    gecici = a
    a = b
    b = gecici

    Python’da bu da çalışır, ama tek satırlık versiyon hem daha kısa hem daha okunaklı.

    Bir örnek daha: listede iki elemanı takas etmek

    Aynı yöntem bir listenin elemanları için de işler. Sıralama algoritmalarında sık karşına çıkacak:

    sayilar = [3, 1, 2]
    sayilar[0], sayilar[2] = sayilar[2], sayilar[0] # ilk ve son elemanı takas et
    print(sayilar) # [2, 1, 3]

    Dikkat

    Sol ve sağ taraftaki eleman sayısı aynı olmalı. a, b = 1, 2, 3 yazarsan Python ValueError: too many values to unpack (expected 2) hatası verir: üç değeri iki kutuya sığdıramaz.

    Bu yöntemin arkasındaki demet (tuple) kavramını Python serisinin 8. dersinde, Sözlükler ve Demetler’de ayrıntılı işleyeceğiz.

  • Python’da Değişkenler ve Veri Tipleri (Python Dersi 3)

    Python’da Değişkenler ve Veri Tipleri (Python Dersi 3)

    İlk dersten beri bir soru bekliyor: not ortalamasını hesaplayan program neden 80 değil de 80.0 yazıyor? Cevabı bu derste, değişkenleri ve veri tiplerini öğrenirken bulacaksın.

    Bu dersin kodları ve alıştırmaları hazır bir not defterinde: Colab’da Aç. Not defterini aç, Drive’ına kopyasını kaydet ve hücreleri sırayla Shift + Enter ile çalıştır.

    Değişken nedir?

    Değişkeni üzerinde etiket olan bir kutu gibi düşünebilirsin. Kutunun içine bir değer koyarsın, etiketine bir isim yazarsın. Sonra o değere ihtiyacın olduğunda etiketin adını söylemen yeter.

    Python’da değişken oluşturmak tek satırdır:

    yas = 25
    boy = 1.68
    isim = "Ayşe"
    ogrenci_mi = True

    Buradaki = işareti matematikteki “eşittir” anlamına gelmez. “Sağdaki değeri, soldaki isme ata” demektir. Bu yüzden şu kod hata vermez:

    puan = 10
    puan = puan + 5 # puan'ın eski değerine 5 ekle, sonucu yine puan'a koy
    print(puan) # 15

    Matematikte puan = puan + 5 imkansız bir denklem olurdu. Python’da ise “kutudaki değeri al, 5 ekle, kutuya geri koy” anlamına gelir. Değişkenin adı da buradan gelir: içindeki değer değişebilir.

    Değişkene isim verirken

    Python isimler konusunda birkaç kurala uymanı ister, birkaçını da topluluk alışkanlık olarak benimsemiştir:

    • Rakamla başlayamaz. ogrenci1 olur, 1ogrenci olmaz.
    • Boşluk içeremez. İki kelimeyi alt çizgiyle birleştir: ogrenci_sayisi.
    • Büyük ve küçük harf farklıdır. isim ile Isim iki ayrı değişkendir.
    • Python’ın kendi kelimeleri kullanılamaz. if, for, True gibi kelimeler dile ayrılmıştır.
    • Türkçe karakterden kaçın. Python yaş gibi isimleri kabul eder, ama başka kişilerle ya da farklı araçlarla çalışırken sorun çıkabilir. Bu seride yas, ogrenci gibi yazacağız.
    • Anlamlı isim seç. x yerine fiyat yazdığında kodunu bir ay sonra da anlarsın.

    Dört temel veri tipi

    Kutunun içine koyduğun değerin bir türü vardır. Python bu türe veri tipi der. Başlangıçta dört tanesini bilmen yeter:

    Veri tipiNe tutar?Örnek
    int (tam sayı)Küsuratı olmayan sayılar25, -3, 0
    float (ondalıklı sayı)Noktalı sayılar1.68, 80.0, -0.5
    str (metin)Tırnak içindeki her şey"Ayşe", "5", ""
    bool (mantıksal)Yalnızca iki değerTrue, False

    Python’da ondalık ayıracı virgül değil, noktadır: 1,68 değil 1.68 yazarsın.

    type() ile tipi öğrenmek

    Bir değerin hangi tipte olduğunu merak ettiğinde type() fonksiyonunu kullan:

    yas = 25
    boy = 1.68
    isim = "Ayşe"
    ogrenci_mi = True
    print(type(yas)) # <class 'int'>
    print(type(boy)) # <class 'float'>
    print(type(isim)) # <class 'str'>
    print(type(ogrenci_mi)) # <class 'bool'>

    "5" ile 5 aynı şey değildir. İlki tırnak içinde olduğu için metindir, ikincisi sayıdır. Bu küçük fark, yeni başlayanların en sık karşılaştığı hatalardan birinin kaynağı; birazdan göreceğiz.

    Cevap: Ortalama neden 80.0 çıkıyor?

    Python’da / ile yapılan bölme işleminin sonucu her zaman float‘tır, bölüm tam çıksa bile. 240’ı 3’e bölersen sonuç 80 olsa da Python bunu 80.0 olarak yazar. Ders 1’deki ortalama da sum(notlar) / len(notlar) yani 240 / 3 işlemiydi.

    Tam sayı sonucu istiyorsan iki ayrı operatör var:

    print(240 / 3) # 80.0 normal bölme, sonuç hep float
    print(240 // 3) # 80 tam bölme, küsuratı atar
    print(7 / 2) # 3.5
    print(7 // 2) # 3 3.5'in küsuratı atıldı
    print(7 % 2) # 1 bölmeden kalan

    // küsuratı yuvarlamaz, atar: 7 // 2 sonucu 4 değil 3’tür. % ise kalanı verir; bir sayının tek mi çift mi olduğunu anlamak için sık kullanılır.

    Not ortalamasında küsuratı atmak yanlış sonuç verebileceği için orada / kullanmak doğru tercih. 80.0 yanlış değil, sadece sayının tipini gösteriyor.

    Tip dönüştürme

    Bazen bir değeri başka bir tipe çevirmen gerekir. Bunun için tipin adını fonksiyon gibi kullanırsın:

    print(int("5") + 3) # 8 metni sayıya çevirdik
    print("5" + str(3)) # 53 sayıyı metne çevirdik, metinler yan yana eklendi
    print(float("3.5")) # 3.5
    print(int(3.9)) # 3 int() yuvarlamaz, küsuratı atar
    print(bool(0), bool("merhaba")) # False True

    En sık karşılaşılan hata

    Metinle sayıyı doğrudan toplamaya çalışırsan Python itiraz eder:

    "5" + 3
    # TypeError: can only concatenate str (not "int") to str

    Hata mesajı tam olarak sorunu söylüyor: metne yalnızca metin eklenebilir, sayı eklenemez. Çözüm, iki değeri aynı tipe getirmek: sayı olarak toplamak istiyorsan int("5") + 3, yan yana yazmak istiyorsan "5" + str(3).

    Bu hatayı neden bu kadar erken öğreniyoruz? Bir sonraki derste kullanıcıdan bilgi alacağız ve kullanıcının yazdığı her şey, sayı bile olsa, Python’a metin olarak gelir.

    Çevrilemeyecek bir değeri çevirmeye çalışırsan da hata alırsın: int("üç") bir ValueError verir, çünkü Python “üç” kelimesini sayıya çeviremez.

    Bu derste ne öğrendin?

    • Değişken, bir değere verdiğin isimdir; = “ata” anlamına gelir.
    • Dört temel veri tipi: int, float, str, bool. Tipi type() ile öğrenirsin.
    • / her zaman float döndürür; // küsuratı atar, % kalanı verir.
    • int(), float(), str() ile tip dönüştürürsün; metinle sayı doğrudan toplanamaz.

    Alıştırmalar

    Her birinde önce cevabı tahmin et, sonra not defterinde kontrol et.

    1. Bölme üçlüsü. a = 17 ve b = 5 için a / b, a // b ve a % b ne verir?
    2. Tipi bul. 3.0, "3" ve 3 değerlerinin tipleri nedir?
    3. Hatayı düzelt. fiyat = "120" ve adet = 3. Toplam tutarı (360) hesaplayan satırı yaz.
    4. Sürpriz çıktı. print("120" * 3) ne yazar? Neden?

    Cevaplar

    1. 3.4, 3 ve 2. 17’nin içinde 3 tane 5 var, 2 artıyor.
    2. float, str ve int.
    3. print(int(fiyat) * adet). Metni önce sayıya çevirmen gerekir.
    4. 120120120. Metni bir sayıyla çarpmak onu o kadar kez yan yana yazar. Hata vermez, ama istediğin sonuç bu değil; 3. alıştırmadaki dönüşümün neden önemli olduğunu gösteriyor.

    Sıradaki ders

    Bir sonraki derste programın kullanıcıyla konuşmaya başlayacak: input ile bilgi alıp print ile cevap vereceksin. Bugün öğrendiğin tip dönüştürme orada hemen işine yarayacak. input ve print: Kullanıcıyla Konuşan Program (Python Dersi 4)

  • Wordle Çözücü Yazmak: Python ile Kelime Oyununu Yenmek

    Wordle Çözücü Yazmak: Python ile Kelime Oyununu Yenmek

    İtiraf edeyim: Wordle’ı çok az oynadım. Ama çözücüsünü yazmak, oynamaktan çok daha keyifli çıktı. Bu yazıda Türkçe Wordle’ı çözen bir Python programını birlikte yazıyoruz. Sonunda program 3.377 kelimenin üzerinde test ediliyor ve ortalama 4’ün altında tahminde doğru kelimeyi buluyor.

    Kod Python Dersi 9’da işleyeceğimiz fonksiyonları ve biraz liste işlemini kullanıyor. Serinin başındaysan da korkma: her adımı açıklıyorum, kodu çalıştırmak için anlaman şart değil. Tüm kod hazır bir not defterinde: Colab’da Aç

    Wordle’ın kısa hikâyesi

    Wordle’ı Galli yazılım mühendisi Josh Wardle, başta kendisi ve partneri Palak Shah için yazdı. Oyun Ekim 2021’de herkese açıldı ve yayılma hızı olağanüstüydü: 1 Kasım 2021’de 90 olan oyuncu sayısı, 2 Ocak 2022’ye gelindiğinde 300 bini, bir hafta sonra da 2 milyonu geçti. The New York Times, oyunu 31 Ocak 2022’de satın aldı.

    Oyun tasarımı açısından neden tuttu?

    Wordle’ın başarısının büyük kısmı birkaç basit tasarım kararından geliyor:

    • Günde tek bulmaca. Herkes aynı kelimeyi çözüyor. Bu, oyunu ortak bir sohbet konusuna çeviriyor ve “bir tane daha” diye saatlerce oynamayı engelliyor; ertesi günü bekletiyor.
    • Paylaşılabilir renkli kareler. Oyuncular kelimeyi açık etmeden sonuçlarını emoji kareleriyle paylaşabiliyor. İlginç olan şu: bu fikir Wardle’dan değil, sonuçlarını böyle paylaşan Yeni Zelandalı bir arkadaş grubundan çıktı. Wardle bunu görüp oyuna ekledi ve oyunun yayılmasında büyük rol oynadı.
    • Basit kural, derin strateji. Kuralları bir dakikada öğrenirsin ama iyi oynamak düşünmeyi gerektirir. Oyun tasarımında bu dengeye sıkça “öğrenmesi kolay, ustalaşması zor” denir.

    Oyun geliştirmeyi düşünüyorsan Wordle iyi bir ders: başarılı bir oyun için büyük bir ekip ya da karmaşık grafikler şart değil.

    Kurallar

    Amacın beş harfli bir kelimeyi en fazla altı tahminde bulmak. Her tahminden sonra harfler renklenir:

    • Yeşil: Harf kelimede var ve doğru yerde.
    • Sarı: Harf kelimede var ama başka bir yerde.
    • Gri: Harf kelimede yok.

    1. Adım: Türkçe kelime listesi

    Bir çözücü için ilk ihtiyaç beş harfli Türkçe kelimelerin listesi. Burada iki açık kaynağı birleştirdim:

    • hunspell-tr: Yazım denetimi için hazırlanmış, MPL-2.0 lisanslı bir Türkçe sözlük. Gerçek kelime köklerini buradan alıyoruz.
    • wordfreq: Dillerde kelimelerin ne sıklıkla kullanıldığını veren bir Python kütüphanesi. Az bilinen kelimeleri elemek için bunu kullanıyoruz.

    Neden ikisi birden? Sözlükteki birçok kök tek başına kelime değil, yalnızca ekleri tutmak için var. Sıklık listesinde ise özel isimler ve çekimli kelimeler bol. İkisinin kesişimi bize hem gerçek hem de tanıdık kelimeler veriyor.

    from collections import Counter
    TR_HARFLER = set("abcçdefgğhıijklmnoöprsştuüvyz")
    def turkce_kucuk(metin):
    # Python'ın lower() fonksiyonu "I" harfini "i" yapar; Türkçede "ı" olmalı.
    return metin.replace("I", "ı").replace("İ", "i").lower()
    def kelime_listesi_yukle(dic_yolu, en_fazla=60000):
    import wordfreq
    kokler = set()
    with open(dic_yolu, encoding="utf-8") as dosya:
    next(dosya) # ilk satır kelime sayısı
    for satir in dosya:
    kelime = turkce_kucuk(satir.split("/")[0].strip())
    if len(kelime) == 5 and set(kelime) <= TR_HARFLER:
    kokler.add(kelime)
    # Sık kullanılan kelimelerle kesiştir: hem gerçek kelime hem tanıdık olsun
    sik = wordfreq.top_n_list("tr", en_fazla)
    return [k for k in sik if k in kokler]

    Sonuç: 3.377 kelime. Birkaç argo kelimeyi de listeden elle çıkardım. Liste kusursuz değil; içinde “benim” ya da “geldi” gibi çekimli kelimeler de var. Bir çözücü için bu yeterli, ama kendi oyununu yapıyorsan listeyi elle temizlemen gerekir.

    Koddaki turkce_kucuk fonksiyonuna dikkat: Türkçe için yazılmış programların en klasik tuzağı burada. Python’ın lower() fonksiyonu büyük “I” harfini “i”ye çevirir, oysa Türkçede karşılığı “ı”dır.

    2. Adım: Renkleri hesaplamak

    Çözücünün kalbi, oyunun kuralını koda çeviren bu fonksiyon. Bir tahmin ve bir cevap alıyor, Wordle’ın göstereceği renkleri döndürüyor: Y yeşil, S sarı, G gri.

    def renkleri_hesapla(tahmin, cevap):
    """Y = yeşil (doğru yer), S = sarı (yanlış yer), G = gri (yok)."""
    sonuc = ["G"] * 5
    kalan = Counter()
    # Önce yeşiller
    for i in range(5):
    if tahmin[i] == cevap[i]:
    sonuc[i] = "Y"
    else:
    kalan[cevap[i]] += 1
    # Sonra sarılar: aynı harf iki kez varsa fazladan sarı vermemek için sayaç kullanıyoruz
    for i in range(5):
    if sonuc[i] == "G" and kalan[tahmin[i]] > 0:
    sonuc[i] = "S"
    kalan[tahmin[i]] -= 1
    return "".join(sonuc)
    print(renkleri_hesapla("elmas", "kalem")) # SSSSG

    Neden iki ayrı döngü? Aynı harf birden fazla geçtiğinde iş karışır. Cevapta bir tane “a” varken tahminde iki “a” varsa, yalnızca biri renklenmeli. Önce yeşilleri yerleştirip kalan harfleri sayarak bu hatayı önlüyoruz. İlk akla gelen basit çözümlerde bu ayrıntı kolayca atlanır.

    3. Adım: Listeyi daraltmak

    Aslında çözücünün bütün zekası tek bir fikirde: Her aday kelime için “Cevap bu kelime olsaydı, aynı renkleri görür müydüm?” diye sor. Görüyorsan aday listede kalır, görmüyorsan elenir.

    def listeyi_daralt(adaylar, tahmin, renkler):
    # Cevap bu kelime olsaydı aynı renkleri görür müydük? Görürsek aday kalır.
    return [k for k in adaylar if renkleri_hesapla(tahmin, k) == renkler]

    Bu tek satır, yeşil, sarı ve gri için ayrı ayrı kural yazmaktan çok daha güvenli. Az önce yazdığımız renk fonksiyonunu yeniden kullanıyoruz ve tekrar eden harf gibi zor durumları zaten o çözüyor.

    4. Adım: Hangi kelimeyi tahmin etmeli?

    Liste daralıyor ama hangi kelimeyle? Basit bir strateji: aday kelimelerde en sık geçen harfleri içeren kelimeyi seç. Bu harfler hakkında bilgi almak listeyi en hızlı küçültür.

    def en_iyi_tahmin(adaylar):
    # Her harfin kaç kelimede geçtiğini say (bir kelimede iki kez geçse de bir say)
    harf_sayisi = Counter()
    for k in adaylar:
    harf_sayisi.update(set(k))
    def puan(kelime):
    return sum(harf_sayisi[h] for h in set(kelime))
    return max(adaylar, key=puan)

    set(kelime) sayesinde aynı harfi iki kez saymıyoruz. “aaaaa” gibi bir kelimenin tek bir harf hakkında bilgi verdiğini hatırla.

    Tüm liste için bu fonksiyonun önerdiği ilk tahmin: ekran. Bu kelime Türkçede çok sık geçen a, e, k, r ve n harflerini bir arada içeriyor.

    Bir oyunu adım adım izle

    Cevap “kalem” olsun:

    TahminRenklerKalan aday
    ekranSSGSG11
    hakemGYSYY2 (kalem, kadem)
    kalemYYYYYBuldu

    Üç tahmin. İlk tahminden sonra 3.377 kelimeden geriye 11 tane kaldı.

    5. Adım: Çözücüyü test etmek

    Bir çözücünün ne kadar iyi olduğunu tek oyunla anlayamayız. Listedeki her kelimeyi sırayla cevap yapıp çözücüye oynattım:

    def oyna(cevap, kelimeler, ilk_tahmin=None):
    adaylar = kelimeler
    for deneme in range(1, 7):
    tahmin = ilk_tahmin if (deneme == 1 and ilk_tahmin) else en_iyi_tahmin(adaylar)
    renkler = renkleri_hesapla(tahmin, cevap)
    if renkler == "YYYYY":
    return deneme
    adaylar = listeyi_daralt(adaylar, tahmin, renkler)
    return None # 6 denemede bulamadı
    sonuclar = Counter(oyna(c, kelimeler, "ekran") for c in kelimeler)

    Sonuçlar:

    Tahmin sayısıKelime sayısı
    11
    2133
    31.043
    41.445
    5568
    6144
    Bulamadı43

    Çözücü 3.377 kelimenin 3.334’ünü altı tahminde buldu; ortalama 3,86 tahmin. Fena değil: bunu yalnızca dört küçük fonksiyonla yaptık.

    Bulamadığı 43 kelime: Wordle tuzağı

    Bulamadığı kelimelere bakmak çok öğretici. Cevap “senin” olduğunda olanlar:

    TahminRenklerKalan aday
    ekranSGGGY81
    gidenGSGSY19
    besinGYSYY4
    seçinYYGYY3
    selinYYGYY2
    sevinYYGYY1

    Dördüncü tahminden sonra yalnızca bir harf eksik, ama o harf için dört aday var: seçin, selin, sevin, senin. Çözücü onları tek tek denediği için altı hakkı bitti. Wordle oyuncularının iyi tanıdığı bir tuzak bu. Kalan aday sayısı az da olsa her seferinde tek harf eleyebiliyorsan sıkışırsın.

    Kapak ile kazak, saman ile yaman, kapan ile kapar gibi kelimeler de aynı sebeple bu listede.

    Çözücüyü kendi oyununda kullan

    Türkçe bir Wordle oynarken çözücüden yardım almak istersen, not defterindeki bu hücreyi kullanabilirsin. Her tahminden sonra oyunda gördüğün renkleri Y, S, G harfleriyle yaz:

    adaylar = kelimeler
    # Her tahminden sonra bu iki satırı değiştirip hücreyi yeniden çalıştır
    tahmin = "ekran"
    renkler = "SSGSG" # oyunda gördüğün renkler: Y yeşil, S sarı, G gri
    adaylar = listeyi_daralt(adaylar, tahmin, renkler)
    print(len(adaylar), "aday kaldı:", adaylar[:15])
    print("Önerim:", en_iyi_tahmin(adaylar))

    Oyunun kelime listesi bizimkiyle aynı olmayabilir. Aday listesi boş kalırsa, cevap muhtemelen bizim listemizde değildir.

    Sana meydan okuma

    Tuzağı aşmak için çözücüyü geliştirebilir misin? İpucu: Kalan aday çok azken her zaman aday listeden tahmin yapmak zorunda değilsin. “seçin, selin, sevin, senin” arasında kaldığında ç, l, v ve n harflerinin ikisini birden sınayan bir kelime, bir hamlede iki adayı eleyebilir. Bulamadığı kelime sayısını 43’ün altına indirirsen sonucunu yorumlarda paylaş.

    Oyunlar ve kod

    Bu yazı, “Popüler Kültürü Kodluyorum” serisinin ilk yazısı. Serideki her yazıda sevdiğin bir oyunu, diziyi ya da filmi küçük bir kod projesine çevireceğiz. Oyunlarla ilgileniyorsan, çözücü yazmak oyun geliştirmeye de iyi bir giriş: bir oyunu çözebilmek için önce kurallarını koda çevirmen gerekiyor, ki bu da oyunu yazmanın ilk adımı.

    Kaynaklar

  • Ada Lovelace Günü: Teknolojinin İlk Satırlarındaki Kadın

    Ada Lovelace Günü: Teknolojinin İlk Satırlarındaki Kadın

    4–6 dakika

    Bugün 13 Ekim, Ekim ayının ikinci salısı. Bu gün dünyanın birçok yerinde Ada Lovelace Günü olarak anılıyor: bilim, teknoloji, mühendislik ve matematikte iz bırakan kadınları görünür kılma günü.

    Bu yazıda sana çoğu zaman “ilk bilgisayar programcısı” olarak anılan Ada Lovelace’ı, onun izinden giden üç kadını ve bu hikâyenin bugün teknolojiye adım atan sana ne söylediğini anlatıyorum.

    Ada Lovelace kimdi?

    Ada Lovelace, 10 Aralık 1815’te Londra’da Augusta Ada Byron adıyla doğdu. Babası şair Lord Byron’dı. Ada şiirle değil, matematikle büyüdü: matematik ve bilim eğitimini özel hocalardan aldı. Hocalarından biri, döneminin en tanınmış bilim insanlarından Mary Somerville’di.

    Ada’nın hayatını değiştiren tanışmayı da yine bir kadın sağladı. 5 Haziran 1833’te, henüz 17 yaşındayken, Somerville aracılığıyla matematikçi Charles Babbage ile tanıştı. Babbage o sırada hesap yapan makineler tasarlıyordu ve Ada bu makinelere tutuldu.

    Ada Lovelace 27 Kasım 1852’de, 36 yaşında hayatını kaybetti. Kısa hayatına sığdırdığı birkaç sayfa ise bilgisayar tarihinin en çok anılan metinlerinden biri oldu.

    Henüz yapılmamış bir makine için program

    Babbage’ın en iddialı tasarımı Analitik Makine’ydi: mekanik, her türlü hesabı yapabilecek şekilde düşünülmüş genel amaçlı bir bilgisayar. Makine hiçbir zaman tamamlanamadı. Ama Ada onun ne yapabileceğini kağıt üzerinde, herkesten daha açık gördü.

    Babbage 1840’ta İtalya’nın Torino kentinde makinesini anlatan bir konuşma yaptı. İtalyan mühendis Luigi Menabrea bu konuşmayı Fransızca bir makaleye dönüştürdü. Ada’dan makaleyi İngilizceye çevirmesi istendi. O ise yalnızca çevirmekle kalmadı: dokuz ay boyunca çalıştı ve metne A’dan G’ye kadar harflendirdiği yedi not ekledi. Notlar, çevirinin yaklaşık üç katı uzunluğundaydı ve Eylül 1843’te yalnızca baş harfleriyle, “AAL” imzasıyla yayımlandı.

    Not G: Adım adım bir algoritma

    Notların sonuncusu olan Not G, makinenin Bernoulli sayıları adı verilen bir sayı dizisini nasıl hesaplayacağını adım adım anlatıyordu. Bu yöntem bugün sıkça “ilk yayımlanmış bilgisayar programı” olarak anılıyor.

    Bir not düşeyim: Babbage’ın da daha önce yazdığı ama yayımlamadığı programlar vardı. Makine yapılmadığı için Ada’nın programı da hiç çalıştırılamadı. Ama Ada’yı özel kılan tek şey bu algoritma değil.

    Makinenin hesaptan fazlasını yapabileceğini gördü

    Analitik Makine hesap yapmak için tasarlanmıştı. Ada ise bir adım öteye geçti: makinenin sayılardan başka şeyler üzerinde de çalışabileceğini yazdı. Örneğin müzikteki seslerin arasındaki ilişkiler sembollerle ifade edilebilirse, makinenin karmaşık müzik parçaları bestleyebileceğini öngördü.

    Bugün bilgisayarların müzik ürettiği, resim çizdiği, metin yazdığı bir dünyada yaşıyoruz. Ada bunu, makine daha kağıt üzerindeyken hayal etti. Kendi yaklaşımına “şiirsel bilim” (poetical science) diyordu: hayal gücü ile matematiğin bir arada çalışması.

    Ada Lovelace Günü nedir?

    Ada Lovelace Günü 2009’da İngiltere’de Suw Charman-Anderson tarafından başlatıldı ve her yıl Ekim ayının ikinci salısı anılıyor. Amacı, kadınların bilim, teknoloji, mühendislik ve matematikteki katkılarını görünür kılmak.

    Bence günün en güçlü yanı şu: teknolojiye yeni adım atan bir kızın ya da kadının, kendinden önce bu yoldan geçmiş isimleri görmesini sağlıyor. Gördüğün şey, olabileceğini düşündüğün şeyi değiştiriyor.

    Ada’nın izinden giden üç kadın

    Ada’nın hikâyesi bir başlangıçtı. Bilgisayar tarihinin dönüm noktalarının birçoğunda kadınların imzası var. İşte üç tanesi:

    Grace Hopper: Bilgisayarla insan diline yakın bir dilde konuşmak

    Grace Hopper, bilgisayara insan diline yakın komutlarla program yazılabileceğini savundu. Ekibiyle birlikte ilk derleyicilerden biri olan A-0’ı geliştirdi. Derleyici, insanın yazdığı kodu makinenin anlayacağı dile çeviren programdır. Hopper’ın anlattığına göre başta bu fikre kimse inanmadı. Onun tasarım anlayışı, iş dünyası için geliştirilen COBOL dilinin temelini oluşturdu. Hopper ABD Donanması’nda amiral rütbesine kadar yükseldi.

    Küçük bir düzeltme: Bilgisayardaki hataya “bug” denmesini Hopper icat etmedi; bu kelime ondan önce de kullanılıyordu. Ama 1947’de ekibinin bir rölenin içinde sıkışmış bir güve bulması ve bunu kayıt defterine yapıştırması, terimin bilgisayar dünyasında yayılmasına katkı sağladı.

    Katherine Johnson: Bilgisayarın hesabını kontrol eden kadın

    Katherine Johnson, NASA’da ve ondan önceki kurum NACA’da 1953’ten 1986’ya kadar uzay araçlarının yörüngelerini hesapladı. NASA, astronot John Glenn’in Dünya etrafındaki yörüngesini ilk kez elektronik bilgisayarlarla hesapladığında, sonuçları doğrulaması için Johnson’a başvurdu. Glenn, uçmayı kabul etmeden önce özellikle onun da hesaplara bakmasını istemişti. Johnson’ın hikâyesi 2016 yapımı Hidden Figures (Gizli Sayılar) filminde anlatılıyor.

    Margaret Hamilton: Aya giden yazılım

    Margaret Hamilton, MIT’de Apollo programının uçuş yazılımını geliştiren ekibi yönetti. Ekibinin yazdığı yazılım, hataları fark edip sistemi toparlayabilecek şekilde tasarlanmıştı. “Yazılım mühendisliği” terimini ilk kullananlardan biri de oydu. Bu terimi, yazılımı donanımdan ve diğer mühendislik dallarından ayırmak için kullandığını anlatıyor. Hamilton 2016’da ABD Başkanlık Özgürlük Madalyası’nı aldı.

    Bu hikâye bugün sana ne söylüyor?

    Bu dört kadının ortak bir yanı var: hepsi henüz tam olarak var olmayan bir şey üzerinde çalıştı. Ada, yapılmamış bir makine için program yazdı. Hopper, kimsenin inanmadığı bir fikri savundu. Hamilton, henüz adı bile konmamış bir alanın adını koydu. Johnson, makinenin hesabına güvenin henüz oluşmadığı bir dönemde o güveni sağlayan kişi oldu.

    Buradan çıkardığım ders şu: Bir alanda kendine benzeyen çok kişi görmemen, o alana ait olmadığın anlamına gelmez. Bazen yolu sen açarsın, arkandan gelenler de seni görür.

    Bilgisayar mühendisliğine Ada Lovelace sayesinde başlamadım. Ama bu yolda ilerlememin, düştüğüm anlarda yeniden kalkmamın sebeplerinden biri o oldu. Notlarını yalnızca baş harfleriyle imzalayan bir kadının bugün bilgisayar tarihinin en çok anılan isimlerinden biri olması, bana her seferinde devam etmemi hatırlatıyor.

    Bugün ne yapabilirsin?

    • Bir hikâye paylaş. Sana ilham veren bir kadın bilim insanının ya da mühendisin hikâyesini #AdaLovelaceDay etiketiyle paylaş.
    • İlk satırını yaz. Ada’nın yaptığı şey özünde bir makineye adım adım ne yapacağını anlatmaktı. Sen de bugün başlayabilirsin: Python Dersi 1: Python Nedir, Ne İşe Yarar?
    • Birine cesaret ver. Çevrende teknolojiye ilgi duyan bir kız ya da kadın varsa, ona bu yazıyı gönder ve neden başarabileceğini düşündüğünü söyle.

    Ada’nın notları “AAL” imzasıyla yayımlanmıştı. Bugün senin adının tamamıyla yazacağın satırları merak ediyorum.

    Kaynaklar

  • Python Kurulumu ve Google Colab: Adım Adım İlk Programın (Python Dersi 2)

    Python Kurulumu ve Google Colab: Adım Adım İlk Programın (Python Dersi 2)

    5–7 dakika

    İlk derste Python’ın ne olduğunu ve neden iyi bir ilk dil olduğunu konuştuk. Bugün iki şey yapacaksın: Python’ı Windows bilgisayarına kuracak ve bu seri boyunca kod yazacağımız yer olan Google Colab’da ilk programını çalıştıracaksın.

    Neden ikisi birden? Python’ı bilgisayarına kurmayı bilmek, ileride kendi projelerini yaparken işine yarayacak. Ama derslerin daha kolay takip edilmesi için seri boyunca Google Colab kullanacağız. Colab tarayıcıda çalışır; kurulum yapamasan bile derslere devam edebilirsin.

    Kurulum bölümü Windows için yazıldı. Mac kullanıyorsan kurulum dosyasını python.org/downloads adresinden indirebilirsin. Colab bölümü ise her bilgisayarda aynı çalışır.

    Bu dersin Colab bölümü ve alıştırmaları hazır bir not defterinde: Colab’da Aç. Serinin tüm not defterleri GitHub’daki python-dersleri deposunda.

    Hangi Python sürümünü kurmalısın?

    Kısa cevap: en güncel Python 3 sürümünü. Bu yazıyı yazdığım sırada Python’ın resmî belgeleri Python 3.15 sürümünü gösteriyor. Sürüm numarasını ezberlemene gerek yok, çünkü aşağıdaki yöntem en güncel sürümü kendisi kurar.

    Bilmen gereken bir değişiklik var: Windows’ta Python kurmak eskisinden farklı. Python’ın resmî Windows belgesi artık Python Install Manager (Python kurulum yöneticisi) adı verilen aracı öneriyor. Eski .exe kurulum dosyası 3.14 sürümünden beri kullanımdan kaldırılacak olarak işaretli ve 3.16’dan itibaren hiç üretilmeyecek.

    Bu yüzden eski bir video ya da yazı “Add python.exe to PATH kutusunu işaretle” diyorsa şaşırma; o adım eski kurulum dosyasına ait. Bir de şu: anlatımda print "Merhaba" gibi parantezsiz kod görürsen o kaynak artık kullanılmayan Python 2 için yazılmıştır, kapatabilirsin.

    Windows’a Python kurulumu

    Kurulum yöneticisini iki yoldan biriyle alabilirsin. Resmî belgeye göre iki yol da aynı aracı kurar.

    Yol 1: Microsoft Store

    1. Başlat menüsünden Microsoft Store’u aç.
    2. Arama kutusuna “Python Install Manager” yaz. Yayıncının Python Software Foundation olduğunu kontrol et.
    3. Yükle düğmesine bas ve bitmesini bekle.

    Yol 2: python.org

    1. python.org/downloads sayfasına git.
    2. Windows için Python Install Manager’ı indir.
    3. İnen dosyaya çift tıkla ve Yükle’yi (Install) seç.

    İlk çalıştırma

    Kurulum bitince Başlat menüsüne “Terminal” yaz ve aç. Terminal, bilgisayara yazıyla komut verdiğin penceredir. Bilgisayarında Terminal yoksa “Komut İstemi”ni açabilirsin. Şunu yaz ve Enter’a bas:

    python

    Bilgisayarında hiç Python yoksa kurulum yöneticisi en güncel sürümü otomatik olarak indirip kurar. Bu sırada bir klasörü PATH’e eklemek isteyip istemediğini sorabilir. PATH, Windows’un komutları aradığı klasörlerin listesidir. Resmî belgeye göre bu adım isteğe bağlı; bu seri için gerekmiyor.

    Kurulumu kontrol et

    Yeni bir terminal penceresi aç ve şunu yaz:

    python --version

    Ekranda Python 3.15.0 gibi bir satır görmelisin. Son rakamlar farklı olabilir; 3 ile başlaması yeterli. Bilgisayarında birden fazla Python sürümü varsa py list komutu hepsini ve hangisinin varsayılan olduğunu gösterir.

    İlk komutların

    Terminale yalnızca python yazıp Enter’a basınca satır başında >>> işareti belirir. Buna shell (kabuk) denir: yazdığın her satırı anında çalıştırır ve sonucu gösterir. İki komut dene:

    >>> print("Merhaba")
    Merhaba
    >>> 2 + 3
    5

    Shell’den çıkmak için exit() yaz. Shell küçük denemeler için birebirdir ama pencereyi kapatınca yazdığın her şey kaybolur. Bu yüzden seride kodlarımızı Google Colab’da yazacağız.

    Bu seride neden Google Colab kullanacağız?

    Google Colab, Python kodunu tarayıcıda yazıp çalıştırmana yarayan bir Google aracıdır. Bu seri için üç avantajı var:

    • Kurulum gerektirmez. Google hesabınla açılır. Okul ya da iş bilgisayarına program kuramıyorsan bile derslere devam edersin.
    • Her bilgisayarda aynıdır. Windows, Mac ya da tablet fark etmez; ekran görüntüleri herkesinkine benzer.
    • Veri bilimi için hazırdır. NumPy ve Pandas gibi kütüphaneler yüklü gelir. Serinin sonlarına doğru bunlarla çalışırken ek kurulum yapmayacağız.

    Bilmen gereken iki şey de var: Colab’ı kullanmak için internet bağlantısı şart. Bir de Colab’daki Python sürümünü Google belirler, bilgisayarına kurduğun sürümden biraz eski olabilir. Bu seride yazacağımız kodlar için bu fark sorun yaratmaz.

    Google Colab’da ilk programın

    1. Tarayıcında colab.research.google.com adresine git ve Google hesabınla giriş yap.
    2. Yeni not defteri (New notebook) seçeneğine tıkla.
    3. Sol üstteki dosya adına tıkla ve python-ders-2 yap.

    Karşına çıkan kutuya hücre (cell) denir. Kodunu hücreye yazar, çalıştırırsın; sonuç hemen altında görünür. Bir not defterinde istediğin kadar hücre olabilir; yenisini eklemek için üstteki + Kod düğmesini kullan.

    İlk hücreye Ders 1’deki kodu yapıştır:

    # Bir öğrencinin üç sınav notu
    notlar = [70, 80, 90]
    # Ortalamayı bul: notların toplamını, not sayısına böl
    ortalama = sum(notlar) / len(notlar)
    # Sonucu ekrana yazdır
    print("Ortalaman:", ortalama)
    # Ortalamaya göre karar ver
    if ortalama >= 50:
    print("Dersi geçtin")
    else:
    print("Bir daha denemelisin")

    Hücreyi çalıştırmak için solundaki üçgen düğmeye bas ya da Shift + Enter tuşlarını kullan. İlk çalıştırma birkaç saniye sürebilir, çünkü Colab arka planda sana bir çalışma ortamı hazırlıyor. Hücrenin altında şu iki satırı gördüysen ilk programını çalıştırdın:

    Ortalaman: 80.0
    Dersi geçtin

    Not defterin nerede saklanıyor?

    Colab not defterlerini Google Drive’ında, “Colab Notebooks” adındaki klasörde saklar. Ertesi gün kaldığın yerden devam etmek için o dosyayı açman yeter. Her ders için ayrı bir not defteri açmanı öneririm: python-ders-3, python-ders-4 gibi.

    Sık karşılaşılan hatalar

    python yazınca Microsoft Store açılıyor ya da komut bulunamıyor

    Windows’un kendi kısayolları karışmış olabilir. Başlat menüsüne “Manage app execution aliases” yaz (Türkçe Windows’ta “Uygulama yürütme diğer adlarını yönet” olarak görünür) ve “Python (default)” satırlarının açık olduğunu kontrol et. Zaten açıksa kapatıp yeniden aç. Sonra terminali kapatıp yeni bir pencere aç. Bu çözüm Python’ın resmî Windows belgesinde de öneriliyor.

    Colab’da hücreyi çalıştırdım ama “NameError” aldım

    Colab’da her hücre ayrı çalışır ama aynı belleği paylaşır. Bir hücrede tanımladığın notlar gibi bir değeri başka hücrede kullanacaksan, önce onu tanımlayan hücreyi çalıştırman gerekir. Not defterini yeniden açtığında hücreleri yukarıdan aşağı sırayla çalıştır.

    “SyntaxError: ‘(‘ was never closed”

    Açtığın bir parantezi kapatmamışsın. Hata mesajı sorunun hangi satırda olduğunu da söyler; o satıra bak. Hata mesajlarını okumayı erken öğrenmek seni çok zamandan kurtarır.

    Bu derste ne öğrendin?

    • Windows’ta Python artık Python Install Manager ile kuruluyor; eski .exe kurulum dosyası emekliye ayrılıyor.
    • python --version kurulu sürümü gösterir. >>> işaretli shell küçük denemeler içindir.
    • Bu seride kodları Google Colab’da yazacağız: kodu hücreye yazıp Shift + Enter ile çalıştırırsın.
    • Colab not defterlerin Google Drive’daki “Colab Notebooks” klasöründe durur.

    Alıştırmalar

    1. Hücrede hesap yap. Colab’da yeni bir hücre aç, 7 * 6 yaz ve çalıştır. Sonuç ne çıktı?
    2. Kendi notlarını gir. İlk hücredeki notları [40, 45, 50] yap ve hücreyi yeniden çalıştır. Ekranda ne yazıyor?
    3. Bir satır ekle. Aynı hücrenin en sonuna, satır başında boşluk bırakmadan print("Bu benim ilk Python programım") satırını ekle ve çalıştır. Sonra aynı satırın başına dört boşluk koyup tekrar çalıştır. Ne değişti?
    4. Bilerek hata yap. Bir satırdaki kapanış parantezini sil ve hücreyi çalıştır. Hata mesajı sana ne söylüyor?

    Cevaplar

    1. Sonuç 42. Colab’da hücrenin son satırı bir işlemse, print yazmasan da sonucu hücrenin altında görürsün.
    2. Ortalaman: 45.0 ve Bir daha denemelisin. Ortalama 50’nin altında kaldığı için else kısmı çalışır.
    3. Boşluksuz yazdığında satır her seferinde görünür. Dört boşlukla yazdığında satır else bloğunun parçası olur ve ortalaman 50 ya da üstündeyse hiç görünmez. Ders 1’de bahsettiğimiz girinti tam olarak budur.
    4. SyntaxError: '(' was never closed. Python parantezin kapanmadığını ve sorunun hangi satırda olduğunu söyler.

    Sıradaki ders

    Bir sonraki derste değişkenleri ve veri tiplerini öğreneceğiz. Ders 1’den beri bekleyen sorunun cevabı da orada: ortalama neden 80 değil de 80.0 çıkıyor? Değişkenler ve Veri Tipleri (Python Dersi 3)