Python

Klavyeden Girilen Kelimeyi Kelebek Deseninde Yazdıran Python Uygulaması

Python programı string ifadeler üzerinde istenilen tüm işlemleri gerçekleştirmemize izin verir. Bu uygulamada klavyeden girilen bir kelimeyi kelebek deseni oluşturarak görüntülemeye çalışacağız. Klavyeden girilen kelimemiz İSLAM olsun. Bu kelimeyi kelebek deseninde şöyle görüntüleyebiliriz.

İ               İ
İ S           S İ
İ S L       L S İ
İ S L A   A L S İ
İ S L A M A L S İ
İ S L A   A L S İ
İ S L       L S İ
İ S           S İ
İ               İ

Visual Studio programını açalım.

İsmi KelebekDeseni olan yeni bir Python uygulaması oluşturalım. 

Projeye kelebek.py isminde bir python dosyası ekleyelim.

Öncelikle klavyeden girilen kelimeyi saklayacak kelime isminde bir değişken oluşturalım.

kelime: str = ""

Kullanıcının girdiği kelimeyi bu değişkene aktaran kodları yazalım.

kelime = input("Kelimeyi giriniz : ")

Örnek kelimeye baktığımızda ilk satırda kelimenin ilk harfi yer almaktadır. Her iki harf arası ise 1 + 7 + 1 şeklinde bir desene sahiptir. Kelime soldan sağa ve sağdan sola şeklinde harf harf eklenmiştir. Kelimede harf sayısı 5 tanedir. Son harf ortak olduğu için sütun sayısı 5 * 2 - 1 = 9 olarak hesaplanır. İkinci satıra bakalım. Kelimede 2 harf kullanılmıştır. Desenimiz 2 + 5 + 2 şeklinde olacaktır. Öncelikle her bir satırda bulunan sütunları, boşlukları ve harf sayısını tutacak değişkenleri tanımlayalım.

sutun: int = 0
bosluk: int = 0
harf: int = 0

Tüm satırlar için kullanılacak sütun sayısını bulalım.

sutun = len(kelime) * 2 - 1

İlk satırda yer alan harf sayısını bulalım.

harf = len(kelime[0:1]) * 2

Şimdi ilk satıra ait boşluk işlemlerini gerçekleştirelim.

bosluk = sutun - harf

Artık ilk satıra ait kelebek desenini oluşturabiliriz.

print(kelime[0:1], " " * bosluk, kelime[0::-1], sep = "")

Şimdi ikinci satırı yazdıralım. Bu satırda kelimenin ilk iki harfi yazdırılmaktadır. Boşluk sayısını bulmak için sütun sayısından harf sayıları toplamını çıkarıyoruz.

harf = len(kelime[0:2]) * 2
bosluk = sutun - harf
print(kelime[0:2], " " * bosluk, kelime[1::-1], sep = "")

Sıra geldi üçüncü satıra.

harf = len(kelime[0:3]) * 2
bosluk = sutun - harf
print(kelime[0:3], " " * bosluk, kelime[2::-1], sep = "")

Vakit kaybetmeden dördüncü satırımızı yapalım.

harf = len(kelime[0:4]) * 2
bosluk = sutun - harf
print(kelime[0:4], " " * bosluk, kelime[3::-1], sep = "")

Artık kelebek deseninin üst tarafını bitirebiliriz. Bu arada değişen değerlere dikkat ediniz.

harf = len(kelime[0:5]) * 2 - 1
bosluk = sutun - harf
print(kelime[0:5], " " * bosluk, kelime[3::-1], sep="")

Şimdi kelebek deseninin alt tarafını yapalım. Altıncı satırı yapmaya çalışalım.

harf = len(kelime[0:4]) * 2
bosluk = sutun - harf
print(kelime[0:4], " " * bosluk, kelime[3::-1], sep="")

Yedinci satırı yapalım.

harf = len(kelime[0:3]) * 2
bosluk = sutun - harf
print(kelime[0:3], " " * bosluk, kelime[2::-1], sep="")

Sekizinci satırı yapalım.

harf = len(kelime[0:2]) * 2
bosluk = sutun - harf
print(kelime[0:2], " " * bosluk, kelime[1::-1], sep="")

Nihayet son satıra geldik. Bunu da kodlayalım.

harf = len(kelime[0:1]) * 2
bosluk = sutun - harf
print(kelime[0:1], " " * bosluk, kelime[0::-1], sep="")

Projeyi kaydedip çalıştıralım. Kelime olarak İSLAM girelim. Ekranda kelebek desenini görürsünüz. Uygulamayı incelediğinizde şu sonuçlara ulaşırsınız.

Programda sürekli tekrar eden satırlar var. Bunları nasıl azaltabiliriz.

Program sadece İSLAM kelimesinde doğru sonuç vermektedir. Başka bir kelime yazıldığında doğru sonuç nasıl oluşturulabilir.

Program kullanıcı H harfine basıncaya kadar nasıl devam edebilir.

Kullanıcı kelime girmediğinde hata mesajı nasıl oluşturulabilir.

Hadi şimdi bunları yapmaya çalışalım.

1. Kelebek desenine bakıldığında üst bölüm ve alt bölüm olarak iki bölümden oluştuğunu görürsünüz. Üst bölümde harf sayısının arttığını, alt bölümde ise harf sayısının azaldığını görürsünüz. Öncelikle üst bölümü yapalım.

Burada harf sayısını belirlemek için i değişkenini kullanalım. for döngüsünde i değişkeni 0 ile kelimenin içindeki harf sayısı arasında değişir. Örneğimiz İSLAM kelimesini dikkate alırsak, i değişkeni, 0 ile 4 arasında değer alır. Bu döngüyü kullanarak işlemi yapalım. Öncekile harf sayısını bulalım.

for i in range(len(kelime)):
    harf = len(kelime[0 : i + 1]) * 2
    print(harf)

Şimdi harf sayısına göre boşluk sayısını bulalım.

for i in range(len(kelime)):
    harf = len(kelime[0 : i + 1]) * 2
    bosluk = sutun - harf
    print(bosluk)

Projeyi çalıştırdığınızda son değerin -1 olduğunu görürsünüz. Kelimenin tamamı yazılırken buna dikkat ederek kod yazacağız. Şimdi de kelebek desenine ait üst kısmı yapalımı.

for i in range(len(kelime)):
    harf = len(kelime[0 : i + 1]) * 2
    bosluk = sutun - harf
    print(kelime[0:i + 1], " " * bosluk, kelime[i::-1], sep="")

Projeyi çalıştırdığımızda son satırın deseni bozduğunu görürsünüz. Şimdi bu hatayı düzeltelim.

for i in range(len(kelime)):
    harf = len(kelime[0 : i + 1]) * 2
    bosluk = sutun - harf
    if bosluk < 0:
        bosluk = 0
        print(kelime[0 : i + 1], " " * bosluk, kelime[i - 1 :: -1], 
sep="")
    else:
        print(kelime[0 : i + 1], " " * bosluk, kelime[i::-1], sep="")

Projeyi çalıştıralım. İSLAM kelimesini girelim. Kelebek deseninin üst tarafının hatasız bir şekilde yapıldığını görürsünüz. Şimdi kelebek deseninin alt tarafını yapalım. Öncelikle harf sayısını bulalım.

for i in range(len(kelime),0,-1):
    harf = len(kelime[0:i - 1]) * 2
    print(harf)

Şimdi boşluk sayısını bulalım.

for i in range(len(kelime),0,-1):
    harf = len(kelime[0:i - 1]) * 2
    bosluk = sutun - harf
    print(bosluk)

Alt tarafa ait kelebek desenini yapalım.

for i in range(len(kelime), 0, -1):
    harf = len(kelime[0 : i - 1]) * 2
    bosluk = sutun - harf
    print(kelime[0 : i - 1], " " * bosluk, kelime[i - 2 :: -1], 
sep="")

Projeyi kaydedip çalıştıralım. Kelebek deseninin alt tarafının hatalı olduğunu görürsünüz. Şimdi bu hatayı düzeltelim.

for i in range(len(kelime), 0, -1):
    harf = len(kelime[0 : i - 1]) * 2
    if harf > 0:
        bosluk = sutun - harf
        print(kelime[0 : i - 1], " " * bosluk, kelime[i - 2 :: -1], 
sep="")

Projeyi kaydedip çalıştıralım. Kelebek deseninin hatasız bir şekilde yapıldığını görürsünüz. Bu arada başka bir kelime yazdığınızda da desenin yapıldığına dikkat ediniz.

Şimdi kelebek desenini desen isimli bir fonksiyon aracılığıyla yapalım. Tanımladığımız desen fonksiyonu aşağıdaki gibi olacaktır.

def desen(kelime: str):
    sutun = len(kelime) * 2 - 1

    for i in range(len(kelime)):
        harf = len(kelime[0 : i + 1]) * 2
        bosluk = sutun - harf
        if bosluk < 0:
            bosluk = 0
            print(kelime[0 : i + 1], " " * bosluk, kelime[i - 1 :: -1], 
sep="")
        else:
            print(kelime[0 : i + 1], " " * bosluk, kelime[i::-1], sep="")

    for i in range(len(kelime), 0, -1):
        harf = len(kelime[0 : i - 1]) * 2
        if harf > 0:
            bosluk = sutun - harf
            print(kelime[0 : i - 1], " " * bosluk, kelime[i - 2 :: -1], 
sep="")

Bu fonksiyonu çağıran ana kodlarımızı aşağıdaki gibi düzenleyelim.

while True:
    kelime = input("Kelimeyi giriniz : ")
    if kelime != "":
        if kelime.upper() == "H":
            break
        desen(kelime.upper())
    else:
        print("Lütfen bir kelime giriniz...")

Projeyi kaydedip çalıştıralım. Kullanıcı "H" tuşuna basıncaya kadar girilen bir kelimeyi kelebek deseninde ekranda görürsünüz. Şimdi oluşturulan kelebek desenini harici bir dosyaya atalım. Ben Kelebek isminde bir class dosyası oluşturuyorum. Bu dosyanın içeriği aşağıdaki gibi olacaktır.

class Desen:
    sutun: int = 0
    bosluk: int = 0
    harf: int = 0

    def __init__(self, kelime: str):
        self.kelime = kelime

    def desen(self):
        sutun = len(self.kelime) * 2 - 1

        for i in range(len(self.kelime)):
            harf = len(self.kelime[0 : i + 1]) * 2
            bosluk = sutun - harf
            if bosluk < 0:
                bosluk = 0
                print(
                    self.kelime[0 : i + 1],
                    " " * bosluk,
                    self.kelime[i - 1 :: -1],
                    sep="",
                )
            else:
                print(self.kelime[0 : i + 1], " " * bosluk, 
self.kelime[i::-1], sep="")

        for i in range(len(self.kelime), 0, -1):
            harf = len(self.kelime[0 : i - 1]) * 2
            if harf > 0:
                bosluk = sutun - harf
                print(
                    self.kelime[0 : i - 1],
                    " " * bosluk,
                    self.kelime[i - 2 :: -1],
                    sep="",
                )

Şimdi bu class dosyasını kullanan ana programımızı aşağıdaki gibi düzenleyelim.

from Kelebek import Desen

ornek: Desen
kelime: str = ""

while True:
    kelime = input("Kelimeyi giriniz : ")
    if kelime != "":
        if kelime.upper() == "H":
            break
        ornek = Desen(kelime.upper())
        ornek.desen()
    else:
        print("Lütfen bir kelime giriniz...")

Gördüğünüz gibi ana programa ait kodlar ne kadar azaldı. Tanımlanan class dosyasını istenen tüm programlarda kullanabilirsiniz.


Etiketler
python kelebek design str 
İlgili Makaleler
NumPy Kütüphanesi ve Kurulumu
Programlama Temelleri Dersi İkinci Dönem Birinci Yazılı Çalışma Soruları
Faktöriyel Hesabı Yapan Python Uygulaması
Seaborn Kütüphanesi ve Kurulumu
MatPlotLib Kütüphanesi ve Kurulumu
Pandas Kütüphanesini Kullanarak Excel Dosyasından Veri Çekme
Dağılım Ölçütü
Programlama Temelleri Dersi İkinci Dönem İkinci Yazılı Çalışma Soruları
Ekrana Yıldız Üçgen Çizen Uygulamayı Fonksiyon Tanımlayarak Yapan Python Uygulaması
Girilen Doğum Tarihine Göre Kullanıcının Yaşını Bulan Python Uygulaması
Veri Bilimine Giriş
Dört İşlemi Fonksiyon Tanımlayarak Yapan Python Uygulaması
Visual Studio 2022 Programında Python Uygulaması Yazarken Türkçe Karakter Sorunu ve Çözümü
Pandas Kütüphanesi ve Kurulumu
Seaborn Kütüphanesini Kullanarak Saçılım Grafiği Oluşturma
Visual Studio 2022 Programında Python Uygulamasını Yazma ve Çalıştırma
Ayt Belirli Sayıda Tekrarlanan Logaritmik Değerlerin Toplamını Bulan Python Uygulaması
NumPy Kütüphanesinde İki Matrisin Çarpımı
Python Dilinde WhatsApp Uygulamasına Bot Yazarak Belirlenen Kullanıcıya Mesaj Atma
Olasılık Yoğunluk Fonksiyonu ve Kümülatif Dağılım Fonksiyonu

Yorum Ekle
   
Kötü İyi