Python ile Sezar Şifrelemesi
Bu örneğimizde, Python ile “Sezar Şifrelemesi” olarak adlandırılan programı kodlayacağız. Adını ünlü Roma İmparatoru Julius Sezar’dan alan bu şifreleme, her harfin belirlenen adım sayısı kadar ötelenmesi ile oluşturulur.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
alfabe = 'abcdefghijklmnopqrstuvwxyz' def caesar(metin, kaydirma, yon): sonuc = "" if yon == "coz": kaydirma = -kaydirma for karakter in metin: if karakter in alfabe: yeni_karakter = alfabe[(alfabe.index(karakter) + kaydirma) % 26] sonuc += yeni_karakter else: sonuc += karakter print(f"Sonuç: {sonuc}") while True: yon = input("Şifrelemek için 'şifrele', çözmek için 'çöz' yazın:\n").lower() metin = input("Mesajınızı yazın:\n").lower() kaydirma = int(input("Kaydırma sayısını yazın:\n")) % 26 caesar(metin, kaydirma, yon) tekrar = input("Tekrar yapmak istiyorsanız 'evet' yazın. Aksi halde 'hayır' yazın.\n").lower() if tekrar == "hayir": print("Güle güle") break |
Kodumuzda caesar
adında Caesar şifreleme işleminin gerçekleştirildiği bir fonksiyon tanımladık. Fonksiyonumuz, “metni”, “kaydırma miktarını” ve “işlem yönünü” (şifreleme veya çözme) parametre olarak alır. Metni işlerken, her bir karakteri for döngüsü ile tek tek kontrol ediyoruz. Eğer karakter bir harfse, belirtilen miktarda kaydırma işlemi gerçekleştiriyoruz. Harf dışında bir karakter (sayı, sembol, boşluk vb.) gelirse, bu karakteri doğrudan sonuca ekliyoruz. Fonksiyon tamamlandığında, şifrelenmiş veya çözülmüş metni döndürüyoruz.
Ana program kısmında ise, kullanıcıdan input() fonksiyonu ile şifreleme veya çözme isteği, metin ve kaydırma miktarı gibi bilgileri alıyoruz ve Bu bilgilerle caesar
fonksiyonunu çağırarak sonucu elde edip ekrana yazdırıyoruz. Alfabede 26 harf bulunduğu için kullanıcı eğer kaydırma miktarını 26’dan fazla olacak şekilde verirse tekrar başa dönmelidir. Örneğin, 27 harf kaydırmak 1 harf kaydırmakla aynı sonucu verir, 28 harf kaydırmak 2 harf kaydırmakla aynı sonucu verir ve bu böyle devam eder. İşte tam da bunu yapabilmek için mod (% 26) kullandık.
Ayrıca, kullanıcının programı tekrar tekrar kullanabilmesi için bu işlemleri bir while döngüsü içerisinde gerçekleştiriyoruz. Kullanıcı hayır
demediği sürece programı tekrar tekrar kullanabilir. Kodu çalıştırmak için: Trinket