Python’a geçiş: çalışma modeli, türler ve temel ifadeler

Bu bölümde programlamayı sıfırdan öğrenmeyeceğiz. Değişken, ifade, girdi, çıktı ve veri türü gibi kavramları daha önce C ile gördünüz. Buradaki amaç, aynı fikirlerin Python’da nasıl ifade edildiğini hızlı biçimde kurmak, iki dil arasındaki önemli çalışma farklarını görünür hâle getirmek ve dönem boyunca kullanacağımız yerel Python ortamını hazır hâle getirmektir.

Bu bölümün kapsamı

NoteSınavda sorulur
  • tür bilgisinin değişken adında değil değerde durması
  • input() dönüşünün str olması ve açık tür dönüşümü
  • /, //, % ve ** operatörlerinin ayrımı
  • negatif sayılarda // ve % davranışının C’den farkı
  • f-string ile okunabilir çıktı
  • girintinin blok yapısının parçası olması
  • and, or, not ile karşılaştırma ifadeleri
  • Python ve VS Code kurulumunun adımları
  • Windows’ta py / Microsoft Store yönlendirmesi ayrıntısı
  • float değerlerin ikili gösterim ayrıntıları

Bu başlıklar konunun devamıdır; ileride karşınıza çıkar ama bu derste ezberlemeniz beklenmiyor.

Aynı program C’de ve Python’da neden farklı sonuç verebilir?

Sözdizimini yan yana koyduğunuzda iki dil birbirine benzer. Farklar sözdiziminde değil davranıştadır: türün nerede durduğu, input() çağrısının ne döndürdüğü ve negatif sayılarda bölmenin hangi yöne yuvarlandığı. Bu üçünü bilmeden yazılan kod çoğu zaman çalışır; yalnızca yanlış sonuç verir.

Çalışma ortamını hazırlayın

Ders sayfasındaki Pyodide hücreleri kısa denemeleri kurulum yapmadan çalıştırmak için uygundur. Ancak 4. haftadan itibaren birden fazla dosya ve 13. haftada paket yapısı kullanacağımız için yerel Python ortamı bu dersin çalışma aracıdır.

Başlangıçta üç parçayı ayırın:

  • Python yorumlayıcısı: .py dosyasını gerçekten çalıştırır.
  • Visual Studio Code (VS Code): kodu yazıp düzenlediğimiz editördür.
  • Microsoft Python eklentisi: VS Code’a Python desteği ve yorumlayıcı seçimi ekler.

Python’ı kurun ve sürümü doğrulayın

Python’ı resmî python.org/downloads sayfasından kurun. Bu dersin ilerleyen haftalarındaki list[str] ve Product | None sözdizimini sorunsuz kullanmak için Python 3.10 veya daha yeni bir sürüm gereklidir; güncel desteklenen sürümü tercih edin.

Windows’ta python.org kurulum programını kullanıyorsanız Add Python to PATH seçeneğini etkinleştirin. Ardından terminalde:

py --version

veya gerekirse:

python --version

macOS/Linux’ta:

python3 --version

çıktısını kontrol edin. Python 3.10 veya daha yeni bir sürüm görmelisiniz.

WarningWindows’ta python Microsoft Store’u açıyorsa

Önce py --version komutunu deneyin. Python’ı python.org’dan kurduğunuz hâlde python komutu Store’a yönleniyorsa Ayarlar → Uygulamalar → Gelişmiş uygulama ayarları → Uygulama yürütme diğer adları bölümündeki Store python.exe/python3.exe diğer adlarını kapatmanız gerekebilir.

VS Code ve Python eklentisi

  1. code.visualstudio.com adresinden VS Code’u kurun.
  2. Extensions / Eklentiler bölümünde Python aratıp yayıncısı Microsoft olan eklentiyi kurun.
  3. Gerekirse Komut Paleti’nden Python: Select Interpreter komutuyla az önce doğruladığınız Python 3 sürümünü seçin.

Ders için bir klasör açıp hafta01.py oluşturun:

print("Merhaba, Python!")

Dosyayı VS Code’daki Run Python File düğmesiyle çalıştırın. Terminalden çalıştırmak isterseniz Windows’ta py hafta01.py, macOS/Linux’ta python3 hafta01.py kullanabilirsiniz.

TipKurulumda takılırsanız AI’den yardım isteyebilirsiniz

Kurulum ve ortam sorunlarında AI kullanabilirsiniz. İşletim sisteminizi, yaptığınız adımı ve hata mesajını olduğu gibi verin; örneğin “Windows kullanıyorum, py --version şu hatayı veriyor: … Sırayla neleri kontrol etmeliyim?” gibi. Önerilen komutun ne yaptığını anlamadan uygulamayın; parola, erişim anahtarı veya kişisel bilgi paylaşmayın.

ImportantBu haftanın yerel ortam kontrolü

Dersi tamamlamadan önce bilgisayarınızda hafta01.py dosyasını hem VS Code’dan hem terminalden en az bir kez çalıştırın. Böylece 4. ve 13. haftadaki çok dosyalı görevlerde ilk kez çalışma ortamıyla uğraşmak zorunda kalmazsınız.

C’den Python’a geçerken ilk fark

C’de değişkenin türünü bildirim sırasında açıkça yazarız:

Python’da bir değişken adının bir değere bağlandığını ve tür bilgisinin değerde bulunduğunu gösteren diyagram.

Adın değere bağlanması
int age = 20;
double average = 78.5;

Python’da değişken adı bir değere bağlanır; türü değişken bildiriminde ayrıca yazmayız:

age = 20
average = 78.5

Bu, Python’da türlerin olmadığı anlamına gelmez. 20 bir int, 78.5 bir float nesnesidir. Fark, değişken adının önceden sabit bir türe bildirilmemesidir.

Important“Tür yok” değil, “tür değerde”

Python güçlü ve dinamik tür sistemine sahiptir. Bir değerin türü vardır; ancak değişken adı çalışma sırasında farklı türde başka bir değere bağlanabilir. Bu esneklik rahatlık sağlarken yanlış varsayımları da kolaylaştırabilir.

İlk karşılaştırma

Aşağıdaki Python kodunu çalıştırmadan önce her satırın ne yazdıracağını tahmin edin.

type() bir değerin çalışma anındaki türünü görmemizi sağlar. Bu derste sık sık “ben bunun ne olduğunu sanıyordum?” sorusunu type() ile doğrulayacağız.

input() her zaman metin döndürür

C’de scanf() biçim belirteciyle doğrudan sayısal değişkene veri okuyabilirsiniz. Python’da input() kullanıcının yazdığını metin olarak döndürür.

input ile alınan metnin sayısal işlem öncesinde uygun türe dönüştürülmesini gösteren akış.

input() ve tür dönüşümü

Web sürümündeki Pyodide hücrelerinde terminal tipi etkileşim yerine sabit örnek değer kullanacağız. Böylece aynı hücre hem tarayıcıda hem PDF’de öngörülebilir biçimde okunabilir:

Yerel Python ortamında kullanıcıdan veri almak istediğimizde input() kullanabiliriz. Sayısal işlem yapmak istiyorsak açık dönüşüm gerekir:

age = int(input("Yaş: "))
price = float(input("Fiyat: "))

Tahmin et

İlk sonuç neden 15 değil? Çünkü +, iki str değeri için metin birleştirme anlamına gelir.

Temel operatörler

Amaç Python Örnek
toplama + a + b
çıkarma - a - b
çarpma * a * b
gerçek bölme / 7 / 23.5
taban bölme // 7 // 23
kalan % 7 % 21
üs ** 2 ** 38
eşitlik == score == 50
eşit değil != score != 50
küçük / büyük <, > age > 18
küçük-eşit / büyük-eşit <=, >= score >= 50
mantıksal ve and age >= 18 and active
mantıksal veya or admin or owner
mantıksal değil not not active

C’deki &&, || ve ! yerine Python’da okunabilir sözcükler kullanılır: and, or, not.

Negatif sayılarda // ve %: C alışkanlığını taşımayın

Pozitif sayılarda ilk sezgi çoğu zaman yeterlidir; negatif sayılarda ise C ile Python farklı sonuç verebilir. Python’da // sonucu aşağıya doğru (floor) yuvarlanır:

Python sonucu -4 ve 1 olur. C’de tamsayı bölme sıfıra doğru kırpıldığı için benzer ifade tipik olarak -3 ve -1 üretir. Python’da bölüm ve kalan şu ilişkiyi korur:

a == (a // b) * b + (a % b)

Bu nedenle negatif değerli indeks, takvim, döngüsel sayaç veya koordinat hesabında C’deki sonucu varsaymayın; küçük bir örnekle doğrulayın.

Birleşik atamalar

Python’da da mevcut değeri güncelleyen kısa yazımlar kullanılır:

balance += 50
stock -= 1
price *= 0.90
average /= 2

Örneğin stock -= 1, stock = stock - 1 ile aynı güncelleme niyetini ifade eder. Sonraki haftalarda nesne durumunu değiştirirken bu biçimleri sık göreceksiniz.

f-string ile okunabilir çıktı

Değişkenleri metne yerleştirmenin en okunabilir yollarından biri f-string’dir:

Başındaki f, {...} içindeki Python ifadelerinin değerlendirilmesini sağlar. Böylece "Not: " + str(score) gibi gereksiz tür dönüşümü ve metin birleştirme zincirlerinden kaçınabiliriz.

Girinti neden sözdiziminin parçası?

Python’da {} ile blok sınırı çizmek yerine girinti kullanılır:

if score >= 50:
    print("Geçti")
    print("Tebrikler")

print("Program bitti")

İlk iki print koşul bloğundadır. Son satır blok dışındadır. Girinti yalnızca görünüm tercihi değil, programın yapısının bir parçasıdır.

Warning

Sekme ve boşlukları bilinçsiz karıştırmak sorun çıkarabilir. Bu derste editörün otomatik girintisini kullanın ve bir blokta tutarlı biçimde dört boşluk tercih edin.

Alıştırma — C kodunu Python’a çevir

Aşağıdaki C kodunun davranışını düşünün:

int first = 40;
int second = 60;
double average = (first + second) / 2.0;
printf("%.1f\n", average);

Python karşılığındaki boşluğu tamamlayın.

Python’da / gerçek bölme yapar. (first + second) / 2 yeterlidir.

average = (first + second) / 2

Alıştırma — Tür hatasını bul

Aşağıdaki kod bilinçli olarak sorunludur:

Önce hata türünü tahmin edin. Ardından age değerini uygun biçimde dönüştürerek programın 21 yazdırmasını sağlayın.

Bu hata söz dizimi hatası değildir. Kod yapısal olarak okunabilir; fakat str ile int doğrudan toplanamaz. Bu nedenle çalışma zamanında TypeError oluşur.

Alıştırma — İfadeyi değiştir

Aşağıdaki program bir ürünün KDV dahil tutarını hesaplıyor.

Şunları sırayla deneyin:

  1. Fiyatı 399.90 yapın.
  2. KDV oranını %10 yapın.
  3. Sonucu round(final_price, 2) ile iki ondalığa yuvarlayın.
  4. type(final_price) sonucunu inceleyin.

Küçük üretim görevi — Ölçüm dönüştürücü

Santimetre cinsinden bir uzunluğu metreye dönüştüren kısa bir program yazın. Örnek:

Girdi: 175
Çıktı: 1.75 metre

Web sürümünde sabit bir cm değeri kullanın. Yerel Python ortamında aynı çözümü input() ile kullanıcıdan değer alacak biçimde genişletin ve çıktıyı f-string ile üretin.

Çözümünüzde en az şu üç adım görünür olsun:

  1. Değeri alma veya örnek değeri belirleme,
  2. Sayısal dönüşüm/hesaplama,
  3. Sonucu yazdırma.

Çalışır kod teslimi: hafta01.py dosyanız en az iki farklı girdiyle çalışmalı; kullandığınız Python sürümünü de dosyanın altına yorum olarak yazın.

Sınav provası

Önce kendi cevabını seç; sonra cevap anahtarında her şıkkın neden doğru veya yanlış olduğunu oku. Çeldiriciler uydurma değil, bu konuda gerçekten yapılan hatalardır. Sınav maddeleri de bu mantıkla yazılır.

Madde 1. C’de int age = 20; yazarken Python’da yalnızca age = 20 yazmak neyi anlatır?

  • A. Tür yalnızca print() çağrısında belirlenir
  • B. Değerin bir türü vardır; tür bilgisi değişken adına değil, adın bağlandığı değere aittir
  • C. Python age adını kendiliğinden int olarak bildirir ve başka tür atanamaz
  • D. Python’da tür kavramı yoktur; bütün değerler aynı biçimde saklanır
  • E. Python bütün sayıları float olarak tutar, bu yüzden bildirim gerekmez

Madde 2. Aşağıdaki program ne yazdırır?

value = 20
value = "yirmi"
print(type(value))
  • A. <class 'int'>
  • B. Hata verir; bir ada farklı türde değer atanamaz
  • C. <class 'str'>
  • D. <class 'object'>
  • E. int, str

Madde 3. Aşağıdaki program ne yazdırır?

x = "10"
y = "5"
print(x + y)
  • A. 10 5
  • B. "10" + "5"
  • C. 15
  • D. 105
  • E. TypeError

Madde 4. age = input("Yaş: ") satırından sonra age + 1 yazılırsa ne olur?

  • A. input() çağrısı sayı için int, metin için str döndürür
  • B. ValueError oluşur
  • C. Sonuç, girilen metnin sonuna 1 eklenmiş hâlidir
  • D. Kullanıcı sayı yazdıysa Python metni kendiliğinden sayıya çevirir
  • E. TypeError oluşur; input() str döndürdüğü için önce int(age) gerekir

Madde 5. Aşağıdaki program ne yazdırır?

print(7 / 2)
print(7 // 2)
print(7 % 2)
  • A. 3.5, 3, 1
  • B. 3.5, 4, 1
  • C. 3.5, 3.5, 1
  • D. 3.5, 3, 0.5
  • E. 3, 3, 1

Madde 6. Aşağıdaki program ne yazdırır?

print(-7 // 2)
print(-7 % 2)
  • A. -3 ve -1
  • B. -4 ve 1
  • C. -3.5 ve 1
  • D. -4 ve -1
  • E. -3 ve 1

Madde 7. score = 87.456 iken print(f"Not: {score:.1f}") ne yazdırır?

  • A. Not: {score:.1f}
  • B. Not: 87
  • C. Not: 87.5
  • D. Not: 87.4
  • E. Not: 87.456

Madde 8. Aşağıdaki program score = 30 iken ne yazdırır?

if score >= 50:
    print("Geçti")
    print("Tebrikler")

print("Program bitti")
  • A. Hiçbir şey yazmaz
  • B. Geçti, Tebrikler ve Program bitti
  • C. Yalnızca Tebrikler
  • D. Yalnızca Program bitti
  • E. IndentationError verir

Madde 9. age = 20 ve active = False iken aşağıdaki program ne yazdırır?

print(age >= 18 and active)
print(age >= 18 or active)
print(not active)
  • A. False, False, True
  • B. True, True, False
  • C. Hata verir; and yerine && yazılmalıdır
  • D. True, False, True
  • E. False, True, True

Madde 1 — Doğru: B. 20 bir int nesnesidir. age yalnızca o nesneye bağlanan addır; ad önceden bir türe bildirilmez.

  • A yanlış: Tür değerin kendisine aittir ve print() çağrılmasa da vardır.
  • C yanlış: Aynı ad sonradan age = "yirmi" ile bir str değere bağlanabilir; bildirim yoktur.
  • D yanlış: type(20) int verir. Tür vardır, yalnızca bildirimi adda değil değerdedir.
  • E yanlış: type(20) int döndürür; int ve float ayrı türlerdir.

Madde 2 — Doğru: C. Ad son atamayla str değere bağlanır; type() o anki değerin türünü verir.

  • A yanlış: İlk atamanın türü adda saklanmaz; ikinci atama bağı değiştirir.
  • B yanlış: Python’da ad bildirimi olmadığı için bu atama geçerlidir.
  • D yanlış: type() en genel türü değil, değerin kendi türünü verir.
  • E yanlış: Ad tek bir değere bağlıdır; türlerin listesi tutulmaz.

Madde 3 — Doğru: D. İki str değer için + metin birleştirmedir; toplama değildir.

  • A yanlış: + araya boşluk koymaz; boşluk yalnızca print virgülünde oluşur.
  • B yanlış: İfade değerlendirilir; kaynak metni olduğu gibi yazılmaz.
  • C yanlış: Sayısal toplama için önce int(x) + int(y) yazmak gerekir.
  • E yanlış: Aynı türden iki str için + geçerlidir; hata farklı türler karışınca çıkar.

Madde 4 — Doğru: E. str ile int toplanamaz. Sayısal işlem için açık dönüşüm yazılmalıdır.

  • A yanlış: Dönüş türü girilen içeriğe göre değişmez; her zaman strdir.
  • B yanlış: ValueError uygunsuz içerikli dönüşümde çıkar; burada sorun tür uyuşmazlığıdır.
  • C yanlış: Bu ancak age + "1" yazılsaydı olurdu; 1 bir inttir.
  • D yanlış: Böyle bir örtük dönüşüm yoktur; girdi her zaman metindir.

Madde 5 — Doğru: A. / gerçek bölmedir ve float verir; // tabana yuvarlar; % kalanı verir.

  • B yanlış: // en yakına değil aşağıya yuvarlar.
  • C yanlış: // sonucu aşağı yuvarlar; burada 3 olur.
  • D yanlış: % tamsayılarda kalanı verir; ondalık artığı değil.
  • E yanlış: / tamsayı bölme değildir; sonucu 3.5tir.

Madde 6 — Doğru: B. Python // sonucunu aşağıya (floor) yuvarlar; kalan bölenin işaretini alır.

  • A yanlış: Bu C’nin sıfıra kırpan davranışıdır; Python’da geçerli değildir.
  • C yanlış: // gerçek bölme değildir; tamsayılarda tamsayı verir.
  • D yanlış: Python’da kalanın işareti bölenin işaretiyle aynıdır; burada bölen pozitiftir.
  • E yanlış: Bölüm ve kalan birlikte a == (a // b) * b + (a % b) ilişkisini korumalıdır; -3 bunu bozar.

Madde 7 — Doğru: C. :.1f biçim belirteci değeri bir ondalık basamağa yuvarlayarak yazar.

  • A yanlış: Başındaki f sayesinde süslü parantez içi değerlendirilir.
  • B yanlış: .1f bir ondalık basamak bırakır; tamsayıya çevirmez.
  • D yanlış: Kesme değil yuvarlama yapılır; 87.45687.5.
  • E yanlış: Biçim belirteci yok sayılmaz; basamak sayısını sınırlar.

Madde 8 — Doğru: D. İlk iki print girintili olduğu için bloğun içindedir ve koşul yanlışken atlanır. Son satır blok dışındadır.

  • A yanlış: Son print bloğun dışındadır ve her durumda çalışır.
  • B yanlış: Koşul yanlıştır; blok içindeki satırlar çalışmaz.
  • C yanlış: Bloktaki iki satır aynı koşula bağlıdır; biri seçilip diğeri atlanmaz.
  • E yanlış: Girinti tutarlıdır; sözdizimi geçerlidir.

Madde 9 — Doğru: E. and her iki yanın da doğru olmasını ister; or birinin doğru olmasını yeter sayar; not değeri tersine çevirir.

  • A yanlış: age >= 18 doğru olduğu için or sonucu doğrudur.
  • B yanlış: active yanlış olduğu için and sonucu yanlıştır ve not active doğrudur.
  • C yanlış: Python’da mantıksal operatörler and, or ve not sözcükleridir.
  • D yanlış: and ve or sonuçları ters yazılmış.

Tek sayfa özet

  • Python, daha önce bildiğiniz programlama kavramlarını daha az sözdizimiyle ifade eder.
  • Az sözdizimi, daha az düşünme gerektirdiği anlamına gelmez.
  • input() metin döndürür; tür dönüşümünü bilinçli yapın.
  • Negatif sayılarda // ve % için C davranışını varsaymayın.
  • Karşılaştırma ve birleşik atama operatörleri sonraki örneklerde sık kullanılacaktır.
  • f-string, değerleri okunabilir biçimde metne yerleştirir.
  • Web hücreleri hızlı deney içindir; yerel Python + VS Code çok dosyalı çalışmaların temel ortamıdır.
  • Girinti programın yapısının parçasıdır.
  • type() ve küçük deneyler, Python’ın çalışma modelini doğrulamak için kullanışlıdır.

Gelecek hafta koşul ve döngüleri hızlıca Python’a taşıyacak, ardından Python’ın string üzerinde doğrudan dolaşma gibi C’den farklı güçlü yönlerini kullanacağız.

Bu bölümün kazanımları

Bu bölümü bitiren öğrenci:

  • Python’da tür bilgisinin değişken adında değil değerde durduğunu açıklar.
  • input() çağrısının str döndürdüğünü bilir ve sayısal işlem için açık dönüşüm yapar.
  • /, //, % ve ** operatörlerini birbirinden ayırır.
  • Negatif sayılarda Python’ın // ve % davranışının C’den farkını açıklar.
  • f-string ile okunabilir çıktı üretir.
  • Girintinin görünüm tercihi değil blok yapısının parçası olduğunu belirler.
  • and, or, not ile karşılaştırma ifadeleri kurar ve sonucunu tahmin eder.
Back to top