Can sıkıntısından aklıma gereksiz bir proje daha geldi, bilgisayarımda saklayacağım bazı numaraları şifreleyesim geldi ve basit bir şifreleme programı yazmaya karar verdim. Mantığı aşırı basit, girdiğiniz şeyi(string aslında) bir liste olarak kaydediyor, daha sonra bu listedeki elemanların yerlerini rastgele değiştirip kaçıncı elemanın şifrelenmiş halde kaçıncı eleman olduğunu “anahtar” altında kayıt ediyor. Anahtarın mantığı şu; eğer anahtardaki ilk eleman “7″ ise, bu ilk elemanın şifrelenmiş halde 7. eleman olduğu anlamına geliyor. İkinci fonksiyon da şifreli hal ile anahtardan, orjinal şeyi(string :) ) veriyor.
10 dakikada yazılmış bu koddan beklenebileceği gibi bir sürü eksiği var, hatta sadece kısa ve numaralardan oluşmuş stringlerde düzgün çalışıyor diyebilirim. Eğer uzun olursa anahtar da uzuyor(anahtar ile şifre aynı uzunlukta olacak). Eğer ASCII’de olmayan karakterler girerseniz sapıtıyor. Henüz buna bir çözüm bulamadım, o yüzden türkçe karakterler de kullanılamıyor. Neyse ki Python3 ile UTF’e geçeceğiz ve türkçe karakterlerle uğraşmamıza gerek kalmayacak. Fonksiyonlar aşağıda:
import random
def sifrele(girdi):
a = 0
pos = []
yer = {}
for i in girdi:
pos.append(a)
yer[a] = i
a += 1
random.shuffle(pos)
sifreli = ""
for i in pos:
sifreli += yer[i]
print sifreli
print "anahtar:", pos
def coz(girdi, anahtar):
a = 0
pos = []
for i in girdi:
pos.append(a)
a += 1
cozum = ""
for i in pos:
cozum += girdi[anahtar.index(i)]
print cozum
Bir daha canım sıkıldığında muhtemelen Regex Cheat Sheet gibi birşey hazırlamaya başlayacağım, konu anlatımlı test kitabı formatında olmasını planlıyorum :). Onun dışında .mp3 formatlı dosyaları kurcalamayı öğrendiğimde müzik arşivimi düzenleyecek bir kod yazmayı planlıyorum. Aslında bir de frame’e göre düzenlenmiş altyazıları zamana göre dönüştürmeyi planlıyorum..
Alakalı Yazılar
- Python’da REGEX, işe yarar bir çalışma (0)
Python'da REGEXP(regular expressions, düzenli ifadeler) öğrenmek uzun süredir aklımdaydı, okuduğum kaynak kodlarda sürekli karşılaşıyordum. Bir süredir Python ile uğraşmıyorum fakat aklıma geldikçe bazı küçük işlerimde kullanıyorum. Geçen gün de aklıma bir fikir geldi. Bir dizi(aslında ben anime izliyorum) izlediğinizi düşünün, izlediğiniz videonun özelliklerine göre(FPS) bir altyazı buldunuz fakat altyazıda renklendirme, italik yazdırma vs. için garip [...]
- Python’da derleme, yorumlama üzerinde (0)
Daha önceki yazılarımda da sürekli belirttiğim, uzun süredir merak ettiğim Python'da derleme, yorumlama vs. ve hız konularını az önce Learning Python kitabında gördüm. Kitaptan alıntı yapamayacağım ama kısaca özetlemek gerekirse:
Python'da kod byte-code'a derleniyor, daha sonra byte-code yorumlanıyor. Byte-code taşınılabilir ve platform bağımsız bir format. Python kodu hiçbir zaman binary'ye derlenmiyor. Bu yüzden bazı programlar C [...]
- Kafamdaki sorular (1)
Okul kütüphanesi ve Wikipedia'da geçirdiğim saatler sonunda kafamda oluşan onlarca sorudan aklıma geldiği kadarını mail yoluyla internette bu soruyu cevaplayabileceğine inandığım insanlara gönderiyorum. Sorular şunlar:
Bir programın(farklı programlama dillerinde yazılmış, henüz derlenmemiş, kaynak koddan) çalıştırıldığı andan işini yapıp kapandığı ana kadar olaylar nasıl gelişir? Bir süredir ilgilendiğim Python programlama dili üzerinden anlatmak gerekirse, programı çalıştırdığımda önce [...]
- C++ öğrenmek (3)
Bölümümle alakalı olarak değil de, ilgi alanlarımla alaklı olarak günün birinde C/C++ öğrenmek zorundaymışım gibi hissediyorum kendimi(işin temeline olan merak). C++ öğrenmenin yeterince zor olması yetmiyormuş gibi, bir de Python gibi bir dilden sonra öğrenmeye çalışırsanız çok daha zor oluyor(denedim, ordan biliyorum).
Programlamaya Python ile başlamakla ne kadar doğru bir karar verdiğimi sürekli düşünüyorum. Gerçekten de [...]
- Bir programlama dili öğrenmek (2)
Biraz önce bir arakadaşla muhabbet ederken bundan bahsettik. Bir programlama dili nasıl öğrenilir?
Asp dilini uzun zaman önce bir bilgisayar dergisinin programlama bölümünden takip ede ede bir yere kadar öğrenmiştim, daha sonra aynı dergi asp ile ilgili birkaç kitapçık vermişti ve o şekilde işe yarayacak derecede öğrendim. Öğrenmesi kolaydı çünki eski, çok bilinen bir dildi ve [...]