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?
- Kolay Öğrenme: İngilizceye benzer basit sözdizimi
- Çok Yönlü: Web, AI, veri bilimi, otomasyon
- Güçlü Kütüphaneler: NumPy, Pandas, TensorFlow, Django
- Yüksek Talep: En çok aranan programlama dili
- Topluluk: Geniş destek ve kaynak
# 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}")
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) |
# 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
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ı
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
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ü
# 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ü
# 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
# 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
# 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 - 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.
# 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
# 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.
# 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 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"])
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
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)
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
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
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
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 |