Python Programlamaya Giriş

Python, okunabilir sözdizimi ve güçlü kütüphaneleriyle dünyanın en popüler programlama dillerinden biridir. Web geliştirme, veri bilimi, yapay zeka, otomasyon ve daha birçok alanda kullanılır.

Python Neden Öğrenmelisiniz?

merhaba.py

# Python'a Hoşgeldiniz!
print("Merhaba Dünya!")
print("FediaTech'e Hoşgeldiniz!")

# Kullanıcıdan isim alma
isim = input("Adınız nedir🔹 ")
print(f"Hoşgeldin, {isim}!")

# Basit hesaplama
sayi1 = int(input("Birinci sayı: "))
sayi2 = int(input("İkinci sayı: "))
toplam = sayi1 + sayi2
print(f"{sayi1} + {sayi2} = {toplam}")
                
🔹 İpucu: Python'u bilgisayarınıza kurmak için python.org adresinden indirin. VS Code veya PyCharm ile kod yazabilirsiniz.

Değişkenler ve Veri Tipleri

Değişkenler, verileri saklamak için kullanılır. Python dinamik tipli bir dildir, yani değişken türünü otomatik algılar.

Temel Veri Tipleri

Veri Tipi Açıklama Örnek
int Tam sayı 42, -100, 0
float Ondalıklı sayı 3.14, -0.5
str Metin (string) "Merhaba", 'Python'
bool Mantıksal True, False
list Liste [1, 2, 3]
dict Sözlük {"ad": "Ali"}
tuple Değiştirilemez liste (1, 2, 3)
degiskenler.py

# Değişken tanımlama
isim = "Ayşe"           # str
yas = 17                # int
boy = 1.65              # float
ogrenci_mi = True       # bool

# Tip kontrolü
print(type(isim))       # <class 'str'>
print(type(yas))        # <class 'int'>

# f-string ile formatlama
print(f"Ad: {isim}")
print(f"Yaş: {yas}")
print(f"Boy: {boy:.2f} cm")

# Tip dönüşümleri
metin_sayi = "42"
sayi = int(metin_sayi)      # str -> int
ondalik = float(metin_sayi) # str -> float
yazi = str(100)             # int -> str

# Birden fazla değişken atama
a, b, c = 1, 2, 3
x = y = z = 0

# Değişken takas
a, b = b, a  # Python'da kolay takas!
                

String İşlemleri

string_islemleri.py

metin = "Python Programlama"

# String metodları
print(metin.upper())        # PYTHON PROGRAMLAMA
print(metin.lower())        # python programlama
print(metin.title())        # Python Programlama
print(metin.replace("Python", "Java"))  # Java Programlama

# Dilimleme (Slicing)
print(metin[0])             # P (ilk karakter)
print(metin[-1])            # a (son karakter)
print(metin[0:6])           # Python
print(metin[7:])            # Programlama
print(metin[::-1])          # Tersine çevir

# Arama ve kontrol
print("Python" in metin)    # True
print(metin.startswith("Py"))  # True
print(metin.endswith("ma"))    # True
print(metin.find("Pro"))    # 7 (indeks)
print(len(metin))           # 18 (uzunluk)

# Birleştirme
ad = "Ali"
soyad = "Yılmaz"
tam_ad = ad + " " + soyad   # Ali Yılmaz
print(f"{ad} {soyad}")      # f-string ile
                

Koşullar (If-Else)

Koşullar, programınızın farklı durumlara göre farklı işlemler yapmasını sağlar.

If-Elif-Else Yapısı

kosullar.py

not_ortalamasi = 75

# Basit if-else
if not_ortalamasi >= 50:
    print("Geçtiniz! ?")
else:
    print("Kaldınız! ?")

# If-elif-else
if not_ortalamasi >= 90:
    print("Pekiyi (AA)")
elif not_ortalamasi >= 80:
    print("İyi (BA)")
elif not_ortalamasi >= 70:
    print("Orta (BB)")
elif not_ortalamasi >= 60:
    print("Geçer (CC)")
elif not_ortalamasi >= 50:
    print("Zar zor geçtin (DD)")
else:
    print("Kaldın (FF)")

# Mantıksal operatörler
yas = 18
ehliyet = True

if yas >= 18 and ehliyet:
    print("Araba kullanabilirsiniz")

if yas < 12 or yas > 65:
    print("İndirimli bilet")

if not ehliyet:
    print("Ehliyet almanız gerekiyor")
                

Karşılaştırma Operatörleri

Operatör Açıklama Örnek
== Eşit mi 5 == 5 › True
!= Eşit değil mi 5 != 3 › True
> Büyük mü 5 > 3 › True
< Küçük mü 3 < 5 › True
>= Büyük veya eşit mi 5 >= 5 › True
<= Küçük veya eşit mi 3 <= 5 › True

Ternary Operatör

ternary.py

yas = 20

# Tek satırda koşul
durum = "Yetişkin" if yas >= 18 else "Çocuk"
print(durum)

# Örnek: Min/Max bulma
a, b = 10, 20
buyuk = a if a > b else b
print(f"Büyük olan: {buyuk}")
                

Döngüler

Döngüler, kod bloklarını tekrar tekrar çalıştırmak için kullanılır.

For Döngüsü

for_dongusu.py

# range() ile sayma
for i in range(5):
    print(i)  # 0, 1, 2, 3, 4

for i in range(1, 11):
    print(i)  # 1'den 10'a

for i in range(0, 20, 2):
    print(i)  # Çift sayılar: 0, 2, 4, ...

# Liste üzerinde döngü
meyveler = ["Elma", "Armut", "Muz"]
for meyve in meyveler:
    print(f"🔹 {meyve}")

# enumerate ile index alma
for index, meyve in enumerate(meyveler):
    print(f"{index + 1}. {meyve}")

# String üzerinde döngü
for harf in "Python":
    print(harf, end="-")  # P-y-t-h-o-n-

# Çarpım tablosu
print("\n=== ÇARPIM TABLOSU ===")
for i in range(1, 11):
    for j in range(1, 11):
        print(f"{i*j:4}", end="")
    print()
                

While Döngüsü

while_dongusu.py

# Basit while
sayac = 1
while sayac <= 5:
    print(f"Sayaç: {sayac}")
    sayac += 1

# Şifre kontrolü
dogru_sifre = "1234"
while True:
    girilen = input("Şifre girin: ")
    if girilen == dogru_sifre:
        print("🔹 Giriş başarılı!")
        break
    else:
        print("🔹 Yanlış şifre!")

# break ve continue
for i in range(10):
    if i == 3:
        continue  # 3'ü atla
    if i == 7:
        break     # 7'de dur
    print(i)      # 0, 1, 2, 4, 5, 6
                

List Comprehension

list_comprehension.py

# Klasik yöntem
kareler = []
for i in range(1, 6):
    kareler.append(i ** 2)

# List Comprehension (Tek satırda!)
kareler = [i ** 2 for i in range(1, 6)]
print(kareler)  # [1, 4, 9, 16, 25]

# Koşullu comprehension
cift_sayilar = [i for i in range(20) if i % 2 == 0]
print(cift_sayilar)  # [0, 2, 4, 6, 8, ...]

# String işleme
isimler = ["ali", "ayşe", "mehmet"]
buyuk_isimler = [isim.title() for isim in isimler]
print(buyuk_isimler)  # ['Ali', 'Ayşe', 'Mehmet']
                

Fonksiyonlar

Fonksiyonlar, tekrar kullanılabilir kod bloklarıdır. Kodunuzu organize eder ve DRY (Don't Repeat Yourself) prensibine uymanızı sağlar.

Fonksiyon Tanımlama

fonksiyonlar.py

# Basit fonksiyon
def selamla():
    print("Merhaba!")

# Parametreli fonksiyon
def selamla_kisi(isim):
    print(f"Merhaba, {isim}!")

# Return ile değer döndürme
def topla(a, b):
    return a + b

def kare_al(sayi):
    """Bir sayının karesini döndürür"""
    return sayi ** 2

# Varsayılan parametre
def selam(isim="Misafir", saat="sabah"):
    print(f"Günaydın {isim}, iyi {saat}lar!")

# Kullanım
selamla()
selamla_kisi("Ali")
print(topla(5, 3))  # 8
print(kare_al(5))   # 25
selam()             # Günaydın Misafir, iyi sabahlar!
selam("Ayşe")       # Günaydın Ayşe, iyi sabahlar!
                

*args ve **kwargs

args_kwargs.py

# *args - Sınırsız sayıda argüman
def toplam(*sayilar):
    return sum(sayilar)

print(toplam(1, 2, 3))       # 6
print(toplam(1, 2, 3, 4, 5)) # 15

# **kwargs - Anahtar-değer argümanları
def ogrenci_bilgi(**bilgiler):
    for anahtar, deger in bilgiler.items():
        print(f"{anahtar}: {deger}")

ogrenci_bilgi(ad="Ali", yas=17, sinif="11-A")

# Lambda fonksiyonlar (Tek satır)
kare = lambda x: x ** 2
topla = lambda a, b: a + b

print(kare(5))      # 25
print(topla(3, 4))  # 7

# Lambda ile sıralama
ogrenciler = [("Ali", 85), ("Ayşe", 92), ("Can", 78)]
ogrenciler.sort(key=lambda x: x[1], reverse=True)
print(ogrenciler)  # Nota göre azalan sıra
                

Listeler

Listeler, birden fazla veriyi tek bir değişkende saklamanızı sağlar. Sıralı, değiştirilebilir ve farklı türleri barındırabilir.

listeler.py

# Liste oluşturma
meyveler = ["Elma", "Armut", "Muz"]
sayilar = [1, 2, 3, 4, 5]
karisik = [1, "metin", True, 3.14]

# Elemanlara erişim
print(meyveler[0])    # Elma (ilk)
print(meyveler[-1])   # Muz (son)
print(meyveler[1:3])  # ['Armut', 'Muz']

# Eleman ekleme
meyveler.append("Çilek")      # Sona ekle
meyveler.insert(1, "Karpuz")  # Belirli konuma ekle
meyveler.extend(["Üzüm", "Kiraz"])  # Liste ekle

# Eleman silme
meyveler.remove("Armut")  # Değere göre sil
del meyveler[0]           # İndexe göre sil
son = meyveler.pop()      # Sondan al ve sil

# Arama
print("Muz" in meyveler)      # True
print(meyveler.index("Muz"))  # İndex bul
print(meyveler.count("Elma")) # Kaç tane var

# Sıralama
sayilar.sort()              # Artan sırala
sayilar.sort(reverse=True)  # Azalan sırala
sayilar.reverse()           # Tersine çevir

# Kopyalama
kopya = meyveler.copy()     # Yüzeysel kopya
kopya2 = meyveler[:]        # Dilimleme ile kopya

print(f"Uzunluk: {len(meyveler)}")
print(f"Min: {min(sayilar)}, Max: {max(sayilar)}")
print(f"Toplam: {sum(sayilar)}")
                

Çok Boyutlu Listeler

matris.py

# 2 boyutlu liste (Matris)
matris = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

print(matris[0])      # [1, 2, 3]
print(matris[1][2])   # 6

# Matris üzerinde döngü
for satir in matris:
    for eleman in satir:
        print(eleman, end=" ")
    print()
                

Sözlükler (Dictionary)

Sözlükler, anahtar-değer çiftleri şeklinde veri saklar. Hızlı erişim ve esnek veri yapısı sağlar.

sozlukler.py

# Sözlük oluşturma
ogrenci = {
    "ad": "Ali",
    "soyad": "Yılmaz",
    "yas": 17,
    "sinif": "11-A",
    "notlar": [85, 90, 78]
}

# Değere erişim
print(ogrenci["ad"])           # Ali
print(ogrenci.get("yas"))      # 17
print(ogrenci.get("adres", "Bilinmiyor"))  # Varsayılan değer

# Değer ekleme/güncelleme
ogrenci["email"] = "ali@okul.com"
ogrenci["yas"] = 18

# Değer silme
del ogrenci["email"]
soyad = ogrenci.pop("soyad")

# Döngü
for anahtar in ogrenci:
    print(f"{anahtar}: {ogrenci[anahtar]}")

# items() ile
for anahtar, deger in ogrenci.items():
    print(f"{anahtar}: {deger}")

# keys() ve values()
print(ogrenci.keys())    # Anahtarlar
print(ogrenci.values())  # Değerler

# İç içe sözlük
okul = {
    "11-A": {"ogretmen": "Ali Bey", "ogrenci_sayisi": 30},
    "11-B": {"ogretmen": "Ayşe Hanım", "ogrenci_sayisi": 28}
}

print(okul["11-A"]["ogretmen"])  # Ali Bey

# Dictionary Comprehension
kareler = {x: x**2 for x in range(1, 6)}
print(kareler)  # {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
                

Dosya İşlemleri

Python ile dosya okuma, yazma ve düzenleme işlemleri yapabilirsiniz.

Dosya Okuma ve Yazma

dosya_islemleri.py

# Dosya yazma
with open("ornek.txt", "w", encoding="utf-8") as dosya:
    dosya.write("Merhaba Dünya!\n")
    dosya.write("Bu bir Python dosyasıdır.\n")
    dosya.writelines(["Satır 1\n", "Satır 2\n", "Satır 3\n"])

# Dosya okuma
with open("ornek.txt", "r", encoding="utf-8") as dosya:
    icerik = dosya.read()       # Tümünü oku
    print(icerik)

with open("ornek.txt", "r", encoding="utf-8") as dosya:
    satirlar = dosya.readlines()  # Liste olarak
    for satir in satirlar:
        print(satir.strip())

# Dosyaya ekleme (append)
with open("ornek.txt", "a", encoding="utf-8") as dosya:
    dosya.write("Yeni eklenen satır\n")

# CSV okuma
import csv

with open("veriler.csv", "r", encoding="utf-8") as dosya:
    okuyucu = csv.reader(dosya)
    for satir in okuyucu:
        print(satir)

# JSON işlemleri
import json

veri = {"ad": "Ali", "yas": 17, "notlar": [85, 90]}

# JSON'a yazma
with open("veri.json", "w", encoding="utf-8") as dosya:
    json.dump(veri, dosya, ensure_ascii=False, indent=4)

# JSON'dan okuma
with open("veri.json", "r", encoding="utf-8") as dosya:
    yuklenen = json.load(dosya)
    print(yuklenen["ad"])
                
🔹 Dikkat: with kullanarak dosya açın - otomatik kapatılır ve hata yönetimi sağlar.

Nesne Yönelimli Programlama

OOP, gerçek dünyadaki kavramları sınıflar ve nesneler olarak modellemenizi sağlar.

Sınıf ve Nesne

siniflar.py

class Ogrenci:
    """Öğrenci sınıfı"""
    
    # Sınıf değişkeni
    okul = "FediaTech Lisesi"
    
    def __init__(self, ad, numara, sinif):
        # Instance değişkenleri
        self.ad = ad
        self.numara = numara
        self.sinif = sinif
        self.notlar = []
    
    def not_ekle(self, not_):
        self.notlar.append(not_)
    
    def ortalama_hesapla(self):
        if len(self.notlar) == 0:
            return 0
        return sum(self.notlar) / len(self.notlar)
    
    def bilgi_goster(self):
        print(f"Ad: {self.ad}")
        print(f"Numara: {self.numara}")
        print(f"Sınıf: {self.sinif}")
        print(f"Okul: {self.okul}")
        print(f"Ortalama: {self.ortalama_hesapla():.2f}")
    
    def __str__(self):
        return f"{self.ad} ({self.numara})"

# Nesne oluşturma
ogr1 = Ogrenci("Ali", 101, "11-A")
ogr2 = Ogrenci("Ayşe", 102, "11-B")

ogr1.not_ekle(85)
ogr1.not_ekle(90)
ogr1.not_ekle(78)

ogr1.bilgi_goster()
print(ogr1)  # __str__ kullanılır
                

Kalıtım (Inheritance)

kalitim.py

class Canli:
    def __init__(self, ad):
        self.ad = ad
    
    def ses_cikar(self):
        print("...")

class Kopek(Canli):
    def __init__(self, ad, cins):
        super().__init__(ad)
        self.cins = cins
    
    def ses_cikar(self):  # Override
        print("Hav hav!")
    
    def kuyruk_salla(self):
        print(f"{self.ad} kuyruğunu sallıyor!")

class Kedi(Canli):
    def ses_cikar(self):
        print("Miyav!")

# Kullanım
rex = Kopek("Rex", "Golden")
pamuk = Kedi("Pamuk")

rex.ses_cikar()     # Hav hav!
rex.kuyruk_salla()  # Rex kuyruğunu sallıyor!
pamuk.ses_cikar()   # Miyav!

# Polimorfizm
hayvanlar = [rex, pamuk]
for hayvan in hayvanlar:
    print(f"{hayvan.ad}: ", end="")
    hayvan.ses_cikar()
                

Yapay Zeka Temelleri

Python, yapay zeka ve makine öğrenmesi için en popüler dildir. İşte temel AI kavramları ve örnekleri:

NumPy ile Temel İşlemler

numpy_temelleri.py

import numpy as np

# Dizi oluşturma
a = np.array([1, 2, 3, 4, 5])
b = np.array([[1, 2, 3], [4, 5, 6]])

print(a * 2)        # [2, 4, 6, 8, 10]
print(a + b)        # Element-wise toplama
print(np.mean(a))   # Ortalama
print(np.std(a))    # Standart sapma

# Matris işlemleri
matris = np.zeros((3, 3))     # 3x3 sıfır matrisi
birimler = np.ones((2, 2))    # 2x2 birler matrisi
rastgele = np.random.rand(3, 3)  # Rastgele matris

# Lineer cebir
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])

print(np.dot(A, B))  # Matris çarpımı
print(np.linalg.det(A))  # Determinant
                

Basit Makine Öğrenmesi

basit_ml.py

from sklearn.linear_model import LinearRegression
import numpy as np

# Eğitim verisi: Çalışma saati vs Not
X = np.array([[1], [2], [3], [4], [5]])  # Çalışma saati
y = np.array([50, 60, 70, 80, 90])       # Not

# Model oluştur ve eğit
model = LinearRegression()
model.fit(X, y)

# Tahmin yap
saat = 6
tahmin = model.predict([[saat]])
print(f"{saat} saat çalışırsan tahmini not: {tahmin[0]:.0f}")

# Model performansı
print(f"R² skoru: {model.score(X, y):.2f}")
                

Basit Chatbot

chatbot.py

import random

class FediBot:
    def __init__(self):
        self.yanitlar = {
            "merhaba": ["Merhaba!", "Selam!", "Hey!"],
            "nasılsın": ["İyiyim, sen?", "Harikayım!"],
            "adın ne": ["Ben FediBot!", "FediBot benim adım."],
            "güle güle": ["Hoşça kal!", "Görüşürüz!"]
        }
    
    def yanit_ver(self, mesaj):
        mesaj = mesaj.lower().strip()
        
        for anahtar, yanitlar in self.yanitlar.items():
            if anahtar in mesaj:
                return random.choice(yanitlar)
        
        return "Anlayamadım, başka bir şey sorar mısın?"
    
    def sohbet_baslat(self):
        print("FediBot: Merhaba! Benimle sohbet edebilirsin. 'çıkış' yazarak bitirebilirsin.\n")
        
        while True:
            kullanici = input("Sen: ")
            if kullanici.lower() == "çıkış":
                print("FediBot: Görüşürüz!")
                break
            print(f"FediBot: {self.yanit_ver(kullanici)}\n")

# Kullanım
bot = FediBot()
bot.sohbet_baslat()
                

AI için Önemli Kütüphaneler

Kütüphane Kullanım Alanı Kurulum
NumPy Sayısal hesaplamalar pip install numpy
Pandas Veri analizi pip install pandas
Scikit-learn Makine öğrenmesi pip install scikit-learn
TensorFlow Derin öğrenme pip install tensorflow
PyTorch Derin öğrenme pip install torch
OpenCV Görüntü işleme pip install opencv-python
🔹 Sonraki Adım: Python temellerini öğrendikten sonra, Kaggle'da gerçek veri setleriyle projeler yaparak deneyim kazanın!