Sözde koddan Python koduna geçmek için önce sözde kodu girdi, işlem, koşul ve çıktı olarak ayırırsın. Sonra her adımı karşılığı olan bir Python yapısına çevirirsin: değerler için değişken, karar için if, sayıyla tekrar için for, koşula bağlı tekrar için while. Kodu bitirince küçük bir test girdisini kâğıt üzerinde izleyip çıktıyla karşılaştırarak çeviriyi doğrularsın.
Çeviriden önce sözde kodu dört parçaya ayır
Sözde kodu Python'a çevirirken cümleleri doğrudan kodlamazsın; her cümledeki işlem türünü belirlersin. "Sayaç 0 olsun" bir atamadır, "sayı çiftse" bir karşılaştırmadır, "listedeki her sayı için" bir tekrardır, "ekrana yaz" bir yazdırmadır. İşlem türü belli olunca Python karşılığı da belli olur; çünkü her türün Python'da oturmuş bir yazımı vardır.
Bu ayrımı yapmak için sözde kodu satır satır okurken dört soruya cevap ara:
- Girdiler neler? Algoritma dışarıdan hangi değerleri alıyor: kullanıcının yazdığı bir sayı mı, hazır bir liste mi? Bunlar kodun başında değişkene dönüşür.
- Hangi işlemler yapılıyor? Toplama, çarpma, sayaç artırma, bir değeri başka değişkene kaydetme gibi hesaplama ve atama adımlarını işaretle.
- Hangi koşullar var? "Eğer", "değilse", "...sürdükçe" gibi ifadeler karar noktalarıdır. Her birinde neyin neyle karşılaştırıldığını yaz.
- Çıktı ne ve nerede görünecek? Sonuç döngünün içinde mi her seferinde yazdırılacak, yoksa döngü bittikten sonra bir kez mi? Bu yer, sonucun doğru çıkıp çıkmayacağını doğrudan etkiler.
Örneğin "Sayıları sırayla gez, çift olanları say, sonunda sayıyı yaz" cümlesinde girdi sayı listesidir, işlem sayaç artırmadır, koşul çift olma kontrolüdür, çıktı ise döngüden sonra tek bir yazdırmadır. Bu dört parçayı kâğıda not ettikten sonra kod yazmak, doğrudan klavyeye geçmekten çok daha az hata üretir.
Bu ayrımı yaparken ya da algoritmanın akışını kurarken zorlanıyorsan sorun Python sözdiziminde değil, mantığı adımlara bölmede olabilir. Bunu dilden bağımsız ölçmek için ücretsiz Algoritmik Düşünme Testini çözebilirsin.
Sözde kod ifadeleri Python'da hangi yapıya karşılık gelir?

Aşağıdaki tablo en sık karşılaşılan sözde kod ifadelerini Python karşılıklarıyla eşleştirir. Çeviri sırasında bir cümlede takıldığında buraya dönebilirsin.
| Sözde kod ifadesi | Python karşılığı | Not |
|---|---|---|
| sayaç 0 olsun | sayac = 0 | Tek eşittir atama yapar |
| eğer sayı çiftse | if sayi % 2 == 0: | Karşılaştırma çift eşittirle yapılır, satır iki nokta ile biter |
| değilse | else: | if ile aynı girinti seviyesinde durur |
| listedeki her sayı için | for sayi in sayilar: | Liste elemanlarını sırayla gezer |
| 1'den 10'a kadar tekrarla | for i in range(1, 11): | Bitiş değeri dahil değildir |
| sayaç bir artsın | sayac += 1 | sayac = sayac + 1 ile aynıdır |
| ekrana yaz | print(sayi) | Yazdırılacak değer parantez içine girer |
| koşul sürdükçe tekrarla | while koşul: | Koşulu bozacak bir adım gövdede olmalı |
Değişken tanımlama
Sözde kodda "toplam 0 olsun" ya da "ad değişkenine kullanıcının yazdığı metin atansın" dediğinde Python'da toplam = 0 yazarsın. Python'da değişkenin türünü önceden bildirmezsin; atanan değer türü belirler. Değişken adlarını sözde kodda kullandığın sözcüklerden seç, böylece kodu okurken karşılığı kolay bulursun.
Koşul çevirme: if ve else
"Eğer not 50 ve üzeriyse geçti yaz, değilse kaldı yaz" cümlesi iki dallı bir karardır. Python'da if not_ >= 50: satırıyla başlar, altındaki girintili blok koşul doğruysa çalışır; else: altındaki blok ise diğer durumu karşılar. Karşılaştırma işleçleri (==, !=, <, >=) sözde koddaki "eşitse", "farklıysa", "küçükse", "en az" ifadelerinin karşılığıdır.
Sayaçlı döngü: for ve range
Tekrar sayısı baştan belliyse ("10 kez", "1'den 100'e kadar") for ile range kullan. range(1, 11) 1'den başlar, 10'da biter; 11 dahil değildir. Bir listeyi ya da metni baştan sona gezecekseniz for eleman in liste: biçimi daha sade olur ve sayaç tutmana gerek kalmaz.
Koşula bağlı döngü: while
Tekrar sayısı baştan bilinmiyorsa ("kullanıcı doğru şifreyi girene kadar", "sayı 1 olana kadar böl") while uygundur. Burada her turda koşulu değiştiren bir adım bulunmalı; aksi hâlde döngü hiç bitmez. Yazdığın while için kendine şunu sor: gövdedeki hangi satır koşulu eninde sonunda yanlış yapacak?
Kullanıcı girdisi ve çıktı kontrolü: input, tür dönüşümü ve print
Sözde koddaki "oku" ifadesi Python'da input() olur. Burada bir tuzak var: input() kullanıcı ne yazarsa yazsın her zaman metin (str) döndürür. Kullanıcı 5 yazsa bile elinde sayı değil, "5" karakteri vardır. Sözde kod "sayıyı 2 ile çarp" diyorsa önce sayi = int(input()) yazman gerekir. Ondalıklı değerlerde float() kullanılır.
Boşlukla ayrılmış birden çok sayı için input().split() metni parçalara bölüp bir liste üretir. Ancak bu listenin elemanları hâlâ metindir. [int(x) for x in input().split()] yazarak her parçayı sayıya çevirirsin. Girdi "3 8 5" ise sonuç [3, 8, 5] olur.
Sözde koddaki "yaz" ifadesinin karşılığı print() işlevidir. Yazdırdıktan sonra çıktıyı, sözde kodu elle çalıştırdığında beklediğin sonuçla karşılaştır. Değerin türünden emin değilsen print(type(sayi)) ile kontrol edebilirsin. Metin geliyorsa ekranda <class 'str'>, sayı geliyorsa <class 'int'> görürsün. Bu küçük alışkanlık, tür kaynaklı hataların büyük kısmını daha çalıştırmadan yakalamana yardımcı olur.
Aynı problem üç biçimde: sözde kod, Python kodu ve beklenen çıktı

Problem: Listedeki sayıları dolaş, çift olanları yazdır ve kaç tane çift sayı olduğunu say. Önce sözde kod:
sayılar listesi: 3, 8, 5, 12, 7, 6
çift_sayısı = 0
listedeki her sayı için:
eğer sayı 2'ye bölündüğünde kalan 0 ise:
sayıyı yaz
çift_sayısı = çift_sayısı + 1
çift_sayısı değerini yaz
Şimdi bunu dört parçaya ayır:
- Girdi: altı sayılık liste
- İşlem: her sayıyı sırayla dolaşmak ve sayacı artırmak
- Koşul: kalanın 0 olup olmadığı
- Çıktı: çift sayılar ve toplam adet
Her parçanın Python yapısı belli: liste bir değişkene, dolaşma for'a, kalan kontrolü if'e, "yaz" ise print'e dönüşür.
sayilar = [3, 8, 5, 12, 7, 6]
cift_sayisi = 0
for sayi in sayilar:
if sayi % 2 == 0:
print(sayi)
cift_sayisi += 1
print("Çift sayı adedi:", cift_sayisi)
Beklenen çıktı:
8
12
6
Çift sayı adedi: 3
Kodu çalıştırmadan önce elle izleyerek doğrula:
sayi3: kalan 1, koşul yanlış, sayaç 0.sayi8: kalan 0, koşul doğru, 8 yazılır, sayaç 1.sayi5: kalan 1, koşul yanlış, sayaç 1.sayi12: kalan 0, koşul doğru, 12 yazılır, sayaç 2.sayi7: kalan 1, koşul yanlış, sayaç 2.sayi6: kalan 0, koşul doğru, 6 yazılır, sayaç 3.
Elle bulduğun sonuç ile ekrandaki çıktı aynıysa çeviri doğru demektir. Farklıysa hangi turda ayrıldıklarına bakarak hatayı bulabilirsin. Aynı yöntemi farklı problemlerle denemek için blogdaki diğer yazılara göz atabilirsin.
Çeviride en sık yapılan üç hata: = ile ==, metin gelen girdi, girinti
Çeviri çoğu zaman mantık yüzünden değil, üç küçük ayrıntı yüzünden bozulur. Her birinin belirtisi farklıdır, o yüzden hataya bakarak teşhis koyabilirsin.
1. Koşulda = yerine == yazmak
Sözde kodda "sayı 2'ye bölündüğünde kalan 0 ise" yazar, çevirirken if sayi % 2 = 0: yazarsın. Python bu satırda SyntaxError verir. Sebep şudur: = atama yapar, yani sağdaki değeri soldaki isme yükler. == ise iki değeri karşılaştırır ve True ya da False üretir. Koşul soran her yerde karşılaştırma gerekir: if sayi % 2 == 0:.
2. input'tan gelen değerin metin olması
input() kullanıcı 4 yazsa bile '4' gibi bir metin döndürür. Belirti iki türlü olabilir. sayi % 2 satırı TypeError verir, çünkü % metinde biçimlendirme işlemidir. sayi == 4 ise hata vermeden sessizce False döner, çünkü '4' ile 4 farklı türlerdir. İkincisi daha zararlıdır, çünkü program çalışır ama yanlış sonuç verir. Çözüm girdiyi alır almaz dönüştürmektir: sayi = int(input()).
3. Girintinin yanlış yerde olması
Python'da girinti, bir satırın hangi döngünün ya da if'in gövdesine ait olduğunu belirler. Çift sayıları sayan bir döngüde şu iki yazım farklı sonuç verir:
sayac += 1satırıif'ten bir seviye içeride ise yalnızca koşul doğruyken artar, yani çift sayılar sayılır.- Aynı satır
ifile aynı hizada ise her turda artar ve listenin eleman sayısını bulursun.
İkinci durumda hata mesajı çıkmaz, yalnızca sonuç yanlış olur. Bunu elle izleme yakalar: her turdan sonra sayac değerini yazdığında beklediğinle uyuşmadığını görürsün. Girinti hiç yoksa ise IndentationError alırsın ve Python eksik girintinin yerini satır numarasıyla gösterir.
Dönüşümü alışkanlığa çevirmek için sonraki adım
Bir sonraki adım için kendine küçük bir görev ver: "Bir listedeki en büyük sayıyı bul." Önce girdi, işlem, koşul ve çıktıyı dört satırda yaz. Sonra [3, 8, 5] gibi küçük bir listeyle elle izle. Beklenen yaklaşım şöyledir: ilk elemanı en_buyuk adıyla tut, listeyi for ile dolaş, her elemanı if s > en_buyuk: ile karşılaştır, büyükse değeri güncelle. Elle izlemende sonuç 8 çıkmalı; kodu çalıştırdığında da aynısını görmelisin.
Bu pratiği düzenli yapmak ve her hatada kimin baktığını bilmek istersen, birebir Python Özel Ders programında kişiye özel müfredat ve ödevler Öğrenci Portalı üzerinden takip edilir. Kayıt başvuru usulüyle alınır ve başvurunun ardından ücretsiz ön görüşme yapılır.
Çeviri bir kez oturduğunda, yeni bir sözde kodla karşılaşman yalnızca aynı dört parçayı yeniden aramak anlamına gelir.