• Buradasın

    Python Programlama Eğitimi: Beş Proje ile Başlangıç Seviyesi

    youtube.com/watch?v=BO6LjtEOGZw

    Yapay zekadan makale özeti

    • Bu video, Microsoft'ta Python uzantısı üzerinde çalışan bir eğitmen tarafından sunulan kapsamlı bir Python programlama dili eğitim serisidir. Eğitmen, temel Python kavramlarını ve bunları pratik projelere uygulamayı adım adım göstermektedir.
    • Video, beş farklı proje üzerinden ilerlemektedir: "Choose Your Own Adventure" oyunu, metin tabanlı hesap makinesi, iletişim yönetimi sistemi, AI ile oynanan Tic-Tac-Toe ve otomatik sınav oluşturucu. Eğitim, Python'ın kurulumundan başlayarak, VS Code kullanımı, temel Python kavramları (print, input, if ifadeleri), değişkenler, döngüler, fonksiyonlar, listeler ve dictionaries gibi konuları kapsamaktadır.
    • Eğitim boyunca her proje için kod örnekleri gösterilmekte, hata ayıklama teknikleri anlatılmakta ve izleyicilere kendi projelerini geliştirmeleri için temel yapı sunulmaktadır. Özellikle "Choose Your Own Adventure" oyunu, hesap makinesi, contact management sistemi, Tic-Tac-Toe ve quiz uygulaması gibi pratik projeler üzerinden Python programlama temelleri pekiştirilmektedir.
    00:00Python Öğrenme Projesi Tanıtımı
    • Bu video, Python'ı beş proje üzerinden öğretmeyi amaçlıyor ve her proje daha karmaşık hale gelecek.
    • Video, tamamen yeni başlayanlar için tasarlanmış olup, Python kurulumu ve editör kurulumu da gösterilecek.
    • Öğrenme sürecinde temel konular (print, input, if ifadeleri) öğretildikten sonra hemen projelere geçilecek, böylece teorik bilgi gerçek dünyada nasıl kullanılacağı gösterilecek.
    00:53Beş Proje Tanıtımı
    • İlk proje "Choose Your Own Adventure Game" olacak, bu bir çoklu yol oyunu olacak.
    • İkinci proje metin tabanlı bir hesap makinesi, üçüncü proje bir iletişim yönetimi sistemi olacak.
    • Dördüncü proje bir AI ile oynanabilen bir tic-tac-toe oyunu, beşinci proje ise otomatik bir sınav oluşturucu olacak.
    01:43HubSpot Python Rehberi
    • HubSpot tarafından sunulan "Python'a Giriş" rehberi, yeni başlayanlar için ücretsiz bir kaynak olarak öneriliyor.
    • Rehber, Python'ın ne olduğu, temel yöntemler ve fonksiyonlar, kodlama standartları, ileri düzey Python teknikleri gibi konuları kapsıyor.
    • Rehberin en dikkat çekici kısmı, Python nesne yönelimli programlama kavramlarının kapsamlı bir özetidir.
    02:46Python Kurulumu
    • Python kurulumu için python.org adresinden işletim sisteminize uygun sürümü indirmeniz gerekiyor.
    • Kurulum sonrası, Mac veya Linux'ta Spotlight araması yaparak Terminal, Windows'ta ise CMD veya Komut İstemi'ni açıp "python 3" yazarak Python'ın çalışıp çalışmadığını kontrol edebilirsiniz.
    • Python 2 yerine Python 3 kullanmanız öneriliyor.
    05:19Visual Studio Code Kurulumu
    • Python kodlarını yazmak için Visual Studio Code (VS Code) öneriliyor, bu Microsoft tarafından geliştirilen ücretsiz bir kod düzenleyicisidir.
    • VS Code'ı indirdikten sonra, Mac'te Spotlight araması yaparak veya Windows'ta arama çubuğunu kullanarak açabilirsiniz.
    • VS Code'da yeni bir klasör oluşturup, içinde "proje1.py" adında bir Python dosyası oluşturabilirsiniz.
    08:49Python Dosyası Oluşturma ve Kaydetme
    • Python dosyası oluşturmak için "File" menüsünden "New File" seçeneğini kullanabilir veya dosya adını "py" uzantısıyla belirleyebilirsiniz.
    • Dosyayı kaydetmek için "File" menüsünden "Save" veya "Save As" seçeneğini kullanabilirsiniz.
    09:21Python Eklentisi Kurulumu
    • Python kodunu çalıştırmak için VS Code'da Python eklentisini kurmanız gerekiyor.
    • Eklentileri görüntülemek için "Extensions" sekmesine gidip "Python" araması yapabilirsiniz.
    • En popüler Python eklentisini seçip kurduktan sonra, dosyayı çalıştırmak için gerekli ayarlar otomatik olarak yapılır.
    10:12Python Kodunu Çalıştırma
    • Python kodunu çalıştırmak için "print('Hello World')" gibi basit bir kod yazabilirsiniz.
    • Kod yazarken en küçük hata bile programın çalışmasını engelleyebilir, bu nedenle dikkatli olmanız gerekir.
    • Kodu çalıştırmak için üst sağ köşedeki artı simgesine tıklayabilir veya "Command+Shift+P" tuş kombinasyonuyla komut paletini açıp "Select Interpreter" seçeneğini kullanabilirsiniz.
    13:45Terminal Üzerinden Kod Çalıştırma
    • Terminal üzerinden kodu çalıştırmak için "python" veya "python3" komutunu kullanabilirsiniz.
    • Komutu çalıştırdıktan sonra dosya adını ve boşluk bırakarak dosyayı çalıştırabilirsiniz.
    • Eğer dosya bulunamazsa, terminal hata mesajı verecektir.
    14:49Print Fonksiyonu
    • Print fonksiyonu, ekrana bir mesaj yazdırmak için kullanılır.
    • Yazdırılacak metin çift veya tek tırnak içinde yazılmalıdır, aksi takdirde hata verir.
    • Birden fazla metin yazdırmak için, metinleri virgülle ayırabilirsiniz ve her yazdırma işlemi yeni bir satıra geçer.
    16:56Veri Türleri
    • Python'da farklı veri türleri vardır ve bunları bilmek önemlidir.
    • İlk veri türü "string" (str) olarak adlandırılır ve çift veya tek tırnak içinde yazılan her şeyi ifade eder.
    • Sayılar bile tek tırnak içinde yazıldığında string veri türüne dönüşür.
    17:45Python'da Yorumlar
    • Python'da yorum, pound işareti (#) ile başlar ve editörün bu satırı görmezden gelmesini sağlar.
    • Yorumlar kodun anlatımını ve açıklamasını yapmak için kullanılır, ancak kod çalıştırıldığında göz ardı edilir.
    • Python'da kod satırları yukarıdan aşağıya doğru sırayla çalıştırılır.
    18:28Veri Türleri
    • Integer (int), tam sayıdır ve negatif veya pozitif olabilir, ancak ondalık basamak içermez.
    • Float, ondalık basamak içeren sayıdır ve negatif veya pozitif olabilir.
    • Boolean, sadece "True" veya "False" değerlerini alabilir ve bu değerler büyük harfle yazılır.
    19:56Kullanıcı Girişi
    • Python'da kullanıcıdan giriş almak için "input" fonksiyonu kullanılır.
    • "input" fonksiyonuna bir argüman olarak kullanıcıdan ne istendiğini belirten bir metin (prompt) verilebilir.
    • Kullanıcı girişi için prompt'un sonuna boşluk eklemek, kullanıcıya daha fazla alan sağlar.
    21:46Değişkenler
    • Değişkenler, bir değeri saklamak için kullanılan isimlerdir ve depolanan verinin türüne göre değişir.
    • Değişken isimleri sadece harfler, alt çizgi veya sayılardan oluşabilir, özel karakterler kullanılamaz.
    • Değişken isimleri büyük ve küçük harf duyarlıdır, yani "HelloWorld" ve "Hello_world" farklı değişkenlerdir.
    24:34Kullanıcı Verisini Değişkene Atama
    • Kullanıcıdan alınan veriyi bir değişkene atamak için "name = input()" şeklinde bir kod kullanılır.
    • Değişkene atanmış değeri ekrana yazdırmak için "print(name)" şeklinde bir kod kullanılır.
    • Değişkene atanmış değeri yazdırmak için değişken adı kullanılır, değişken adı içinde tek veya çift tırnak kullanılmaz.
    25:24Python'da Kod Kaydetme ve Değişkenler
    • Python'da kodunuzu her çalıştırmadan önce mutlaka kaydetmelisiniz, aksi takdirde kod çalışmayacaktır.
    • Dosya kaydedilmediğinde, dosyanın üzerinde beyaz bir nokta görünür ve dosyayı kaydetmek için "Dosya" menüsünden "Kaydet" seçeneğini kullanabilir veya Ctrl+S tuş kombinasyonunu kullanabilirsiniz.
    • Değişkenleri ekrana yazdırmak için "print" fonksiyonunu kullanabilirsiniz, örneğin "print(isim)" komutu kullanıcının girdiği ismi ekrana yazdırır.
    26:02Kullanıcı Girişi ve Değişken Kullanımı
    • "Choose your own adventure game" (Kendi macera oyununuzu seçin) türünde bir oyun, kullanıcıya farklı seçenekler sunarak farklı yollar izlemesini sağlar.
    • Kullanıcıyı selamlamak için "print" fonksiyonunda değişkenleri kullanabilirsiniz, örneğin "print('Hello, [isim], welcome to my game')" komutu kullanıcının ismini ekrana yazdırır.
    • String birleştirme için "+" operatörü kullanılabilir, örneğin "hello" + "isim" komutu "hello isim" şeklinde bir string oluşturur.
    28:20Veri Türleri ve Koşullu İfadeler
    • Kullanıcı girişi her zaman bir string olarak alınır, bu nedenle sayısal değerler bile string olarak işlenir.
    • Koşullu ifadeler için "if" komutu kullanılır ve koşul doğru olduğunda belirtilen blok çalışır.
    • Koşul kontrolü için "==" (eşitlik) operatörü kullanılır, bu operatör iki değerin eşit olup olmadığını kontrol eder ve sonuç olarak true veya false döndürür.
    32:03Koşullu İfadelerde Operatörler
    • Koşullu ifadelerde "<" (küçüktür), ">" (büyüktür), "<=" (küçüktür veya eşittir), ">=" (büyüktür veya eşittir) ve "!=" (eşit değildir) operatörleri kullanılabilir.
    • Koşul kontrolü için kullanılan değerlerin aynı türde olması gerekir, aksi takdirde karşılaştırma yapılamaz.
    • "if" komutunun kullanımı: "if koşul: koşul doğruysa yapılacak işlemler" şeklinde olup, koşul doğruysa belirtilen blok çalışır.
    33:57Python'da Koşullu İfadeler
    • Python'da koşullu ifadeler için kod blokları otomatik olarak tab tuşu veya dört boşluk ile indented olmalıdır.
    • "if" ifadesi, belirli bir koşul doğruysa çalıştırılacak kod bloğunu belirtir.
    • Koşul doğruysa, indented blok içindeki kodlar çalışır; yanlışsa çalışmaz.
    35:58Else ve Else If İfadeleri
    • "else" ifadesi, "if" koşulu yanlış olduğunda çalıştırılacak kod bloğunu belirtir.
    • "elif" (else if) ifadesi, "if" koşulu yanlış olduğunda ve başka bir koşul doğruysa çalıştırılacak kod bloğunu belirtir.
    • Bir kod bloğunda sadece bir "if" ve bir "else" kullanılabilir, ancak birden fazla "elif" kullanılabilir.
    39:21String İşlemleri ve Koşullu İfadeler
    • "lower()" fonksiyonu, bir string'i tüm küçük harfe dönüştürür.
    • "upper()" fonksiyonu, bir string'i tüm büyük harfe dönüştürür.
    • Koşullu ifadelerde string'leri karşılaştırmak için "lower()" fonksiyonu kullanılabilir.
    40:44Mantıksal Operatörler
    • "and" operatörü, iki koşulun da doğru olması durumunda true döndürür.
    • "or" operatörü, iki koşuldan en az birinin doğru olması durumunda true döndürür.
    • "not" operatörü, bir koşulun tersini döndürür.
    42:58NOT Operatörü
    • Eğitmen, koşulları ve AND/OR operatörlerini anlattıktan sonra NOT operatörünü tanıtıyor.
    • NOT operatörü, bir koşulun tersini alır; örneğin, NOT true = false ve NOT false = true.
    • NOT operatörü, büyük ifadelerde de kullanılabilir ve bu durumda, ifade true ise false, false ise true olarak değerlendirilir.
    44:18Choose Your Own Adventure Oyunu
    • Eğitmen, "Choose Your Own Adventure" adlı bir oyun projesi başlatacağını belirtiyor.
    • Oyunda kullanıcıdan önce oynamak isteyip istemediği sorulur, sonra yön seçimi için seçenekler sunulur.
    • Oyun basit olabilir (sadece left/right) veya daha karmaşık olabilir (left, right, straight, backwards).
    44:55Yön Seçimi ve İf-Else Yapısı
    • Kullanıcı oynamak istiyorsa, "Do you want to go left or right?" sorusu sorulur.
    • Yön seçimi için if-else yapısı kullanılır; eğer yön "left" ise "Okay, we went left", değilse "Okay, we went right" yazdırılır.
    • Kullanıcı "left" veya "right" dışında bir yanıt verirse, varsayılan olarak "right" kabul edilir.
    48:21Oyunun Devamı
    • Kullanıcı "left" seçerse, "You went left and fell off a cliff. Game over, try again" mesajı verilir.
    • Kullanıcı "right" seçerse, "Okay, you now see a bridge. Do you want to swim under it or cross it?" sorusu sorulur.
    • Köprüde "swim" seçilirse "You got eaten by an alligator. You die", "cross" seçilirse "You found the gold and won" mesajı verilir.
    50:22Oyunun Genişletilmesi
    • Eğitmen, oyunun daha karmaşık hale getirilebileceğini belirtiyor.
    • Doğru bir seçim yapıldığında bile, daha fazla if-else yapısı eklenerek oyun daha da karmaşıklaştırılabilir.
    • Bu yapı sayesinde oyun daha ilginç ve karmaşık hale getirilebilir.
    50:40İlk Proje: Karmaşık Seçim Sistemi
    • Kullanıcılardan silah seçimi istenebilir ve bu seçim gelecekteki eylemleri etkileyebilir.
    • Kullanıcı "swim" ve "axe" silahlarından birini seçebilir, silah türüne göre alligatöre karşı başarılı olup olamayacağı değişebilir.
    • Proje basit bir başlangıç projesi olarak tasarlanmış olup, kullanıcılar kodu kopyalayabilir veya daha karmaşık hale getirebilirler.
    52:14İkinci Proje: Metin Tabanlı Hesaplayıcı
    • Metin tabanlı hesaplayıcı, kullanıcıların sayılarla işlem yapmasını sağlayacak bir uygulama olacak.
    • Hesaplayıcı, kullanıcıların "5 + 7" gibi ifadeleri yazıp sonuçlarını alabilecek şekilde tasarlanacak.
    • Proje, kullanıcıların birden fazla işlem yapmasını ve eşit işaretiyle sonuç almasını sağlayacak şekilde geliştirilebilir.
    53:47Aritmetik Operatörler
    • Python'da aritmetik operatörler sadece sayılar üzerinde çalışır, string veya boolean değerlerle çalışmaz.
    • Toplama (+), çıkarma (-), bölme (/), çarpma (*), üs alma (**) ve mod alma (mod) operatörleri kullanılır.
    • Bölme işlemi her zaman float (ondalıklı sayı) sonucu verir, mod alma operatörü ise bölme işleminin kalanını verir.
    56:12Hata Yönetimi ve İşlem Sırası
    • Python'da hata oluştuğunda hata mesajı görüntülenir ve hata mesajı programın hangi kısmında olduğunu gösterir.
    • İşlem sırası (BEDMASS) matematikteki gibi çalışır: önce parantezler, sonra üsler, ardından bölme ve çarpma, en son toplama ve çıkarma yapılır.
    • Operandlar, operatör tarafından işlenen değerlerdir ve hesaplayıcıda kullanıcıdan alınan sayılar operand olarak kullanılır.
    58:45Veri Türü Hatası
    • Kullanıcıdan alınan sayılar string olarak depolanır, bu nedenle matematiksel işlemler yerine string birleştirme işlemi gerçekleşir.
    • "3 + (-9)" ifadesi, string birleştirme işlemi olarak "3 -9" olarak değerlendirilir ve sonuç "3 -9" olarak görüntülenir.
    59:38String'leri Sayıya Dönüştürme
    • String'leri sayıya dönüştürmek için "int" fonksiyonu kullanılabilir, ancak bu sadece geçerli sayıları dönüştürür.
    • "int" fonksiyonu ile "9.2" ve "3.5" gibi float değerleri dönüştürülemeyebilir ve "invalid literal for int with base 10" hatası verir.
    • Tüm durumları işlemek için float değerleri kullanmak daha uygundur çünkü bu şekilde hem tam sayı hem de ondalıklı sayı işlemleri yapılabilir.
    1:01:16İşlem İşaretlerini İşleme
    • Sadece toplama işlemi yapmak için if ifadeleri kullanılır: "if sign == '+' then result = float(operand1) + float(operand2)"
    • Çıkarma işlemi için "if sign == '-'" şeklinde if ifadesi eklenir.
    • Bölme ve çarpma işlemleri için de benzer şekilde if ifadeleri kullanılır: "if sign == '/'" ve "if sign == '*'"
    1:03:18Edge Case ve Hata Yönetimi
    • Bölme işlemi için "if operand2 != 0'" kontrolü eklenir, aksi takdirde "division by zero" hatası verilir.
    • Sonuç değişkeni tanımlanmadığında "result not defined" hatası alınır, bu nedenle sonuç değişkeni önceden tanımlanmalıdır.
    • Operandların sayı olup olmadığını kontrol etmek için "try-except" bloğu kullanılır, böylece geçersiz operandlar için "invalid operand" mesajı verilir.
    1:08:14Hata Yönetimi ve Koşullu İfadeler
    • Kodda "invalid number" ve "invalid operands" hataları oluştuğunda, sadece geçerli operandlar için işlem yapmak gerekiyor.
    • Kodun sadece geçerli operandlar için çalışması için iki yöntem kullanılabilir: tüm kodu try bloğu içine almak veya bir "flag" değişkeni kullanarak koşullu ifadeler oluşturmak.
    • Flag değişkeni, operandların başarıyla dönüştürüldüğünde true değerine ayarlanır ve bu durumda işlem yapılır.
    1:10:45While Döngüsü
    • While döngüsü, belirtilen koşul doğru olduğu sürece devam eden bir döngüdür.
    • While döngüsünde "break" kelimesi kullanıldığında döngü hemen sonlanır, "continue" kelimesi kullanıldığında ise döngü başa döner.
    • While döngüsü, kullanıcıdan sürekli geçerli giriş almak için kullanılabilir.
    1:16:44Fonksiyonlar
    • Fonksiyon, tekrar tekrar kullanılabilen kod bloklarıdır.
    • Fonksiyon oluşturmak için "def" anahtar kelimesi kullanılır ve fonksiyona bir isim verilir.
    • Fonksiyonlar argümanlar alabilir ve bu argümanlar fonksiyonun içinde kullanılabilir.
    1:17:46Fonksiyonlar ve Return Anahtar Kelimesi
    • Fonksiyonlar, tekrar tekrar kullanılabilen ve belirli işlemler yapabilen kod bloklarıdır.
    • Return anahtar kelimesi, fonksiyonun bir değer döndürmesini sağlar ve bu değer fonksiyon çağrıldığı yere gönderilir.
    • Fonksiyon içinde return ifadesi kullanıldığında, fonksiyon hemen sona erer ve belirtilen değer döndürülür.
    1:20:06Fonksiyon Kullanımı ve Parametreler
    • Fonksiyonlar, tekrar tekrar kullanılabilen ve farklı değerlerle çalıştırılabilen kod bloklarıdır.
    • Fonksiyonlara parametre (argüman) olarak değer geçirilebilir, bu parametreler fonksiyonun davranışını etkiler.
    • Farklı veri tiplerini birleştirmek için string dönüşümleri yapılmalıdır, aksi takdirde hata alınır.
    1:23:51Temel Hesaplayıcı Projesi
    • Temel hesaplayıcı projesinde, kullanıcıdan iki sayı ve bir işlem işareti alınarak hesaplama yapılır.
    • Fonksiyonlar, tekrar tekrar kullanılabilen ve farklı değerlerle çalıştırılabilen kod bloklarıdır.
    • İşlem türüne göre toplama, çıkarma, bölme veya çarpma işlemleri yapılır ve sonuç ekrana yazdırılır.
    1:25:47Gelecek Proje ve For Döngüsü
    • Bir sonraki proje, kullanıcı bilgilerini (isim, yaş, e-posta) depolayan bir iletişim listesi uygulamasıdır.
    • For döngüsü, while döngüsüne benzer ancak belirli bir sayıda iterasyon yapmak için kullanılır.
    • For döngüsü, belirli bir aralıkta (örneğin 01'den 10'a kadar) döngü yapmak için kullanılır.
    1:26:33For Döngüsü ve Range Fonksiyonu
    • For döngüsü, bir değişkeni kullanarak iterasyon yapar ve bu değişken her döngüde güncellenir.
    • Range fonksiyonu, for döngüsünde iterasyon sayısını belirlemek için kullanılır ve varsayılan olarak 1'den başlayıp belirtilen sayıya kadar (o sayı dahil değil) iterasyon yapar.
    • Range fonksiyonuna birden fazla argüman geçirilebilir: ilk argüman başlangıç değeri, ikinci argüman bitiş değeri, üçüncü argüman ise iterasyon adımıdır.
    1:28:29For Döngüsünün Kullanımı
    • For döngüsü, belirli bir sayıda iterasyon yapmak istediğimizde kullanılırken, while döngüsü ise iterasyon sayısı belirsiz olduğunda tercih edilir.
    • For döngüsünde break ve continue anahtar kelimeleri kullanılabilir.
    1:29:18Listeler ve Özellikleri
    • Listeler, belirli bir sırayla depolanan farklı türdeki elemanları içeren koleksiyonlardır.
    • Listelerde her eleman bir indekse sahiptir ve indeksler 01'den başlar, son indeks ise listenin uzunluğundan 1 eksiktir.
    • Python'da negatif indeksler kullanılabilir ve len fonksiyonu ile listenin uzunluğu bulunabilir.
    1:32:28Listelerde Yöntemler
    • Append yöntemi, listeye yeni bir eleman ekler.
    • Pop yöntemi, belirtilen indeksteki elemanı listeden kaldırır.
    • Listelerde iterasyon yapmak için for döngüsü kullanılabilir ve bu döngü ya listedeki tüm elemanları (looping by item) ya da indeksleri (looping by index) kullanabilir.
    1:35:17List Kullanımı
    • List kullanırken, bir elemanın nerede olduğunu bilmek istemiyorsanız, sadece "for fruit in fruits" şeklinde kullanabilirsiniz.
    • Video, kullanıcıdan isim, yaş ve e-posta bilgilerini alıp bunları bir listede saklamak ve tüm kişileri yazdırmak için bir proje örneği sunuyor.
    • İlk olarak, isim, yaş ve e-posta bilgilerini kullanıcıdan almak için "input" fonksiyonu kullanılıyor.
    1:36:14Listlere Veri Ekleme
    • Boş listeler oluşturulup, kullanıcıdan alınan bilgiler bu listelere "append" fonksiyonu ile ekleniyor.
    • İlk örnekte, üç farklı kişi için isim, yaş ve e-posta bilgileri ayrı listelerde saklanıyor.
    • İkinci örnekte, üç farklı kişi için isim, yaş ve e-posta bilgileri tek bir liste içinde saklanıyor.
    1:38:58Dictionary Kullanımı
    • List yerine daha etkili bir veri saklama yöntemi olarak dictionary kullanılıyor.
    • Dictionary, anahtar-değer çiftleri şeklinde çalışır ve her kişi için isim, yaş ve e-posta bilgileri tek bir anahtar altında saklanabilir.
    • Dictionary'ler listelere eklenerek tüm kişiler tek bir yapıda tutulabilir.
    1:41:42Fonksiyonlar ve Kullanıcı Arayüzü
    • Kullanıcı arayüzüne "add", "delete" ve "search" seçenekleri ekleniyor.
    • "add_person" adında bir fonksiyon oluşturulup, kullanıcıdan alınan bilgileri kullanarak bir kişi nesnesi oluşturuluyor.
    • Kullanıcıdan alınan komut (add, delete veya search) kontrol edilerek uygun fonksiyon çağrılıyor.
    1:44:52Contact Manager Sistemi Oluşturma
    • İnsanlar bir liste olarak saklanacak ve "add" komutu ile yeni kişiler listeye eklenecek.
    • Sistem, kullanıcı "quit" komutu verene kadar çalışacak şekilde bir while döngüsü ile tasarlanacak.
    • Sistemde "add", "delete" ve "search" komutları bulunacak.
    1:46:41Delete Fonksiyonu Oluşturma
    • "Delete" komutu ile kullanıcıdan bir numara istenecek ve bu numaraya karşılık gelen kişi listeden silinecek.
    • Enumerate fonksiyonu kullanılarak listedeki her kişi ve numarası ekrana yazdırılacak.
    • Kullanıcıdan alınan numara geçerli değilse veya listede olmayan bir numara girilirse, sistem bunu kontrol edecek.
    1:52:40Listelerde Mutable Özellik
    • Listeler mutable (değiştirilebilir) özelliğe sahiptir, yani bir fonksiyona geçirilen liste içinde yapılan değişiklikler dışarıda da kalıcı olur.
    • "pop" fonksiyonu kullanılarak listeden belirli bir indeksdeki eleman çıkarılabilir.
    • Sistemde "person deleted" mesajı ekrana yazdırılarak silinen kişi bilgisi kullanıcıya iletilecek.
    1:54:30Sistemin Tamamlanması
    • Sistemde toplam kontak sayısı ekrana yazdırılacak.
    • Sistemde arama fonksiyonu eklenecek ve bu fonksiyon muhtemelen isim araması yapacak.
    1:55:11Python'da Arama Fonksiyonu Oluşturma
    • Arama fonksiyonu, kullanıcıdan alınan ismi listedeki tüm isimlerle karşılaştırarak eşleşen sonuçları bulur.
    • Arama işlemi için "results" adında bir liste oluşturulur ve bu liste, arama sonucunda bulunan kişileri saklar.
    • Arama işlemi için "for" döngüsü kullanılarak listedeki her kişi için, kullanıcıdan alınan ismin başlangıç kısmının kişinin isminin içinde olup olmadığı kontrol edilir.
    1:57:41Arama Fonksiyonunun Tamamlanması
    • Arama işlemi için kullanıcıdan alınan ve listedeki isimler de küçük harfe dönüştürülür, böylece farklı büyük-küçük harf kullanımları dikkate alınmaz.
    • Eşleşen sonuçlar "results" listesine eklenir ve sonuçlar "display_people" fonksiyonu aracılığıyla ekrana yazdırılır.
    • Arama fonksiyonu test edildiğinde, "tim" veya "timothy" gibi isimlerle arama yapıldığında ilgili kişiler listelenir.
    1:59:57JSON Dosyası Kullanımı
    • Programın daha kullanışlı olması için tüm kontakların bir metin dosyasına kaydedilmesi ve programın kapatıldığında verilerin kaybolmaması sağlanır.
    • JSON (JavaScript Object Notation) modülü kullanılarak kontaklar bir dosyaya kaydedilir ve program açıldığında bu dosyadan yüklenir.
    • JSON dosyası "with open" fonksiyonu kullanılarak "r" (okuma) modunda açılır ve "json.load" fonksiyonu ile içeriği okunur.
    2:03:34JSON Dosyasına Veri Kaydetme
    • Programın sonunda kontaklar JSON dosyasına kaydedilir, böylece program kapatıldığında veriler kaybolmaz.
    • Dosya "w" (yazma) modunda açılır ve "json.dump" fonksiyonu kullanılarak kontaklar dosyaya yazılır.
    • JSON dosyası, programın çalıştığı klasörde "contacts.json" adıyla oluşturulur.
    2:04:57Persistent Contact List Projesi
    • Kodda dosya ve içerik sırasının değiştirilmesi gerekiyor, önce içerik sonra dosya olmalı.
    • Programa "timage24@gmail.com" ve "joe23@hotmail.com" adresleri eklenerek kalıcı bir iletişim listesi oluşturuluyor.
    • Program çalıştırıldığında iletişim listesi boyutu iki olarak görünüyor ve "Joe" silindiğinde listeden de siliniyor.
    2:06:08Tic-Tac-Toe Projesi Başlangıcı
    • Tic-Tac-Toe veya X's ve O's oyunu için bir tahta oluşturulacak ve bu tahta iki boyutlu bir liste olarak temsil edilecek.
    • İki boyutlu liste, bir liste içinde başka bir liste şeklinde oluşturulur ve bu yapıya "nested list" veya "multi-dimensional array" denir.
    • Tahta, farklı satırlar ve sütunları temsil edecek ve X'ler, O'lar veya boş alanlar için kullanılacak.
    2:07:41Tahtayı Yazdırma Fonksiyonu
    • Tahtayı yazdırmak için "print_board" adında bir fonksiyon oluşturulacak.
    • Tahtayı yazdırmak için iki iç içe döngü kullanılacak: dış döngü satırları, iç döngü sütunları temsil edecek.
    • Her satır için bir string oluşturulacak ve satırlar arasında boşluk ve çizgi ile ayrılacak.
    2:12:06Tahtayı Düzenleme
    • Tahtayı yazdırdıktan sonra gereksiz çizgiler silinerek daha temiz bir görünüm elde ediliyor.
    • X'lerin ekranın kenarına yapışmaması için satırların başında boşluk ekleniyor.
    • Kullanıcıdan tahta üzerine bir X veya O yerleştirmek için satır ve sütun numarası isteniyor.
    2:14:08Oyun Pozisyonu Kontrolü
    • Oyuncudan alınan satır ve sütun değerlerinin geçerli olup olmadığı kontrol ediliyor.
    • Satır değeri 1'den küçük veya satır uzunluğu kadar büyükse, oyuncudan başka bir pozisyon girmesi isteniyor.
    • Sütun değeri 1'den küçük veya satır uzunluğu kadar büyükse, oyuncudan başka bir pozisyon girmesi isteniyor.
    2:15:19Pozisyon Kontrolü ve Oyun Mekanikleri
    • Oyuncudan alınan pozisyonun zaten dolu olup olmadığı kontrol ediliyor.
    • Eğer pozisyon boş değilse, oyuncudan başka bir pozisyon girmesi isteniyor.
    • Eğer tüm kontroller başarılıysa, oyuncudan alınan değer board'a yerleştiriliyor.
    2:19:39Oyun Döngüsü ve Oyuncu Değişimi
    • Oyun boş bir board ile başlıyor ve oyuncular sırayla hareket ediyor.
    • Her oyuncudan "X" veya "O" karakteri ile bir hamle isteniyor.
    • Her hamle sonrası board güncelleniyor ve oyuncular sırayla hareket ediyor.
    2:21:56Oyunun Sonu
    • Oyuncu sayısı 9'a ulaştığında oyun berabere sonuçlanıyor.
    • Oyun bittiğinde "Tie game" mesajı ekrana yazdırılıyor.
    • Oyunun son aşamasında kimin kazandığı kontrol edilecek.
    2:23:05Oyun Kazanma Kontrolü
    • Oyun kazanma kontrolü için "check_win" adında bir fonksiyon yazılacak.
    • Fonksiyona board parametresi alınacak ve tüm kazanma çizgileri (tuple'lar) bir liste içinde tanımlanacak.
    • Tuple, değiştirilemez (immutable) bir veri türüdür ve koordinatlar veya gruplanmış değerler için kullanılır.
    2:24:00Kazanma Çizgilerinin Tanımlanması
    • Oyunda toplam sekiz kazanma çizgisi vardır: üç satır, üç sütun ve iki diagonal.
    • Her çizgi için tuples oluşturulacak ve bu tuples'lar ayrı listelerde tutulacak.
    • Tuple'ların içindeki değerler, oyun tahtasındaki X veya O karakterlerini temsil edecek.
    2:26:39Kazanma Kontrolü Fonksiyonu
    • Fonksiyona "turn" parametresi de alınacak, bu parametre son hareket eden oyuncuyu temsil edecek.
    • Her çizgi için döngü oluşturulacak ve her pozisyonun turn değerine eşit olup olmadığı kontrol edilecek.
    • Eğer bir çizgi win durumuna ulaşırsa, "win" değişkeni true olarak ayarlanacak ve döngüden çıkılacak.
    2:29:42Oyun Sonucu Belirleme
    • Oyun sonunda "winner" değişkeni, check_win fonksiyonunun sonucuna göre true veya false olarak ayarlanacak.
    • Eğer winner true ise, "break" komutu ile döngüden çıkılacak ve kazanan oyuncu ekrana yazdırılacak.
    • Eğer turn sayısı 9'a ulaşırsa, oyun berabere (tie) olarak sonuçlanacak.
    2:31:36AI Ekleme
    • Oyunu tamamlamak için AI (bilgisayar) eklenecek.
    • AI için "computer_move" adında yeni bir fonksiyon yazılacak.
    • Bu fonksiyon, bilgisayarın hangi pozisyonda hareket etmesi gerektiğini belirleyecek ve kazanma durumuna ulaşırsa o pozisyonu seçecektir.
    2:32:52Bilgisayar Hamlesi Algoritması
    • Konuşmacı, bilgisayar hamlesi algoritmasını açıklıyor ve izleyicilere bir zorluk olarak bırakıyor.
    • İzleyicilerden yorumlarda cevabı paylaşmalarını veya konuşmacının kodlamasını izlemelerini istiyor.
    2:33:17Beşinci Proje Tanıtımı
    • Beşinci proje, rastgele quiz üreticisi ve değerlendiricisi olacak.
    • Proje, daha önceki projelerden daha karmaşık olmasa da, izleyicilere bir zorluk olarak sunuluyor.
    • Konuşmacı, projeyi kodlayacağını ancak izleyicilerin önce kendi başlarına denemelerini öneriyor.
    2:33:46Quiz Projesinin Özellikleri
    • Proje, soruları JSON dosyasında depolayacak ve her sorunun bir soru metni, dört seçenek ve doğru cevabı olacak.
    • Program, rastgele bir soru listesinden belirli sayıda (örneğin beş) soru seçerek quiz oluşturacak.
    • Kullanıcı cevaplarını değerlendirecek, doğru cevap oranını gösterecek ve puanları bir tabloya kaydedecek.
    2:35:00Python Kodlaması Başlangıcı
    • Proje için "random" ve "json" modülleri import ediliyor.
    • Soru listesi oluşturuluyor ve her soru için soru metni, seçenekler ve doğru cevap bilgileri ekleniyor.
    • Soru listesi, "questions.json" adlı bir JSON dosyasına kaydediliyor.
    2:37:11JSON Dosyasını Yükleme
    • "load_questions" adlı bir fonksiyon oluşturuluyor ve JSON dosyasını okuyup soruları döndürüyor.
    • JSON dosyasını yüklerken karşılaşılan hata, soruların sonundaki gereksiz virgüllerden kaynaklanıyor.
    • Virgüller kaldırıldıktan sonra tüm sorular başarıyla yükleniyor.
    2:39:00Rastgele Soru Seçimi
    • "get_random_questions" adlı bir fonksiyon oluşturuluyor ve belirli sayıda rastgele soru seçiyor.
    • Eğer istenen soru sayısı soru listesinin uzunluğundan fazla ise, tüm sorular seçiliyor.
    • Fonksiyon her çalıştırıldığında farklı sorular seçiyor.
    2:40:43Kullanıcıdan Cevap Alma
    • "ask_question" adlı bir fonksiyon oluşturuluyor ve kullanıcıya soru soruyor.
    • Fonksiyon, soruyu ve seçenekleri ekrana yazdırıyor.
    • Seçenekler, "1.", "2.", "3.", "4." şeklinde numaralandırılıyor.
    2:41:56Quiz Uygulaması İçin Kullanıcı Girişi
    • Kullanıcıdan doğru seçenek indeksini (1, 2, 3, 4 vb.) girmesi isteniyor.
    • Kullanıcıdan alınan değer int() fonksiyonu ile integer'a dönüştürülüyor.
    • Seçilen indeks 0, 1'den büyük veya soruların uzunluğundan küçük değilse, kullanıcı yanlış cevap vermiş oluyor.
    2:43:16Doğru Cevap Kontrolü
    • Kullanıcı doğru cevap vermişse, seçilen seçenek indeksindeki seçenek ile sorunun cevabı karşılaştırılıyor.
    • Eğer seçenekler eşitse, kullanıcı doğru cevap vermiş oluyor.
    • Tüm sorular için bu işlem tekrarlanıyor.
    2:45:16Quiz Sonuçlarının Gösterilmesi
    • Doğru cevap sayısını takip etmek için bir değişken oluşturuluyor.
    • Kullanıcıdan toplam soru sayısı isteniyor ve bu değer rastgele soruların oluşturulmasında kullanılıyor.
    • Doğru cevap sayısı toplam soru sayısına bölünerek yüzde olarak hesaplanıyor ve sonuç ekrana yazdırılıyor.
    2:48:54Timer Ekleme
    • Kullanıcının quiz'i tamamlama süresini takip etmek için zaman modülü kullanılıyor.
    • Kullanıcı soru sayısını girdikten sonra timer başlatılıyor.
    • Quiz tamamlandığında, başlangıç ve bitiş zamanları arasındaki fark saniye cinsinden hesaplanıyor ve ekrana yazdırılıyor.
    2:50:33Projenin Geliştirilmesi
    • Kullanıcıların tüm skorlarını kaydetmek ve liderboard oluşturmak için JSON kullanılabilir.
    • Bu şekilde kimin en hızlı cevap verdiğini, en doğru cevap verdiğini ve hangi soruların en zor olduğunu görebilirsiniz.

    Yanıtı değerlendir

  • Yazeka sinir ağı makaleleri veya videoları özetliyor