← Ana Sayfaya Dön
🐍 Profil 4 - Python'a Yolculuk

EduBot 2.0 - Profil 4: Python'a Yolculuk

Gün 1: Python'a Merhaba ve Temel Kavramlar

Python dünyasına hoş geldiniz! Python, öğrenmesi kolay, okunabilirliği yüksek ve çok yönlü bir programlama dilidir. Guido van Rossum tarafından 1990'ların başında geliştirilen bu dil, basit ve anlaşılır sözdizimi (syntax) sayesinde programlamaya yeni başlayanlar için ideal bir başlangıç noktasıdır. Web geliştirmeden veri bilimine, yapay zekâdan oyun programlamaya kadar geniş bir yelpazede kullanılır. Bu esneklik, Python'u günümüzün en popüler dillerinden biri yapmaktadır. Eğitimimizin ilk gününde, bu güçlü dilin temel yapı taşlarını tanıyacak ve ilk kodlarımızı yazacağız.

Programlamanın en temel kavramı "değişken"lerdir. Değişkenler, verileri hafızada saklamak için kullanılan isimlendirilmiş kutucuklar gibidir. Python'da bir değişken oluşturmak için ona bir isim verir ve `=` operatörü ile bir değer atarsınız. Örneğin, `mesaj = "Merhaba Dünya"` kodu, `"Merhaba Dünya"` metnini `mesaj` adında bir değişkende saklar. Python'da değişkenlerin türünü önceden belirtmenize gerek yoktur; dil, atadığınız değere göre türü otomatik olarak anlar. Bu özelliğe "dinamik tipleme" denir ve program yazmayı oldukça hızlandırır.

Python'da birçok temel veri türü bulunur. En sık karşılaşacaklarımız; metinsel ifadeler için String (str, örn: `"Python"`), tam sayılar için Integer (int, örn: `10`), ondalıklı sayılar için Float (float, örn: `3.14`) ve mantıksal doğru/yanlış değerleri için Boolean'dır (bool, örn: `True` veya `False`). Bu veri türlerini anlamak, programlarınızda verileri doğru şekilde işlemeniz için kritik öneme sahiptir. Örneğin, iki sayıyı toplamak için `int` veya `float` kullanırken, bir kullanıcı adını saklamak için `str` kullanırsınız.

Yazdığımız kodun sonucunu veya bir değişkenin değerini görmek için `print()` fonksiyonunu kullanırız. Bu fonksiyon, parantez içine yazdığınız değeri ekrana basar. Bu, programınızın adımlarını takip etmek ve hataları ayıklamak (debugging) için en temel araçlardan biridir. Program yazarken neyin nerede çalıştığını anlamak için `print()` fonksiyonunu bolca kullanmaktan çekinmeyin. Şimdi, öğrendiklerimizi birleştiren basit bir kod örneğiyle ilk günümüzü pekiştirelim.

# Değişkenler oluşturma ve veri türleri
ders_adi = "Python'a Giriş"  # String (str)
gun_sayisi = 1             # Integer (int)
ilerleme_yuzdesi = 20.0    # Float (float)
tamamlandi_mi = False      # Boolean (bool)

# Değişkenlerin değerlerini ekrana yazdırma
print("Ders Adı:", ders_adi)
print("Gün:", gun_sayisi)
print("İlerleme:", ilerleme_yuzdesi, "%")
print("Eğitim tamamlandı mı?:", tamamlandi_mi)
Ders Adı: Python'a Giriş
Gün: 1
İlerleme: 20.0 %
Eğitim tamamlandı mı?: False

Soru 1: Aşağıdakilerden hangisi, `kullanici_adi` adında bir değişkene metinsel bir değer atamanın doğru yoludur?

Gün 2: Operatörler ve Kullanıcıdan Girdi Alma

İkinci günümüze hoş geldiniz! Dün değişkenleri ve temel veri türlerini öğrendik. Bugün ise bu verilerle nasıl işlemler yapacağımızı, yani "operatörleri" ve programımızı nasıl interaktif hale getirebileceğimizi, yani kullanıcıdan nasıl "girdi alacağımızı" görececeğiz. Operatörler, programlamanın temel matematiksel ve mantıksal işlemlerini yapmamızı sağlayan özel sembollerdir. Bunlar olmadan verileri manipüle etmek veya karşılaştırmak imkansız olurdu.

Python'da birkaç temel operatör kategorisi bulunur. En yaygın olanları aritmetik operatörlerdir: Toplama (`+`), çıkarma (`-`), çarpma (`*`), bölme (`/`), kalanı bulma (modülüs, `%`) ve üs alma (`**`). Bu operatörler, sayılarla matematiksel hesaplamalar yapmanızı sağlar. Bir diğer önemli kategori ise karşılaştırma operatörleridir: Eşit mi (`==`), eşit değil mi (`!=`), büyük mü (`>`), küçük mü (`<`), büyük veya eşit mi (`>=`), küçük veya eşit mi (`<=`). Bu operatörler, iki değeri karşılaştırır ve sonuç olarak bir Boolean (`True` veya `False`) değer döndürür. Bu, programın akışını kontrol etmek için çok önemlidir.

Programlarımızı daha dinamik ve kullanışlı hale getirmek için kullanıcıyla etkileşime girmemiz gerekir. Python'da bunu `input()` fonksiyonu ile yaparız. Bu fonksiyon, program çalıştığında kullanıcıdan bir metin girmesini ister ve girilen metni bir string olarak geri döndürür. Örneğin, `isim = input("Adınız nedir? ")` kodu, ekranda "Adınız nedir? " sorusunu gösterir ve kullanıcının yazdığı değeri `isim` değişkenine atar. Unutulmaması gereken en önemli nokta, `input()` fonksiyonunun her zaman bir `str` (string) döndürdüğüdür. Eğer kullanıcıdan bir sayı alıp matematiksel işlem yapmak istiyorsanız, bu string'i bir sayı türüne (örn: `int` veya `float`) dönüştürmeniz gerekir.

`input()` ile alınan string değeri sayıya dönüştürme işlemine "tür dönüşümü" (type casting) denir. Örneğin, `yas_str = input("Yaşınızı girin: ")` ile aldığınız değeri doğrudan matematiksel bir işlemde kullanamazsınız. Bunu bir tam sayıya çevirmek için `yas_int = int(yas_str)` kodunu kullanmalısınız. Artık `yas_int` değişkeni ile hesaplamalar yapabilirsiniz. Bu dönüşüm sırasında kullanıcı sayı yerine harf girerse program hata verecektir. Bu tür hata durumlarını yönetmeyi ilerleyen günlerde öğreneceğiz. Şimdilik, doğru türde veri girildiğini varsayarak ilerleyelim.

# Kullanıcıdan iki sayı alalım
sayi1_str = input("Birinci sayıyı girin: ")
sayi2_str = input("İkinci sayıyı girin: ")

# Alınan string'leri integer'a dönüştürelim
sayi1 = int(sayi1_str)
sayi2 = int(sayi2_str)

# Aritmetik operatörleri kullanarak toplama yapalım
toplam = sayi1 + sayi2

# Sonucu ekrana yazdıralım
print("Girdiğiniz sayıların toplamı:", toplam)
(Kullanıcı 15 ve 20 girdiğinde)
Birinci sayıyı girin: 15
İkinci sayıyı girin: 20
Girdiğiniz sayıların toplamı: 35

Soru 2: Python'da `10 % 3` işleminin sonucu nedir?

Gün 3: Koşullu İfadeler (if, elif, else)

Üçüncü günümüzde, programlarımıza karar verme yeteneği kazandıracağız. Gerçek hayatta olduğu gibi, programlar da belirli koşullara göre farklı yollar izlemelidir. Örneğin, bir kullanıcı adı doğruysa giriş yapmalı, yanlışsa hata mesajı göstermelidir. İşte bu tür karar mekanizmalarını Python'da "koşullu ifadeler" ile kurarız. Bu yapının temel taşları `if`, `elif` ve `else` anahtar kelimeleridir. Bu ifadeler, bir programın akışını kontrol etmenin en temel yoludur ve neredeyse yazdığınız her programda karşınıza çıkacaktır.

En temel koşullu ifade `if` (eğer) yapısıdır. `if` anahtar kelimesini bir koşul takip eder ve bu koşul doğru (`True`) ise `if` bloğunun altındaki kodlar çalıştırılır. Koşul yanlışsa (`False`), o blok atlanır. Python'da bir kod bloğunun nerede başlayıp nerede bittiğini belirtmek için "girinti" (indentation) kullanılır. `if` satırından sonra gelen ve daha içeriden başlayan tüm kodlar, o `if` bloğuna aittir. Bu, Python'un en belirgin ve okunabilirliği artıran özelliklerinden biridir. Girintileme genellikle dört boşluk bırakılarak yapılır ve tutarlı olması çok önemlidir.

Bazen tek bir koşul yeterli olmaz. Bir koşul yanlış olduğunda başka bir koşulu kontrol etmek isteyebiliriz. İşte bu noktada `elif` (else if - değilse eğer) devreye girer. `if` koşulu yanlışsa, Python bir sonraki `elif` koşulunu kontrol eder. Eğer o doğruysa, `elif` bloğundaki kodu çalıştırır ve yapıdan çıkar. İstediğiniz kadar `elif` bloğu ekleyebilirsiniz. Eğer `if` ve tüm `elif` koşulları yanlışsa ne olacak? İşte bu durumu ele almak için `else` (değilse) kullanılır. `else` bloğu, kendisinden önceki hiçbir koşul sağlanmadığında çalışacak olan varsayılan kod bloğudur ve bir koşul belirtmez.

`if-elif-else` zinciri, programınıza karmaşık karar ağaçları oluşturma gücü verir. Örneğin, bir öğrencinin notuna göre "Geçti", "Şartlı Geçti" veya "Kaldı" gibi farklı sonuçlar üretebilirsiniz. Önce en yüksek not aralığını `if` ile kontrol eder, sonraki aralıkları `elif` ile devam ettirir ve son olarak en düşük durumu `else` ile yakalarsınız. Bu yapı, kodunuzu organize etmenize ve her olası senaryoyu mantıksal bir sırayla ele almanıza olanak tanır. Unutmayın, bu zincirde sadece bir blok çalışır; doğru olan ilk koşulun bloğu işletilir ve diğerleri atlanır.

# Kullanıcıdan bir sayı alalım ve tür dönüşümü yapalım
sayi_str = input("Lütfen bir tam sayı girin: ")
sayi = int(sayi_str)

# Koşullu ifadelerle sayıyı kontrol edelim
if sayi > 0:
    print("Girdiğiniz sayı pozitiftir.")
elif sayi < 0:
    print("Girdiğiniz sayı negatiftir.")
else:
    print("Girdiğiniz sayı sıfırdır.")

print("Kontrol tamamlandı.")
(Kullanıcı -5 girdiğinde)
Lütfen bir tam sayı girin: -5
Girdiğiniz sayı negatiftir.
Kontrol tamamlandı.

Soru 3: Bir `if` koşulu `False` olduğunda, bir sonraki alternatifi kontrol etmek için hangi anahtar kelime kullanılır?

Gün 4: Listeler ve Temel Liste Metotları

Dördüncü günümüze ulaştık! Şimdiye kadar tekil verileri (bir sayı, bir metin) değişkenlerde saklamayı öğrendik. Ancak çoğu zaman birbiriyle ilişkili birden fazla veriyi bir arada tutmamız gerekir. Örneğin, bir alışveriş listesindeki ürünler, bir sınıftaki öğrenciler veya haftanın günleri. İşte bu noktada Python'un en güçlü ve esnek veri yapılarından biri olan "listeler" devreye girer. Listeler, sıralı ve değiştirilebilir bir veri koleksiyonudur. Yani elemanları belirli bir sıraya sahiptir ve bu elemanları program çalışırken ekleyebilir, silebilir veya güncelleyebilirsiniz.

Python'da bir liste oluşturmak oldukça basittir. Köşeli parantezler `[]` içine, elemanları virgülle ayırarak yazarız. Örneğin, `meyveler = ["elma", "armut", "çilek"]` kodu, üç string elemanından oluşan bir liste oluşturur. Listeler homojen olmak zorunda değildir; yani farklı veri türlerini aynı listede barındırabilirler: `karisik_liste = [1, "merhaba", 3.14, True]`. Bir listenin elemanlarına erişmek için "indeks" numarasını kullanırız. İndeksleme, 0'dan başlar. Yani `meyveler` listesinin ilk elemanına `meyveler[0]` ile, ikinci elemanına `meyveler[1]` ile erişiriz.

Listeler "değiştirilebilir" (mutable) olduğu için üzerlerinde birçok işlem yapabiliriz. Bu işlemleri yapmak için listelerin kendine özgü "metotları" vardır. Metotlar, bir nesneyle ilişkili fonksiyonlardır ve `nesne.metot()` şeklinde çağrılırlar. En sık kullanılan liste metotlarından bazıları şunlardır: `.append(eleman)` listenin sonuna yeni bir eleman ekler, `.remove(eleman)` listeden belirtilen elemanın ilk bulunanını siler, `.pop(indeks)` belirtilen indeksteki elemanı siler ve geri döndürür, `.sort()` listeyi sıralar. Ayrıca, bir listenin kaç elemandan oluştuğunu öğrenmek için `len()` fonksiyonunu kullanırız: `len(meyveler)`.

Listelerle çalışırken "dilimleme" (slicing) tekniği de çok kullanışlıdır. Bu, bir listenin belirli bir aralıktaki alt kümesini almanızı sağlar. `liste[baslangic:bitis]` sözdizimi ile başlangıç indeksinden bitiş indeksine kadar (bitiş indeksi dahil değil) olan elemanları seçebilirsiniz. Örneğin, `haftanin_gunleri[0:5]` Pazartesi'den Cuma'ya kadar olan günleri içeren yeni bir liste döndürür. Bu temel metotlar ve teknikler, Python'da veri gruplarını verimli bir şekilde yönetmenizin temelini oluşturur ve veri odaklı programlar yazarken vazgeçilmezdir.

# Boş bir yapılacaklar listesi oluşturalım
yapilacaklar = []

# .append() metodu ile listeye elemanlar ekleyelim
yapilacaklar.append("Python çalış")
yapilacaklar.append("Proje geliştir")
yapilacaklar.append("Spor yap")

print("Yapılacaklar Listesi:", yapilacaklar)
print("Listedeki görev sayısı:", len(yapilacaklar))

# .remove() metodu ile bir görevi tamamlayalım (silelim)
yapilacaklar.remove("Spor yap")

print("Güncel Liste:", yapilacaklar)
Yapılacaklar Listesi: ['Python çalış', 'Proje geliştir', 'Spor yap']
Listedeki görev sayısı: 3
Güncel Liste: ['Python çalış', 'Proje geliştir']

Soru 4: `sayilar = [10, 20, 30, 40]` listesinin ilk elemanına nasıl erişilir?

Gün 5: For Döngüleri ile Tekrar Eden İşlemler

Eğitimimizin beşinci gününe, yani ilk haftanın sonuna hoş geldiniz! Bugün, programlamanın en temel ve güçlü konseptlerinden birini öğreneceğiz: "döngüler". Döngüler, bir kod bloğunu belirli bir koşul sağlandığı sürece veya bir koleksiyondaki her bir eleman için tekrar tekrar çalıştırmamızı sağlar. Bu, manuel olarak tekrar tekrar yazmak zorunda kalacağımız kodları otomatikleştirmemize olanak tanır. Özellikle listeler gibi veri koleksiyonları üzerinde çalışırken döngüler vazgeçilmezdir. Python'da en yaygın kullanılan döngü türü `for` döngüsüdür.

`for` döngüsü, bir "yinelenebilir" (iterable) nesnedeki (örneğin bir liste, bir string veya bir `range` nesnesi) her bir öğe için sırayla bir işlem yapmak amacıyla kullanılır. Sözdizimi oldukça sezgiseldir: `for eleman in koleksiyon:`. Bu yapı, "koleksiyondaki her bir eleman için, o elemanı geçici olarak `eleman` değişkenine ata ve aşağıdaki kod bloğunu çalıştır" anlamına gelir. Döngünün her bir adımına "iterasyon" denir. `if` bloğunda olduğu gibi, `for` döngüsünün altındaki kodlar da girintili olmalıdır.

Listeler, `for` döngüleri için mükemmel bir kullanım alanıdır. Bir listedeki her bir öğeyi ekrana yazdırmak, her bir sayıya belirli bir işlem uygulamak veya her bir metni değiştirmek gibi görevleri `for` döngüsü ile kolayca yapabiliriz. Örneğin, `for meyve in ["elma", "armut", "çilek"]:` döngüsü, ilk iterasyonda `meyve` değişkenine "elma" değerini, ikinci iterasyonda "armut" değerini ve son iterasyonda "çilek" değerini atar. Bu sayede, listenin uzunluğunu bilmesek bile her elemanı garantili bir şekilde işleyebiliriz.

Bazen belirli bir sayıda tekrar eden bir işlem yapmak isteriz. İşte bu noktada `range()` fonksiyonu devreye girer. `range(sayi)`, 0'dan başlayarak belirtilen sayıya kadar (o sayı dahil değil) bir sayı dizisi oluşturur. Örneğin, `range(5)` aslında `0, 1, 2, 3, 4` sayılarını temsil eder. `for i in range(5):` şeklinde bir döngü kurduğumuzda, bu döngü tam olarak 5 kez çalışır ve `i` değişkeni her iterasyonda sırasıyla `0, 1, 2, 3, 4` değerlerini alır. `range()` fonksiyonu, `range(baslangic, bitis, adim_sayisi)` gibi daha gelişmiş kullanımlara da olanak tanır. Döngüler, programlarınıza otomasyon ve verimlilik katarak çok daha karmaşık görevleri basit bir şekilde çözmenizi sağlar.

# Bir öğrenci listesi oluşturalım
ogrenciler = ["Ali", "Veli", "Ayşe", "Fatma"]

# for döngüsü ile her öğrenciyi ekrana yazdıralım
print("Sınıf Listesi:")
for ogrenci in ogrenciler:
    print("- " + ogrenci)

# range() fonksiyonu ile 1'den 5'e kadar sayıları yazdıralım
print("\nNumaralandırma:")
for sayi in range(1, 6): # 1'den başla, 6'ya kadar (6 dahil değil)
    print(sayi)
Sınıf Listesi:
- Ali
- Veli
- Ayşe
- Fatma

Numaralandırma:
1
2
3
4
5

Soru 5: Aşağıdaki kod parçacıklarından hangisi, ekrana 0, 1, 2, 3, 4 sayılarını yazdırır?