1
Python'a Giriş ve Temel Sözdizimi
Print, değişkenler, veri tipleri, operatörlerDeğişkenler ve String İşlemleri
# Değişken tanımlama
isim = "Halil Arslan"
yas = 25
boy = 1.75
# f-string kullanımı
print(f"Benim adım {isim}, {yas} yaşındayım ve boyum {boy}m")
# String metodları
metin = "python programlama"
print(metin.upper())
print(metin.title())
print(metin.split())
# Matematiksel işlemler
a, b = 10, 3
print(f"Toplam: {a + b}")
print(f"Fark: {a - b}")
print(f"Çarpım: {a * b}")
print(f"Bölüm: {a / b}")
print(f"Tam Bölüm: {a // b}")
print(f"Mod: {a % b}")
print(f"Üs: {a ** b}")
Koşullu İfadeler
# if-elif-else
not_degeri = 85
if not_degeri >= 90:
harf = "AA"
elif not_degeri >= 80:
harf = "BA"
elif not_degeri >= 70:
harf = "BB"
elif not_degeri >= 60:
harf = "CB"
else:
harf = "FF"
print(f"Harf Notu: {harf}")
# Mantıksal operatörler
yas = 25
gelir = 5000
if yas >= 18 and gelir >= 3000:
print("Kredi onaylandı")
else:
print("Kredi reddedildi")
Döngüler
# for döngüsü
for i in range(1, 6):
print(f"Sayı: {i}")
# Liste üzerinde döngü
meyveler = ["elma", "armut", "muz", "çilek"]
for meyve in meyveler:
print(f"Meyve: {meyve}")
# while döngüsü
sayac = 1
while sayac <= 5:
print(f"Sayaç: {sayac}")
sayac += 1
# List comprehension
kareler = [x**2 for x in range(10)]
print(f"Kareler: {kareler}")
cift_sayilar = [x for x in range(20) if x % 2 == 0]
print(f"Çift sayılar: {cift_sayilar}")
🎯 Pratik: Fibonacci Serisi ve Asal Sayılar
Ortaİlk 10 Fibonacci sayısını ve 1-50 arası asal sayıları yazdırın.
Çıktı burada görünecek...
🎯 Örnek 1: Bilgi Kartı
KolayDeğişkenler ve string formatlama ile kişisel bilgi kartı.
Çıktı burada görünecek...
🎯 Örnek 2: Çarpım Tablosu
OrtaDöngülerle çarpım tablosu oluşturma.
Çıktı burada görünecek...
🎯 Örnek 3: Asal Sayı Bulucu
Zorİç içe döngüler ve algoritma mantığı.
Çıktı burada görünecek...
🎯 Örnek 4: İstatistik Analizi
UzmanOrtalama, medyan, mod, standart sapma hesaplama.
Çıktı burada görünecek...
🎯 İnteraktif 1: Not Hesaplayıcı
EtkileşimliKullanıcıdan notlar alıp ortalama hesaplama (simülasyon).
Çıktı burada görünecek...
🎯 İnteraktif 2: Sayı Tahmin Oyunu
EtkileşimliKullanıcı tahminleri ile oyun simülasyonu.
Çıktı burada görünecek...
2
Veri Yapıları - List, Tuple, Set, Dictionary
Python'da temel veri yapılarıListeler (Lists)
# Liste işlemleri
sayilar = [1, 2, 3, 4, 5]
sayilar.append(6)
sayilar.insert(0, 0)
sayilar.remove(3)
print(f"Liste: {sayilar}")
# Slicing
print(f"İlk 3: {sayilar[:3]}")
print(f"Son 3: {sayilar[-3:]}")
# Liste metodları
kopya = sayilar.copy()
kopya.sort(reverse=True)
print(f"Sıralı: {kopya}")
Sözlükler (Dictionaries)
# Dictionary işlemleri
ogrenci = {
"ad": "Halil",
"yas": 20,
"bolum": "Bilgisayar Müh.",
"notlar": [85, 90, 78]
}
# Değerlere erişim
print(f"Ad: {ogrenci['ad']}")
print(f"Ortalama: {sum(ogrenci['notlar']) / len(ogrenci['notlar'])}")
# Yeni ekleme
ogrenci["email"] = "Halil@mail.com"
# Döngü ile gezinme
for anahtar, deger in ogrenci.items():
print(f"{anahtar}: {deger}")
Set ve Tuple
# Set (benzersiz elemanlar)
sayilar = {1, 2, 3, 3, 4, 5, 5}
print(f"Set: {sayilar}") # {1, 2, 3, 4, 5}
set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}
print(f"Birleşim: {set1 | set2}")
print(f"Kesişim: {set1 & set2}")
print(f"Fark: {set1 - set2}")
# Tuple (değiştirilemez)
koordinat = (10, 20)
renkler = ("kırmızı", "yeşil", "mavi")
print(f"Koordinat: {koordinat}")
print(f"İlk renk: {renkler[0]}")
🎯 Pratik: Öğrenci Not Sistemi
OrtaÇıktı burada görünecek...
🎯 Örnek 1: Alışveriş Listesi
KolayÇıktı burada görünecek...
🎯 Örnek 2: Öğrenci Sözlüğü
OrtaÇıktı burada görünecek...
🎯 Örnek 3: Kelime Frekansı
ZorÇıktı burada görünecek...
🎯 Örnek 4: Şirket Analiz Sistemi
UzmanÇıktı burada görünecek...
🎯 İnteraktif 1: Envanter Yönetimi
EtkileşimliÇıktı burada görünecek...
🎯 İnteraktif 2: Telefon Rehberi
EtkileşimliÇıktı burada görünecek...
3
Fonksiyonlar ve Lambda
Tekrar kullanılabilir kod blokları # Temel fonksiyon def selamla(isim): return f"Merhaba {isim}!"
Çoklu parametre ve varsayılan değerler
def hesapla(a, b, islem="+"):
if islem == "+":
return a + b
elif islem == "-":
return a - b
elif islem == "*":
return a * b
elif islem == "/":
return a / b if b != 0 else "Hata: Sıfıra bölme"
*args ve **kwargs kullanımı
def topla_hepsi(*sayilar):
"""
*args olarak da bilinen *sayilar, fonksiyona
değişken sayıda pozisyonel (sıralı) argüman gönderilmesine olanak sağlar.
Fonksiyon içerisine gelen tüm bu argümanlar bir tuple (demet) içinde toplanır.
Örneğin, fonksiyon topla_hepsi(1, 2, 3) olarak çağrıldığında,
sayilar = (1, 2, 3) şeklinde olur.
Bu sayede fonksiyon kaç argüman gelirse hepsini esnek bir şekilde işleyebilir.
"""
return sum(sayilar)
def bilgi_goster(**kwargs):
"""
**kwargs olarak da bilinen **kwargs, fonksiyona
değişken sayıda anahtar-değer çiftinden oluşan argümanlar gönderilmesine imkan tanır.
Fonksiyon içi bu argümanlar bir dictionary (sözlük) içinde tutulur.
Örneğin, bilgi_goster(ad="Ali", yas=30) olarak çağrıldığında,
kwargs = {"ad": "Ali", "yas": 30} olur.
Böylece fonksiyon, isimlendirilmiş parametrelerin sayısı ve isimleri önceden bilinmeden kullanılabilir.
"""
for k, v in kwargs.items():
print(f"{k}: {v}")
Lambda fonksiyonları (anonim fonksiyonlar)
kare = lambda x: x ** 2 # Verilen sayının karesini döndürür
ciftmi = lambda x: x % 2 == 0 # Sayının çift olup olmadığını kontrol eder
sayilar =
kareler = list(map(lambda x: x**2, sayilar)) # Sayıların karelerini hesaplar
ciftler = list(filter(lambda x: x%2==0, sayilar)) # Çift sayıları seçer
print(f"Kareler: {kareler}")
print(f"Çift sayılar: {ciftler}")
🎯 Pratik: Matematiksel Fonksiyonlar
OrtaÇıktı burada görünecek...
🎯 Örnek 1: Matematik Fonksiyonları "Faktoriyel"
KolayÇıktı burada görünecek...
🎯 Örnek 2: *args ve **kwargs "Profil Bilgileri"
OrtaÇıktı burada görünecek...
🎯 Örnek 3: Higher Order Functions
ZorÇıktı burada görünecek...
🎯 Örnek 4: Decorator Sistemi
UzmanÇıktı burada görünecek...
4
Nesne Yönelimli Programlama (OOP)
Sınıflar, kalıtım, encapsulation, polymorphism# Temel sınıf tanımlama
class Araba:
def __init__(self, marka, model, yil):
self.marka = marka
self.model = model
self.yil = yil
self.km = 0
def bilgi(self):
return f"{self.yil} {self.marka} {self.model}"
def km_ekle(self, mesafe):
self.km += mesafe
# Kalıtım (Inheritance)
class ElektrikliAraba(Araba):
def __init__(self, marka, model, yil, batarya_kapasitesi):
super().__init__(marka, model, yil)
self.batarya = batarya_kapasitesi
self.sarj_seviyesi = 100
def sarj_et(self, miktar):
self.sarj_seviyesi = min(100, self.sarj_seviyesi + miktar)
return f"Şarj seviyesi: %{self.sarj_seviyesi}"
def bilgi(self): # Method overriding
return f"{super().bilgi()} (Elektrikli - {self.batarya}kWh)"
# Kullanım
tesla = ElektrikliAraba("Tesla", "Model 3", 2023, 75)
print(tesla.bilgi())
print(tesla.sarj_et(20))
🎯 Pratik: Kütüphane Sistemi
ZorÇıktı burada görünecek...
🎯 Örnek 1: Temel - Araç Sınıfı
KolayÇıktı burada görünecek...
🎯 Örnek 2: Orta - Banka Hesabı (Encapsulation)
OrtaÇıktı burada görünecek...
🎯 Örnek 3: İleri - Kalıtım ve Polymorphism
ZorÇıktı burada görünecek...
🎯 Örnek 4: Uzman - Tam OOP Sistemi
UzmanÇıktı burada görünecek...
5
Dosya İşlemleri ve Veri Kalıcılığı
Dosya okuma/yazma, JSON, CSV işlemleriDosya İşlemleri Simülasyonu
# Dosya işlemleri simülasyonu (bellekte)
class DosyaSistemi:
def __init__(self):
self.dosyalar = {}
def yaz(self, dosya_adi, icerik):
self.dosyalar[dosya_adi] = icerik
return f"{dosya_adi} yazıldı"
def oku(self, dosya_adi):
return self.dosyalar.get(dosya_adi, "Dosya bulunamadı")
def listele(self):
return list(self.dosyalar.keys())
# JSON işlemleri
import json
veri = {
"isim": "Halil",
"yas": 25,
"sehir": "Yalova",
"hobiler": ["kitap", "müzik", "spor"]
}
# JSON'a çevir
json_str = json.dumps(veri, indent=2, ensure_ascii=False)
print("JSON formatı:")
print(json_str)
# JSON'dan oku
geri_veri = json.loads(json_str)
print(f"\nİsim: {geri_veri['isim']}")
CSV İşlemleri
# CSV benzeri veri işleme
class CSVIsleyici:
def __init__(self):
self.veriler = []
self.basliklar = []
def veri_ekle(self, basliklar, satirlar):
self.basliklar = basliklar
self.veriler = satirlar
def goster(self):
# Başlıkları yazdır
print(" | ".join(self.basliklar))
print("-" * 50)
# Verileri yazdır
for satir in self.veriler:
print(" | ".join(str(v) for v in satir))
def filtrele(self, kolon_index, deger):
return [s for s in self.veriler if s[kolon_index] == deger]
# Kullanım
csv = CSVIsleyici()
csv.veri_ekle(
["İsim", "Yaş", "Şehir"],
[
["Halil", 25, "Yalova"],
["Ayşe", 30, "Ankara"],
["Muhammed", 25, "İstanbul"]
]
)
csv.goster()
🎯 Pratik: Telefon Rehberi
OrtaÇıktı burada görünecek...
🎯 Örnek 1: Temel - JSON Veri Yönetimi
KolayÇıktı burada görünecek...
🎯 Örnek 2: Orta - CSV İşleme
OrtaÇıktı burada görünecek...
🎯 Örnek 3: İleri - Veri Tabanı Simülasyonu
ZorÇıktı burada görünecek...
🎯 Örnek 4: Uzman - Log Sistemi
UzmanÇıktı burada görünecek...
6
Hata Yönetimi (Exception Handling)
try-except-finally, özel hatalar# Temel try-except
try:
sayi = int(input("Bir sayı girin: "))
sonuc = 100 / sayi
print(f"Sonuç: {sonuc}")
except ValueError:
print("Hata: Geçerli bir sayı girin")
except ZeroDivisionError:
print("Hata: Sıfıra bölme yapılamaz")
except Exception as e:
print(f"Beklenmeyen hata: {e}")
finally:
print("İşlem tamamlandı")
# Özel hata sınıfı
class YetersizBakiyeHatasi(Exception):
def __init__(self, bakiye, miktar):
self.bakiye = bakiye
self.miktar = miktar
super().__init__(f"Yetersiz bakiye: {bakiye} TL (İhtiyaç: {miktar} TL)")
class Hesap:
def __init__(self, bakiye):
self.bakiye = bakiye
def para_cek(self, miktar):
if miktar > self.bakiye:
raise YetersizBakiyeHatasi(self.bakiye, miktar)
self.bakiye -= miktar
return f"Çekilen: {miktar} TL"
# Kullanım
hesap = Hesap(1000)
try:
print(hesap.para_cek(500))
print(hesap.para_cek(600)) # Hata fırlatır
except YetersizBakiyeHatasi as e:
print(f"HATA: {e}")
🎯 Pratik: Güvenli Hesap Makinesi
OrtaÇıktı burada görünecek...
🎯 Örnek 1: Temel - Hata Yakalama
KolayÇıktı burada görünecek...
🎯 Örnek 2: Orta - Özel Hata Sınıfları
OrtaÇıktı burada görünecek...
🎯 Örnek 3: İleri - Hata Loglama Sistemi
ZorÇıktı burada görünecek...
🎯 Örnek 4: Uzman - Kapsamlı Hata Yönetim Sistemi
UzmanÇıktı burada görünecek...
7
İleri Python Konuları
Decorators, Generators, Context ManagersDecorators (Süsleyiciler)
# Basit decorator
def zamanlayici(func):
import time
def wrapper(*args, **kwargs):
baslangic = time.time()
sonuc = func(*args, **kwargs)
bitis = time.time()
print(f"{func.__name__} çalışma süresi: {bitis-baslangic:.4f} saniye")
return sonuc
return wrapper
@zamanlayici
def yavas_fonksiyon():
toplam = 0
for i in range(1000000):
toplam += i
return toplam
# Parametreli decorator
def tekrar(n):
def decorator(func):
def wrapper(*args, **kwargs):
for _ in range(n):
func(*args, **kwargs)
return wrapper
return decorator
@tekrar(3)
def selamla(isim):
print(f"Merhaba {isim}!")
Generators (Üreteçler)
# Generator fonksiyon
def fibonacci_generator(n):
a, b = 0, 1
for _ in range(n):
yield a
a, b = b, a + b
# Kullanım
for sayi in fibonacci_generator(10):
print(sayi, end=" ")
# Generator expression
kareler = (x**2 for x in range(10))
print(list(kareler))
# Sonsuz generator
def sonsuz_sayilar():
sayi = 0
while True:
yield sayi
sayi += 1
List Comprehensions ve Daha Fazlası
# List comprehension
kareler = [x**2 for x in range(10)]
ciftler = [x for x in range(20) if x % 2 == 0]
matris = [[i*j for j in range(5)] for i in range(5)]
# Dictionary comprehension
kare_dict = {x: x**2 for x in range(6)}
print(kare_dict)
# Set comprehension
tekil_uzunluklar = {len(kelime) for kelime in ["elma", "armut", "muz", "kivi"]}
print(tekil_uzunluklar)
🎯 Pratik: İleri Seviye Veri İşleme
ZorÇıktı burada görünecek...
🎯 Örnek 1: Temel - Generator Fonksiyonları
KolayÇıktı burada görünecek...
🎯 Örnek 2: Orta - Decorator Zincirleme
OrtaÇıktı burada görünecek...
🎯 Örnek 3: İleri - Context Managers
ZorÇıktı burada görünecek...
🎯 Örnek 4: Uzman - Metaprogramming
UzmanÇıktı burada görünecek...
8
Algoritmalar ve Veri Yapıları
Sıralama, arama, yığıt, kuyrukSıralama Algoritmaları
# Bubble Sort
def bubble_sort(arr):
n = len(arr)
for i in range(n):
for j in range(0, n-i-1):
if arr[j] > arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j]
return arr
# Selection Sort
def selection_sort(arr):
for i in range(len(arr)):
min_idx = i
for j in range(i+1, len(arr)):
if arr[j] < arr[min_idx]:
min_idx = j
arr[i], arr[min_idx] = arr[min_idx], arr[i]
return arr
# Quick Sort
def quick_sort(arr):
if len(arr) <= 1:
return arr
pivot = arr[len(arr) // 2]
left = [x for x in arr if x < pivot]
middle = [x for x in arr if x == pivot]
right = [x for x in arr if x > pivot]
return quick_sort(left) + middle + quick_sort(right)
Arama Algoritmaları
# Binary Search
def binary_search(arr, hedef):
sol, sag = 0, len(arr) - 1
while sol <= sag:
orta = (sol + sag) // 2
if arr[orta] == hedef:
return orta
elif arr[orta] < hedef:
sol = orta + 1
else:
sag = orta - 1
return -1
# Linear Search
def linear_search(arr, hedef):
for i, eleman in enumerate(arr):
if eleman == hedef:
return i
return -1
Veri Yapıları
# Stack (Yığıt)
class Stack:
def __init__(self):
self.items = []
def push(self, item):
self.items.append(item)
def pop(self):
if not self.is_empty():
return self.items.pop()
def peek(self):
if not self.is_empty():
return self.items[-1]
def is_empty(self):
return len(self.items) == 0
# Queue (Kuyruk)
class Queue:
def __init__(self):
self.items = []
def enqueue(self, item):
self.items.insert(0, item)
def dequeue(self):
if not self.is_empty():
return self.items.pop()
def is_empty(self):
return len(self.items) == 0
🎯 Pratik: Algoritma Karşılaştırması
ZorÇıktı burada görünecek...
9
Web Geliştirme Temelleri
HTTP, Flask benzeri framework, API# Mini Web Framework
class MiniFlask:
def __init__(self):
self.routes = {}
def route(self, path):
def decorator(func):
self.routes[path] = func
return func
return decorator
def run(self, path):
if path in self.routes:
return self.routes[path]()
return "404 - Sayfa Bulunamadı"
# Uygulama oluştur
app = MiniFlask()
@app.route("/")
def anasayfa():
return "Anasayfaya hoş geldiniz!"
@app.route("/hakkimizda")
def hakkimizda():
return "Hakkımızda sayfası"
@app.route("/iletisim")
def iletisim():
return "İletişim: info@example.com"
# REST API örneği
class API:
def __init__(self):
self.data = {}
self.id_counter = 1
def get_all(self):
return list(self.data.values())
def get_by_id(self, id):
return self.data.get(id, {"error": "Not found"})
def create(self, item):
id = self.id_counter
self.data[id] = {"id": id, **item}
self.id_counter += 1
return self.data[id]
def update(self, id, item):
if id in self.data:
self.data[id].update(item)
return self.data[id]
return {"error": "Not found"}
def delete(self, id):
if id in self.data:
del self.data[id]
return {"message": "Deleted"}
return {"error": "Not found"}
🎯 Pratik: Blog API'si
ZorÇıktı burada görünecek...
10
GUI Programlama (Tkinter Benzeri)
Grafik kullanıcı arayüzü tasarımı# GUI Framework Simülasyonu
class Widget:
def __init__(self, text=""):
self.text = text
self.x = 0
self.y = 0
def render(self):
return f"[{self.__class__.__name__}] {self.text}"
class Button(Widget):
def __init__(self, text, command=None):
super().__init__(text)
self.command = command
def click(self):
if self.command:
return self.command()
return "Button clicked"
class Label(Widget):
pass
class Entry(Widget):
def __init__(self):
super().__init__()
self.value = ""
def set_value(self, value):
self.value = value
def get_value(self):
return self.value
class Window:
def __init__(self, title):
self.title = title
self.widgets = []
def add_widget(self, widget):
self.widgets.append(widget)
def show(self):
print(f"\n{'='*50}")
print(f" {self.title}")
print('='*50)
for widget in self.widgets:
print(widget.render())
print('='*50)
🎯 Pratik: TODO Uygulaması GUI
ZorÇıktı burada görünecek...
💼
Kapsamlı Proje: Kütüphane Yönetim Sistemi
Tüm öğrendiğinizi bir arada kullanınProje Özellikleri
Bu projede şunları uygulayacaksınız:
- ✅ OOP (Sınıflar ve kalıtım)
- ✅ Hata yönetimi
- ✅ Dosya işlemleri (JSON)
- ✅ Veri yapıları (dict, list)
- ✅ İleri Python özellikleri
🎯 Kapsamlı Proje: Kütüphane Sistemi
Çok ZorÇıktı burada görünecek...
💡 Proje Geliştirme Fikirleri
Bu projeyi geliştirebilirsiniz:
- Gecikmiş iade kontrolü ve ceza sistemi ekleyin
- Kitap rezervasyon sistemi yapın
- İstatistik raporları oluşturun (en çok ödünç alınan kitaplar, vb.)
- JSON ile veri kaydetme/yükleme ekleyin
- Web arayüzü ekleyin
- Veritabanı entegrasyonu yapın