Programlama

Yeni başlayanlar için Python

Python'u python.org'dan kurar, py uzantılı bir dosya oluşturur ve terminalde tek bir komutla çalıştırırsınız. Bu dersin sonunda bir metnin uzunluğunu ölçen gerçek bir program yazmış ve bir Python hatasını aşağıdan yukarıya okumayı öğrenmiş olursunuz.

  • Ders 4 / 14
  • Başlangıç
  • Ücretsiz, kayıt yok

Kurulumdan işe yarayan ilk programa

Beş adım ve hiçbiri birkaç dakikadan fazlasını istemiyor.

  1. python.org'dan kurun

    macOS ve çoğu Linux'ta zaten vardır, bu adım gerekmez.

    1
  2. Tek komutla doğrulayın

    python3 --version bir numara yazmalı. Windows'ta py --version.

    2
  3. Bir py dosyası oluşturun

    Adı hello.py olsun ve uzantısı gerçekten py olsun, py.txt değil.

    3
  4. Girdi alın, çıktı verin

    input her zaman bir dizi verir; hesap için dönüştürmelisiniz.

    4
  5. Gerçekten işe yarayan bir program yazın

    Kitaptaki alıştırma değil, kendi ihtiyacınız olan bir şey. Sizi sürdüren budur.

    5

Bu beş adım kendi makinenizde çalışır; barındırma ya da alan adı gerektirmez. PHP sayfaları için kurulmuş bir web barındırmada Python çalıştırmak ayrı ve sonraki bir konudur.

Son kontrol: Bu dersteki bilgiler ve araç adları bu tarihte kaynaklarıyla yeniden doğrulanır.

Python'u nereden alırsınız ve kurulduğunu nasıl anlarsınız?

python.org indirme sayfasından, başka hiçbir yerden değil. macOS ve çoğu Linux sisteminde Python zaten vardır ve bir şey kurmanız gerekmez; Windows'ta kurarsınız.

Kurulumdan sonra tek bir iş kalır ve yeni başlayanların çoğu tam orada takılır: terminalin Python'u gördüğünden emin olun. Bir terminal açın ve şunu yazın:

python3 --version

Bir sürüm numarası yazıldıysa bitti. Bu dersin yazıldığı sunucuda bu komutun yanıtı Python 3.12.3.

Şimdi hiçbir eğitimin söylemediği tuzak: birçok sistemde python diye bir komut hiç yoktur. Bu sunucuda python "command not found" der, python3 ise çalışır. Yani bir eğitimde python file.py görüp de hiçbir şey olmuyorsa hata sizde değil; 3'ü ekleyin.

Windows'un üçüncü bir hikâyesi var. Python'un kendi belgeleri, birden çok sürüm söz konusu olduğunda önerilen komutun py olduğunu söylüyor. Yani Windows'ta önce py --version deneyin, sonra bu dersteki komutların geri kalanında da aynı py'yi kullanın.

py --version

Bu üç komuttan hiçbiri yanıt vermiyorsa sorun kurulum değildir; işletim sistemi Python'un nerede olduğunu henüz bilmiyordur. Çözümü sistemden sisteme değişir ve resmî Windows kılavuzunda Windows sürümü vardır.

İlk betik: boş dosyadan terminaldeki çıktıya

Bir metin dosyası oluşturun ve adını hello.py koyun. Herhangi bir metin düzenleyici işi görür; bugün araç aramanın günü değil. İçine tek bir satır yazın:

print("Hello")

Şimdi o klasörde bir terminal açın ve çalıştırın:

python3 hello.py

Hello kelimesi yazılır. Hepsi bu. Hiçbir şey yazılmadıysa şu üç şeyi bu sırayla denetleyin: dosyanın bulunduğu klasörde olduğunuzu, dosya adının gerçekten py ile bittiğini (py.txt ile değil) ve yazdığınız komutun bir önceki bölümde yanıt veren komut olduğunu.

Bir de Python'u diğer dillerden ayıran bir kural var; onunla şimdi tanışmak daha iyi: Python'da satır başındaki boşluğun anlamı vardır. Süslü parantez ve noktalı virgül yoktur; bir şeyin bir bloğa ait olduğunu girinti vererek gösterirsiniz ve dilin tamamı bu uzlaşının üzerine kuruludur.

if 5 > 3:
    print("bigger")

print'ten önceki o dört boşluk süs değil, söz dizimidir. Kaldırırsanız Python IndentationError verir. Tavsiyemiz, düzenleyicinizi tab yerine dört boşluk koyacak biçimde ayarlamanız ve bir daha bunu düşünmemeniz.

İşleyen dört şey ve her şeyi durduran dört şey

İlk günün "neden çalışmıyor" sorularının neredeyse hepsi diğer sütunda.

İlk gün kontrol sayfasıbeş dakika

Bunlar doğruysa çalışır

  • Sürüm komutu bir numara yazıyor
  • Dosya gerçekten py uzantısıyla kaydedilmiş
  • Terminal, dosyanın bulunduğu klasörde
  • Girintilerin hepsi boşluk ve tab ile karışmamış

Bunlar varsa hiçbir şey olmaz

  • python yazdınız ve bu sistemde böyle bir komut hiç yok
  • Düzenleyici dosyayı hello.py.txt olarak kaydetmiş
  • Dosya bir klasörde, terminal başka klasörde
  • Kodu bir web sayfasından kopyaladınız ve görünmez boşluklar da geldi

Bu liste yalnızca programın çalışmasını garanti eder, doğruluğunu değil. Çalışan kod yine de yanlış yanıt verebilir.

Girdi ve çıktı: kullanıcıyla konuşan bir program

Yalnızca yazan bir program bir nottur. input onu yanıt alan bir şeye çevirir:

name = input("Your name: ")
print("Hello,", name)

Bu iki satırda üç şey var. input verdiğiniz mesajı yazar ve bekler, kullanıcının yazdığını döndürür ve siz o yanıtı sonra kullanmak üzere name değişkeninde tutarsınız.

Şimdi bu bölümün en önemli noktası; bilmezseniz programcılık hayatınızın ilk gerçek hatası olur: input her zaman bir karakter dizisi döndürür. Python'un kendi belgeleri tam olarak bunu söyler; kullanıcı 17 yazsa bile size ulaşan "17" metnidir, 17 sayısı değil.

age = input("Age: ")
print(type(age))

Bu iki satırın çıktısı <class 'str'>. Yani ona bir eklemek isterseniz Python hata verir ve önce dönüştürmeniz gerekir:

age = input("Age: ")
print(int(age) + 1)

Neden böyle? Çünkü Python tahmin etmez. Dizileri kendiliğinden sayıya çevirseydi, posta kodu ya da kart numarası alan bir program baştaki sıfırlarını kaybederdi. Dönüşüm sizindir, çünkü o dizinin ne anlama geldiğini yalnızca siz bilirsiniz. Bu, bu yoldaki bir sonraki dersin tümüyle veri türlerine ayrılmasına yetecek kadar önemlidir; derslerin sırasını yol sayfasında görürsünüz.

İlk gerçek programınız: bir metnin uzunluğunu sayın

Şimdi gerçekten kendimizin kullandığı bir şey yazıyoruz. Bu sitedeki her sayfanın meta açıklaması 140 ile 160 karakter arasında olmak zorunda; bu bizim kendi ev kuralımız ve bu sitenin içerik kılavuzunda yazılı. Bunu gözle saymak zahmetli iştir; altı satır Python onu on saniyelik işe çevirir.

text = input("Meta description: ")
n = len(text)

if n < 140:
    print(f"{n} characters. Too short, {140 - n} to go.")
elif n > 160:
    print(f"{n} characters. Too long by {n - 160}.")
else:
    print(f"{n} characters. Good.")

Bu dersi yayımlamadan önce bu kodu üç kez çalıştırdık ve gerçek çıktısı şuydu: 90 karakterlik bir metin için 90 characters. Too short, 50 to go.; 150 karakter için 150 characters. Good.; 200 karakter için 200 characters. Too long by 40.

Bu altı satırda dört yeni şey var. len bir dizinin uzunluğunu verir. if, elif ve else üç yollu bir dallanma kurar ve yalnızca biri çalışır. Tırnaktan önceki f, metnin içine süslü parantez koyabileceğiniz ve Python'un içindekini hesaplayacağı anlamına gelir; adı f-string'dir ve metin kurmanın en kolay yoludur. Aritmetik de o parantezlerin içinde çalışır, {140 - n} gibi.

Şimdi yapmaya değer bir alıştırma: koşulu karakter yerine kelime sayacak biçimde değiştirin. İpucu: len(text.split()). Bunu kendiniz değiştirdiyseniz ve çalıştıysa artık "eğitim almış" biri değil, "program yazmış" birisiniz.

Hata mı aldınız? Geri izlemeyi aşağıdan okuyun

Yeni başlayanı gerçekten program yazan birinden ayıran beceri, hatasız kod yazmak değil, hataları okumaktır. Bir program devrildiğinde Python bir geri izleme yazar ve o korkutucu metin bloğu aslında sahip olduğunuz en kesin dosttur.

Şu dosyayı oluşturun, adını shop.py koyun ve çalıştırın:

def price(n):
    return n * 1.09

print(price("100"))

Ve yazılan tam olarak şu. Gerçek çalıştırma; yazılması gereken şey değil:

Traceback (most recent call last):
  File "shop.py", line 4, in <module>
    print(price("100"))
          ^^^^^^^^^^^^
  File "shop.py", line 2, in price
    return n * 1.09
           ~~^~~~~~
TypeError: can't multiply sequence by non-int of type 'float'

Şimdi kural: aşağıdan okuyun. Son satır ne olduğunu söyler; burada bir veri türü yanlıştı. Üstündeki satır nerede olduğunu söyler: 2. satır, price fonksiyonunun içinde. Onun üstü ise orayı kimin çağırdığını: 4. satır. Yani hata 2. satırda göründü ama nedeni 4. satırda, sayı yerine bir dizi gönderdiğimiz yerde.

Bu sıra her geri izleme için geçerlidir; bu yüzden yukarı doğru okuma alışkanlığını bugün kurmaya değer. Önce son cümleyi okuyun, sonra kendi dosyanıza ait en alttaki satıra bakın, ancak ondan sonra gerisine bakın.

Herkesin hayatındaki ilk üç hata şunlardır: SyntaxError, cümleyi yanlış yazdığınız anlamına gelir ve genellikle bir parantez ya da iki nokta eksiktir; NameError, var olmayan bir adı çağırdığınız anlamına gelir ve çoğu zaman bir yazım hatasıdır; TypeError ise yukarıdaki, yani verinin türü onunla yaptığınız şeye uymuyor demektir.

Sırada ne var: zamanınızı harcamayan bir plan

Bu dersten sonra en çok ihtiyacınız olan şey başka bir eğitim değil, gerçekten ihtiyaç duyduğunuz küçük bir programdır. Ama sırası önemli olan dört şey var ve aşağıdaki şekil o sırayı gösteriyor.

Önce standart kütüphane. Python hazır kod dolu bir depoyla kurulur ve gündelik işlerin çoğunun hazır bir fonksiyonu vardır. Herhangi bir döngü yazmadan önce, işin zaten yapılmış olup olmadığını görmek için resmî Python eğitiminde bir kez arayın.

Sonra pip ile dış kütüphane kurmak ve onunla birlikte sanal ortam. Bu iki satır projenizi sistemin geri kalanından ayrı tutar:

python3 -m venv .venv
source .venv/bin/activate

Windows'ta ikinci satır farklıdır ve doğru biçimi venv belgelerinde vardır. Neden zahmet? Çünkü onsuz yaptığınız her proje kütüphanelerini aynı ortak yere döker ve altı ay sonra iki proje bir kütüphanenin iki farklı sürümünü isterken sisteminizde yalnızca biri olur.

Son olarak, programınız yüz satırı geçtiğinde fonksiyon yazmaya, sonra sınıflara geçin. Daha önce değil. Sınıfların iyileştirdiği bir acınız olmadan sınıf öğrenmek, birçok kişiyi programlamadan vazgeçiren hatadır.

İlk programdan sonra beş basamak, bu sırayla

Burada sıra hızdan önemlidir; üçüncüden önce dördüncü basamak yalnızca kafa karışıklığı üretir.

  1. 1

    Standart kütüphaneyi arayın

    Herhangi bir döngü yazmadan önce o işin zaten yapılmış olup olmadığına bakın.

  2. 2

    Kendi ihtiyacınız olan bir program

    Kitap alıştırması bırakılır; kendi derdinizi çözen şey bırakılmaz.

  3. 3

    pip ve sanal ortam

    İki proje bir kütüphanenin iki sürümünü ilk istediğinde nedenini anlarsınız.

  4. 4

    Fonksiyon yazmak

    Aynı kod parçasını üçüncü kez kopyaladığınızda vakti gelmiştir.

  5. 5

    Sınıflar, ancak bir acınız olduğunda

    Çözdüğü bir sorun olmadan sınıf öğrenmek, bırakmanın en yaygın nedenidir.

Bu merdiven bir sıradır, takvim değil. Haftada iki saati olan biri ikinci basamakta aylarca kalabilir ve bu normaldir.

Yapay zekayla hızlı yol

Yeni başlayan için hızlı yol "kodu al" değildir. Herhangi bir model altı satırlık bir betik yazar ve insanı olduğu yerde tutan tam da budur. Gerçek hız başka yerde: yazmadan sonraki döngüde. Profesyonelin yaptığı şey, kodunu modele saldırsın diye vermek, programı deviren girdileri buldurmak ve onları bir kullanıcıdan önce kendisi denemektir. Burada hızlı ve ucuz bir model yeter; güncel tercihimiz <a class="text-link" href="/tr/ai/">yapay zeka bölümünde</a>.

  1. Önce en küçük sürümü kendiniz yazın ve çalıştırın, çirkin olsa bile. Bir kez çalışmış kod bir olgudur; yalnızca okunmuş kod bir tahmindir.
  2. Gerçek kodunuzu bir gerçek girdi ve bir gerçek çıktıyla verin ve yeniden yazım değil, en kısa düzeltme listesini isteyin. Yeniden yazım kodunuzu modelin koduyla değiştirir ve sizi olduğunuz yerde bırakır.
  3. Programı deviren beş girdi isteyin, sonra o beşini kendiniz çalıştırın. Öğrenme doğru yanıtı okurken değil, orada olur.
  4. Son olarak elle yazdığınız kısmın yerini standart kütüphanedeki hangi fonksiyonun aldığını sorun ve o fonksiyon adını modelin yanıtında değil resmî belgelerde doğrulayın.

Kopyalamaya hazır şablon

Bu benim Python kodum. Kendim yazdim ve calisiyor:

{tam kodunuz}

Su girdiyle: {gercek bir girdi}
Sunu yazdi: {o calistirmanin gercek ciktisi}

Dort sey yap ve yeniden yazma:

1. Bu kod icin en kisa duzeltme listesi. Her madde icin: hangi satir, ne
   degisikligi, neden. Yapimi ve adlarimi koru.
2. Bu programi deviren ya da yanlis yanit verdiren bes girdi; her biri icin ne
   oldugunu soyleyen bir cumle. Bos deger, negatif sayi, cok uzun metin ve
   Ingilizce olmayan harfleri mutlaka dusun.
3. Bu kodun bir parcasi Python standart kutuphanesinde zaten varsa, fonksiyon ve
   modul adini tam olarak yaz. Yalnizca ad, kod yok.
4. Bu programi bir adim ileri goturen kucuk bir alistirma ver ve yanitini yazma.

Kodumda anlasilmayan bir sey varsa bana sor.

Çıktıya güvenmeden önce: Modelin terminali yok. Python sürümünüzü, işletim sisteminizi ve dosyalarınızın nerede olduğunu göremez; bu yüzden "bunun çalışması lazım" diyen her cümleyi çalıştırmak size düşer. İkinci nokta daha önemli: bazen var olmayan bir kütüphane ya da fonksiyon adını tam bir güvenle söyler. Kural basit: önerilen her <code>import</code>'u kurmadan önce resmî Python belgelerinde arayın; orada yoksa yoktur.

Bu işte yapay zeka

Modelle öğrenme konusundaki tutumumuz açık: onu yanıt veren biri olarak değil, size soru soran bir öğretmen olarak kullanın. Pratikte fark, isteme eklediğiniz tek bir cümledir: "önce açıkla, sonra bana üç soru sor ve yanıtlarımı bekle." Aşağıdaki üç aracın ikisinde tam bunun için ayrı bir mod var.

Gerçekten işe yarayan araçlar

  • Claude Yanıtlamak yerine bir öğretmen gibi soru soran bir öğrenme modu var; tam olarak "açıkla, sonra beni sına" kalıbı için yapılmış. İran, Anthropic'in desteklenen ülkeler listesinde yok; bunu Anthropic'in kendi sayfasında okuduk.
  • Gemini Rehberli öğrenme modu da yanıtlamak yerine soru sorar ve kendi kaynağınızı çalışma kılavuzuna, kartlara ve sınavlara çevirir. Farsçayı iyi anlar. Google'ın kendi sayfası Gemini web uygulamasının 230'dan fazla ülke ve bölgede çalıştığını söylüyor; İran o listede yok.
  • ChatGPT En yaygın seçim ve temel Python soruları için kabul edilebilir. Yapay zeka bölümümüzde henüz bir sayfası yok; bu yüzden erişimi ya da fiyatı hakkında burada bir iddiada bulunmuyoruz.

Nerede geri teper

Doğrudan size karşı çalışan bir kullanım var ve açıkça söylenmeli: alıştırmayı kopyala, yanıtı al, geç. Yanıt doğrudur, sayfa dolar ve kafanızın içinde hiçbir şey olmaz. Programlama becerisi tam olarak takıldığınız dakikalarda kurulur ve model tam o dakikaları sizden alır. Bir üniversite dersi için alıştırma yapıyorsanız, yararsız olmasının yanı sıra kopya da olur. İkinci risk başka türden: model hatanız hakkında tümüyle ikna edici bir yanıt verir ve yanlış katmanı açıklayabilir; sorun çalışma zamanındayken söz dizimini anlatabilir. Bu yüzden bu ders önce geri izlemeyi öğretti, modele ancak ondan sonra uzandı; geri izlemeyi okuyan biri yanıtın kendi sorunuyla ilgisi olup olmadığını anlar. Üçüncü risk erişim: İran, Anthropic'in iki desteklenen ülke listesinde de yok ve Google'ın Gemini ülke listesinde de yok; ikisini de üreticilerin kendi sayfalarında okuduk ve etrafından dolaşma yolları önermiyoruz.

Kaynaklar: Python docs: built-in functions, input Anthropic: supported countries Google: where Gemini Apps are available

Bu tavsiyenin sınırı

Bu ders sizi kendi makinenizdeki tek dosyalık bir betiğe kadar götürür ve orada durur. Dağıtım, paketleme, eşzamanlılık ve veri kütüphanelerinin hiçbiri burada yok. Bir de birçok kişinin geç karşılaştığı pratik bir sınır var: bir Python betiği, PHP sayfaları için kurulmuş bir web barındırmada çalışmaz; sürekli çalışan bir şey için kontrol ettiğiniz bir sunucu gerekir. Ve öğrenmenin kendisi hakkında dürüst bir not: bu sayfayı okumak öğrenmek değildir. Tek gerçek ölçüt, kodu değiştirmiş olmanız ve yine de çalışmasıdır.

Kendi işimizden

Python bizim işimizde kapı bekçisidir ve bu dersin kendisi de onun altından geçti. Biri 281, diğeri 89 satır olan iki Python betiği, her ders dosyasını dört diline böler ve her parçada yasaklı karakterleri arar. Bugün aynı iki betik, bu oturumun kardeş dersinde bir karakteri reddetti: göze tamamen sağlam görünen bir kelimenin içindeki bir hemze. İnsan onu görmedi, altı satır Python bir saniyeden kısa sürede gördü. Bunu yapan Python 3.12.3 ve bu sunucuda python3 --version ile denetlenebilir; aynı sunucuda python komutu ise hiç yok, ki bu da bu dersin birinci bölümündeki tuzaktır.

Gerçek devam soruları

Python 2 mi 3 mü öğrenmeli?

Tereddütsüz sürüm 3. Python 2 yıllardır desteklenmiyor ve python.org indirme sayfası yalnızca 3 veriyor. Parantezsiz print "hello" içeren bir eğitime denk gelirseniz, o metin 2 için yazılmıştır ve gerisi de büyük olasılıkla eskimiştir.

Başlamak için hangi düzenleyici gerekir?

Bilgisayarınızda hâlihazırda olan. Herhangi bir düz metin düzenleyici py dosyasını kaydeder ve ilk gün bu yeter; yeter ki uzantıyı txt yapmasın. Düzenleyici, projeniz birkaç dosya olduğunda önem kazanır; o gün ne istediğinizi kendiniz bilirsiniz.

İngilizce bilmeden Python öğrenilir mi?

Evet, ama bir şeyi öğrenmeniz gerekir: hata mesajlarını okumayı. Hata metni İngilizcedir ve çevrilmez; ama tekrarlayan birkaç düzine cümledir ve iki hafta sonra ezbere bilirsiniz. İngilizce konuşmak ve yazmak gerekmez; TypeError ve NameError'ı tanımak gerekir.