Summary
Highlights
Eğitmen Mosh, Python kursuna giriş yapıyor ve Python'ın otomasyon, yapay zeka, web uygulamaları ve web siteleri (Instagram, Dropbox gibi) oluşturmada nasıl kullanıldığını açıklıyor. Kariyer fırsatlarına vurgu yaparak kursun içeriğini özetliyor: temel kavramlar ve üç proje oluşturma.
Python'ı bilgisayarınıza nasıl indireceğinizi ve kuracağınızı adım adım anlatıyor. Python yorumlayıcısının ne olduğunu ve bir kod düzenleyici olan PyCharm'ı nasıl kuracağınızı gösteriyor. Ayrıca 'Merhaba Dünya' programını yazarak Python'daki ilk adımları atıyor ve Python kodunun nasıl çalıştırıldığını gösteriyor.
print fonksiyonu ile çıktı vermeye devam ediyor ve Python kodunun satır satır nasıl derlendiğini açıklıyor. 'String' ve 'ifade' gibi temel programlama terimlerini açıklayarak, bu terimlerin Python'da nasıl kullanıldığını basit örneklerle gösteriyor.
Python öğrenmenin ne kadar sürdüğü ve bir işte yeterli olabilmek için ne kadar zaman gerektiği üzerine konuşuyor. Belirli Python uzmanlık alanlarını (web geliştirme, makine öğrenimi) ve HTML, CSS, JavaScript, Django gibi ek öğrenilmesi gereken teknolojileri anlatıyor. Yıllık maaş beklentileri ve kariyer gelişimini de ele alıyor.
Programlamanın temel kavramlarından biri olan değişkenleri tanıtıyor. Değişkenlerin, geçici olarak bilgisayarın belleğinde veri depolamak için nasıl kullanıldığını açıklıyor. Ardından Python'daki temel veri tiplerini (tam sayılar, ondalıklı sayılar, dizeler ve boolean değerler) örneklerle açıklıyor ve hastane senaryosuyla pratik bir alıştırma sunuyor.
Kullanıcıdan girdi almak için 'input' fonksiyonunu tanıtıyor. 'print' ve 'input' gibi yerleşik Python fonksiyonlarını açıklıyor ve kullanıcı girdisinin her zaman bir dize olarak alındığını vurguluyor. Dize girdilerinin sayısal değerlere dönüştürülmesinin (int, float) önemini, yaş hesaplama örneği ve potansiyel hatalar (TypeError, ValueError) üzerinden gösteriyor. Kilogram dönüştürme alıştırması ile bu konuyu pekiştiriyor.
Python dizelerinin daha derinlemesine incelenmesini ele alıyor. Tek ve çift tırnakların kullanımı, çok satırlı dizeler (üç tırnak) ve dizelerde indeksleme (pozitif ve negatif indeksler) ve dilimleme (belli bir aralıktaki karakterleri seçme) gibi konulara değiniyor. 'len', 'upper', 'lower', 'find', 'replace', 'in' gibi dize metodlarını ve operatörlerini pratik örneklerle açıklıyor.
Python'daki temel aritmetik operatörleri (toplama, çıkarma, çarpma, bölme, modülüs, üs alma) tanıtıyor. Augmented assignment operatörlerinin (+=, -=, vb.) kullanımını gösteriyor ve matematikteki işlem önceliği kurallarının (üs > çarpma/bölme > toplama/çıkarma) Python'da nasıl uygulandığını örneklerle açıklıyor. Parantezlerin işlem önceliğini nasıl değiştirdiğini vurguluyor.
Sayılarla çalışırken kullanılan bazı yararlı yerleşik fonksiyonları ('round' ve 'abs') tanıtıyor. Daha karmaşık matematiksel işlemler için 'math' modülünün ('import math') nasıl kullanılacağını ('math.ceil', 'math.floor') ve Python dokümantasyonundan diğer fonksiyonları nasıl bulabileceğimizi gösteriyor. Modül kavramını bir süpermarket metaforuyla açıklıyor.
Programların kararlar almasını sağlayan 'if' ifadelerini tanıtıyor. 'if', 'elif' (else if) ve 'else' yapılarının kullanımını bir hava durumu senaryosu üzerinden açıklıyor. Kod bloklarının girintili olmasının önemini vurguluyor. İyi bir kredi notu olan alıcılar için konut peşinatı hesaplama alıştırması sunuyor.
Birden fazla koşulu birleştirmek için kullanılan mantıksal operatörleri ('and', 'or', 'not') tanıtıyor. Kredi uygulaması senaryosu üzerinden bu operatörlerin nasıl kullanıldığını pratik örneklerle açıklıyor. 'and' (tüm koşullar doğru olmalı), 'or' (en az bir koşul doğru olmalı) ve 'not' (boolean değeri ters çevirme) arasındaki farkları vurguluyor.
Değişkenleri belirli değerlerle karşılaştırmak için kullanılan karşılaştırma operatörlerini (>, <, >=, <=, ==, !=) açıklıyor. Sıcaklık senaryosu üzerinden bu operatörlerin kullanımını gösteriyor ve atama operatörü (=) ile eşitlik operatörü (==) arasındaki farkı vurguluyor. Kullanıcı adı doğrulama alıştırması ile öğrendiklerini pekiştiriyor.
Önceki derslerde öğrendiği konuları (girdi alma, veri tipi dönüşümü, mantıksal ve karşılaştırma operatörleri) birleştiren bir kilo dönüştürücü programı geliştiriyor. Kullanıcıdan kilosunu veya pounds olarak ağırlığını girmesini istiyor ve ardından diğer birime dönüştürüyor. Bu uygulama, önceki bilgilerin pekiştirilmesi için kapsamlı bir pratik sunuyor.
Kod bloklarını birden çok kez çalıştırmak için kullanılan 'while' döngülerini tanıtıyor. Döngü koşullarının önemini, sonsuz döngüden kaçınmayı ve döngü değişkenlerinin nasıl artırılacağını örneklerle açıklıyor. Jupiter'deki output'u ve `break` ifadesinin bir döngüyü anında sonlandırma yeteneğini gösteriyor.
Bir 'while' döngüsü kullanarak basit bir tahmin oyunu geliştiriyor. Kullanıcıya belirli sayıda tahmin hakkı vererek gizli bir sayıyı tahmin etmesini istiyor. 'break' ifadesinin bir döngüyü erken sonlandırmada nasıl kullanıldığını ve 'else' bloğunun döngü normal tamamlandığında nasıl çalıştığını gösteriyor. Oyuncuların kazandığında veya kaybettiğinde nasıl mesajlar verileceğini açıklıyor.
Kullanıcının komutlarla bir arabanın durumunu (başlatma, durdurma, yardım) kontrol ettiği bir simülasyon oyunu geliştiriyor. 'while' döngüsü, 'if-elif-else' koşulları ve 'dry' (kendini tekrar etme) prensibinin önemini vurguluyor. Çok satırlı dizelerin kullanımı ve büyük/küçük harf duyarsızlığı gibi konuları ele alıyor. Ek olarak, arabanın zaten çalışır durumda veya durdurulmuş olması durumunda farklı mesajlar gösterme yeteneğini ekliyor.
Koleksiyonlardaki (stringler, listeler) öğeler üzerinde yineleme yapmak için 'for' döngülerini tanıtıyor. 'range' fonksiyonunun belirli bir sayı aralığı oluşturmak için nasıl kullanıldığını açıklıyor. Alışveriş sepetindeki ürünlerin toplam maliyetini hesaplama alıştırması ile 'for' döngülerinin pratik uygulamalarını gösteriyor.
Bir döngünün içine başka bir döngü ekleyerek (iç içe döngüler) koordinat listeleri gibi karmaşık yapıları nasıl oluşturulacağını gösteriyor. İç içe döngülerin çalışma mantığını adım adım açıklıyor. Zorlayıcı bir alıştırma olarak, 'f' harfi şeklinde X deseni çizme görevini veriyor (hem pratik hem de Python'un dize çarpım özelliğini anlamak için).
Python'daki listeleri tanıtıyor. Listelerin nasıl tanımlandığını, öğelere indeksler (pozitif ve negatif) ve dilimleme ile nasıl erişildiğini açıklıyor. Listelerin değiştirilme (mutable) özelliği üzerinde duruyor ve liste metodlarını ('append', 'insert', 'remove', 'clear', 'pop', 'index', 'count', 'sort', 'reverse', 'copy') geniş örneklerle gösteriyor. Listelerdeki tekrarlayan öğeleri kaldırma alıştırmasını yapıyor.
Listelere benzer bir veri yapısı olan tuple'ları tanıtıyor. Tuple'ların temel farkının değiştirilemez (immutable) olmaları olduğunu vurguluyor, yani bir kere oluşturulduktan sonra öğeleri eklenemez, kaldırılamaz veya değiştirilemez. Tuple'lara erişim yöntemlerini (indeksleme) ve listelerle karşılaştırmalarını yapıyor. Sadece 'count' ve 'index' metodlarının kullanılabilir olduğunu gösteriyor.
Python'daki 'unpacking' özelliğini tanıtıyor. Bu özelliğin, tuple veya liste gibi bir koleksiyondaki öğeleri birden fazla değişkene aynı anda atamak için nasıl kullanıldığını gösteriyor. Koordinat örneği üzerinden kodun daha kısa ve okunabilir hale nasıl getirildiğini açıklıyor. Bu özelliğin hem liste hem de tuple'da geçerli olduğunu belirtiyor.
Anahtar-değer çiftleri halinde bilgi depolamak için kullanılan sözlükleri tanıtıyor. Müşteri bilgileri örneği üzerinden sözlüklerin nasıl tanımlandığını, öğelere anahtarla nasıl erişildiğini ('customer[key]' veya 'customer.get(key)') ve değerlerin nasıl güncellendiğini veya yeni anahtar-değer çiftlerinin nasıl eklendiğini detaylıca açıklıyor. Telefon numaralarını kelimelere dönüştüren bir alıştırma yapıyor.
Sözlüklerin gerçek dünya uygulamalarına bir örnek olarak bir emoji dönüştürücü programı oluşturuyor. Kullanıcının girdiği metindeki belirli karakter dizisi (smiley yüzler) otomatik olarak emojilere dönüştürülüyor. 'split' metodunu ve sözlükleri kullanarak metni kelimelere ayırmayı ve ardından bu kelimeleri emojilerle eşleştirmeyi gösteriyor.
Kod organizasyonu ve yeniden kullanılabilirlik için fonksiyonları tanıtıyor. 'def' anahtar kelimesiyle fonksiyonların nasıl tanımlandığını, adlandırma kurallarını ve girintinin bir fonksiyonun bloğunu nasıl tanımladığını açıklıyor. Fonksiyonların program akışını nasıl etkilediğini ve ne zaman çağrıldıklarını örneklerle gösteriyor. Python'daki 'PEP 8' gibi kodlama standartlarına da değiniyor.
Fonksiyonlara bilgi nasıl geçirileceğini öğreniyor. Parametrelerin (yer tutucular) ve argümanların (fonksiyona sağlanan gerçek değerler) ne olduğunu açıklıyor, ikisi arasındaki farkı vurguluyor. Konumsal argümanları, sıra bağımsız anahtar kelime argümanlarını ve bunların kod okunabilirliğini nasıl artırdığını gösteriyor. Konumsal argümanlardan sonra anahtar kelime argümanlarının gelme kuralını vurguluyor.
Fonksiyonlardan değer döndürmeyi ('return' ifadesi) öğretiyor. Bir fonksiyonun bir hesaplama sonucunu nasıl dışarıya vereceğini açıklıyor. Bir fonksiyonun 'return' ifadesi olmadığında varsayılan olarak 'None' döndürdüğünü vurguluyor. Bu, fonksiyonların karmaşık hesaplamalar yaparak sonuçları ana programa geri iletmesini sağlıyor.
Önceki emoji dönüştürücü programını yeniden düzenliyor, böylece çekirdek dönüştürme mantığı ayrı bir fonksiyona ('emoji_converter') alınıyor. Fonksiyonların yeniden kullanılabilirliğini artırmak için girdi alma ve çıktı görüntüleme gibi işlemleri fonksiyondan ayırmanın önemini vurguluyor. Bu, kodun daha modüler ve bakımı daha kolay olmasını sağlıyor.
Python programlarında hataları ('exception' olarak da adlandırılır) nasıl yöneteceğimizi öğretiyor. Kullanıcıdan yaş alırken 'ValueError' ve sıfıra bölme hatası ('ZeroDivisionError') gibi yaygın hataları ele almak için 'try' ve 'except' bloklarını tanıtıyor. Programların çökmesini önlemenin ve kullanıcıya anlamlı hata mesajları vermenin önemini vurguluyor.
Python'da kodlara notlar veya açıklamalar eklemek için yorumların nasıl kullanılacağını ('#') açıklıyor. Yorumların amacını (neyi not ettiğimiz, ne için not ettiğimiz, diğer geliştiricilerle iletişim) ve kötü yorum örneklerini (bariz olanı açıklama, güncel olmayan yorumlar) gösteriyor. Kodda 'neden' ve 'nasıl' sorularına odaklanan iyi yorum yazma pratiğini teşvik ediyor.
Python'da yeni veri tipleri tanımlamak için sınıfları tanıtıyor. Sınıfların temel tiplerden (sayılar, dizeler) ve karmaşık tiplerden (listeler, sözlükler) farkını açıklıyor. Bir 'Point' sınıfı örneği üzerinden, sınıfların nasıl tanımlandığını (Pascal Case adlandırma kuralı), metodların ('move', 'draw') ve niteliklerin ('x', 'y') nasıl eklendiğini gösteriyor. Nesnelerin bir sınıfın örnekleri olduğunu vurguluyor.
Sınıflarda 'constructor' (yapıcı) kavramını tanıtıyor. 'constructor'ın, bir nesne oluşturulduğunda otomatik olarak çağrılan özel bir metod ('__init__') olduğunu açıklıyor. Bir noktanın x ve y koordinatlarını başlatmak gibi, nesne oluşturma anında nitelikleri ayarlamak için 'constructor'ların nasıl kullanıldığını gösteriyor. 'self' parametresinin geçerli nesneyi temsil ettiğini vurguluyor. 'Person' sınıfı örneği ile pratik bir alıştırma yapıyor.
Python'da kod tekrarını önlemek ve yeniden kullanılabilirliği artırmak için miras kavramını tanıtıyor. Bir 'Mammal' (Memeli) sınıfı oluşturarak ortak metodları (örneğin 'walk') nasıl tanımlayacağımızı ve 'Dog' (Köpek) ile 'Cat' (Kedi) gibi alt sınıfların bu metodları nasıl miras alacağını gösteriyor. 'pass' anahtar kelimesinin boş bir sınıf veya metod bloğu için nasıl kullanılacağını açıklıyor. Özellikleri ve davranışları ebeveynlerden devralma konseptini ele alıyor.
Python'da kod organizasyonu ve yeniden kullanılabilirlik için modülleri (Python kod dosyaları) tanıtıyor. Kodları birden fazla dosyaya bölmenin (örneğin 'converters.py' modülü) ve bu modülleri diğer modüllere ('app.py' modülü) 'import' ifadesiyle nasıl dahil edeceğimizi gösteriyor. Modül içindeki belirli fonksiyonları veya tüm modülü içe aktarma arasındaki farkı açıklıyor. 'utils' modülü ve 'find_max' fonksiyonuyla pratik bir alıştırma yapıyor.
Python'ın zengin standart kütüphanesini ve dahili modüllerini tanıtıyor. Python'da e-posta gönderme, tarih ve saat işlemleri, rastgele değerler oluşturma gibi genel görevler için yerleşik modüllerin önemini açıklıyor. Özellikle 'random' modülünü kullanarak rastgele sayılar ve listeden öğe seçimi örnekleri gösteriyor. 'Dice' (Zar) sınıfı ile rastgele sayı üretimi için pratik bir alıştırma yapıyor ve PEP 8 gibi kodlama standartlarına tekrar değiniyor.
Python'da dizinlerle ve dosyalarla çalışmak için 'pathlib' modülünü tanıtıyor. Mutlak ve göreceli yolların ne olduğunu açıklıyor. 'Path' nesnesi oluşturmayı, bir dosya veya dizinin varlığını kontrol etmeyi, yeni bir dizin oluşturmayı ('mkdir') ve silmeyi ('rmdir') gösteriyor. 'glob' metodunu kullanarak belirli bir dizindeki belirli dosya türlerini (örneğin '.py' dosyaları) bulmayı ve sonuçları işlemeyi öğretiyor. Excel otomasyonuna giriş yapıyor.
Python ile Excel dosyalarını otomatik olarak işlemeyi içeren ilk büyük projeye başlıyor. 'openpyxl' kütüphanesini kullanarak bir Excel dosyasını ('transactions.xlsx') yüklemeyi, belirli hücrelere erişmeyi ve değerlerini değiştirmeyi gösteriyor. Özellikle fiyatları %10 azaltma ve yeni düzeltilmiş fiyatlarla dördüncü bir sütun ekleme görevini ele alıyor. Oluşturulan dosyayı yeni bir isimle kaydetmeyi de gösteriyor.
Excel otomasyonuna devam ediyor ve 'openpyxl' kütüphanesini kullanarak bir Excel dosyasına çubuk grafik eklemeyi gösteriyor. Grafik oluşturmak için 'BarChart' sınıfını ve bir veri aralığını seçmek için 'Reference' sınıfını nasıl kullanacağımızı açıklıyor. Fiyat verilerini içeren yeni bir sütundaki değerleri kullanarak basit bir çubuk grafik oluşturuyor ve grafiği Excel sayfasına yerleştiriyor. Son olarak tüm kodu bir fonksiyona sarmalamak için refactoring yapıyor, bu da kodun yeniden kullanılabilirliğini artırıyor.
Makine öğrenimine (yapay zekanın bir alt kümesi) giriş yapıyor. Geleneksel programlama teknikleriyle çözülmesi zor olan kedi/köpek tanıma gibi problemleri makine öğreniminin nasıl çözdüğünü açıklıyor. Makine öğreniminde bir modelin nasıl oluşturulduğunu, büyük miktarda veriyle nasıl eğitildiğini ve bilinmeyen veriler hakkında tahminler yapmak için nasıl kullanıldığını genel hatlarıyla anlatıyor. Kapsama alanları arasında sürücüsüz arabalar, robotik ve tahmin yer alıyor.
Bir makine öğrenimi projesindeki adımları ayrıntılı olarak açıklıyor: (1) Veri İçe Aktarma (CSV genellikle), (2) Veri Temizliği (tekrarlayan, eksik veya alakasız verileri kaldırma, metinleri sayısal değerlere dönüştürme), (3) Veriyi Bölme (antrenman ve test setlerine), (4) Model Oluşturma (algoritma seçimi), (5) Modeli Antrenman (veriyle besleme), (6) Tahmin Yapma ve (7) Tahminleri Değerlendirme (doğruluk ölçümü ve model iyileştirme).
Makine öğrenimi için popüler Python kütüphanelerini tanıtıyor: 'Numpy' (çok boyutlu diziler için), 'Pandas' (veri analizi ve 'DataFrame'ler için), 'Matplotlib' (grafik çizimi için) ve 'Scikit-learn' (çeşitli makine öğrenimi algoritmaları için). Bu kütüphanelerle çalışmak için en iyi ortam olan 'Jupyter Notebook'u tanıtıyor ve 'Anaconda' üzerinden kurulumunu gösteriyor. İlk 'jupyter' notebook'unu oluşturuyor ve temel Python kodunu çalıştırıyor.
Jupyter Notebook'ta veri yüklemeyi ve işlemeyi gösteriyor. Kaggle.com'dan ('video game sales.csv') popüler bir veri setini indiriyor. 'Pandas' kütüphanesini kullanarak bu CSV dosyasını bir 'DataFrame'e nasıl yükleyeceğimizi ('pd.read_csv') ve temel özelliklerini (örneğin 'shape' ile boyutları, 'describe' ile istatistikleri) nasıl inceleyeceğimizi öğretiyor. Pandas DataFrame'in ne kadar etkili olduğunu gösteriyor.
Jupyter Notebook'ta verimliliği artıran en kullanışlı klavye kısayollarını tanıtıyor. Hücre modları (düzenleme modu (yeşil) ve komut modu (mavi)) arasında geçiş yapmayı, yeni hücreler eklemeyi ('a' veya 'b'), hücreleri silmeyi ('dd'), hücreleri çalıştırmayı (Ctrl+Enter) ve otomatik tamamlamayı ('Tab') gösteriyor. Ayrıca 'Shift+Tab' ile metod dokümantasyonunu görüntülemeyi ve yorum ekleme/kaldırma kısayollarını da ele alıyor.
Makine öğrenimi projesi olarak bir müzik tavsiye sistemi oluşturmaya başlıyor. Projenin amacını, yaş ve cinsiyet gibi kullanıcı profillerine göre müzik türleri (hip hop, caz, klasik, dans, akustik) önermek olarak belirleniyor. Yapay bir 'music.csv' veri setini tanıtıyor ve bu veri setini 'pandas' ile Jupyter Notebook'a nasıl yükleyeceğimizi gösteriyor. Projenin sonraki adı olan veri hazırlığı hakkında bilgi veriyor.
Makine öğrenimi projelerinde veri hazırlığının ikinci adımı olarak, 'music.csv' veri setini antrenman için girdi ('X') ve çıktı ('y') setlerine nasıl böleceğimizi gösteriyor. 'DataFrame.drop' metodunu kullanarak girdi setini oluşturuyor ve çıktı setini (müzik türü) ayrı bir 'DataFrame' olarak alıyor. Bu ayrımın, modelin öğrenme sürecinde ve tahmin yaparken neden gerekli olduğunu açıklıyor.
Veri setini kullanarak bir makine öğrenimi modeli nasıl oluşturulacağını gösteriyor. Özellikle 'Scikit-learn' kütüphanesinden 'DecisionTreeClassifier' algoritmasını kullanıyor. Model nesnesini oluşturmayı ve 'model.fit(X, y)' metodunu kullanarak antrenman veri setleriyle modeli eğitmeyi açıklıyor. Modelin yeni veri setlerinde nasıl tahminler yapacağını ('model.predict') gösteriyor ve yaşa ve cinsiyete göre müzik önerileri örneği yapıyor.
Makine öğrenimi modellerinin doğruluğunu nasıl ölçeceğimizi gösteriyor. Veri setini antrenman ve test setlerine bölmek için 'sklearn.model_selection' modülünden 'train_test_split' fonksiyonunu tanıtıyor. Antrenman veri setini model eğitimi için kullanıyor ve test veri setini tahminlerin doğruluğunu değerlendirmek için kullanıyor. 'sklearn.metrics' modülünden 'accuracy_score' fonksiyonunu kullanarak modelin doğruluğunu hesaplıyor ve çıkan sonuçları yorumluyor (test boyutu ve veri miktarı gibi faktörlerin doğruluk üzerindeki etkisi).
Makine öğrenimi modelinin kalıcılığını (model 'dump' ve 'load') nasıl sağlayacağımızı gösteriyor. Bir modeli eğittikten sonra, her seferinde yeniden eğitmek yerine kalıcı olarak bir dosyaya ('joblib' kütüphanesi) nasıl kaydedeceğimizi açıklıyor. Gelecekte yeni tahminler yapmak için eğitilmiş modeli bu dosyadan nasıl yükleyeceğimizi gösteriyor. Bu teknik, büyük veri setleriyle çalışırken zaman tasarrufu sağlıyor.
Eğitilmiş karar ağacı modelini görsel formatta dışa aktarmayı gösteriyor. 'sklearn.tree' modülünden 'export_graphviz' fonksiyonunu kullanarak modeli '.dot' formatına dönüştürüyor. VS Code'da 'Graphviz' uzantısı ile bu '.dot' dosyasını görselleştirmeyi ve modelin tahminleri nasıl yaptığını gösteren bir ağaç yapısını analiz etmeyi açıklıyor. Karar ağacındaki her düğümün bir koşulu, her dalın bir kararı ve her yaprak düğümünün bir sınıfı temsil ettiğini açıklıyor.
Python'ın popüler web çatısı olan Django ile ilk web uygulamasını oluşturmaya başlıyor. Bir web çatısının (framework) ne olduğunu ve neden kullanıldığını (yeniden kullanılabilirlik, yapı) açıklıyor. Instagram ve Spotify gibi Django ile oluşturulmuş bazı popüler web sitelerini örnek veriyor. 'pyShop' adında yeni bir Django projesi oluşturuyor ve Django'yu 'pip install django==2.1' komutu ile kuruyor. Projenin dosya yapısını ('settings.py', 'urls.py', 'wsgi.py', 'manage.py') ve `runserver` komutunu kullanarak nasıl çalıştırıldığını açıklıyor.