Yıldızlarla veya rakam ve harflerin kendilerini kullanarak büyük rakamlar, büyük harfler oluşturma

Hortlattığım için özür dilerim ama her bir şekil için ayrı ayrı liste oluşturmaya gönlüm el vermedi. Yine de sözlük kullanmaktan uzak duramadım ve şöyle bir çözüm yöntemi geliştirdim.

# Şekil bilgileri sekiller sözlüğünde saklanır.
# Her bir 3 sayı, şu bilgileri içerir: abc -> a: satır numarası, b: başlangıç indeksi, c: yazdırılacak şekil miktarı
# Örneğin 0 sayısı için ilk satırda '00000000' olmalıdır. Buna göre ilk satır için 008 yazılmalıdır. (Her bir satır 8 birim genişliğindedir.)
# İkinci satırda ise '00    00' olması için 102:162 yazılmalıdır vb.

sekiller = {0: "008:102:162:202:262:302:362:402:462:502:562:608",
            1: "044:162:262:362:462:562:662",
            2: "008:162:262:308:402:502:608",
            3: "008:162:262:326:462:562:608",
            4: "002:062:102:162:202:262:308:462:562:662",
            5: "008:102:202:308:462:562:608",
            6: "008:102:202:308:402:462:502:562:608",
            7: "008:162:262:362:462:562:662",
            8: "008:102:162:202:262:308:402:462:502:562:608",
            9: "008:102:162:202:262:308:462:562:608",
            '-': "324"}

# Girilen şeklin bilgisine göre bir liste ayarlar.
def donustur(sekil):
    # elemanları ':' sembolüne göre ayırırız.
    sekil_bilgileri = sekiller[sekil].split(':')
    yerel_liste = []

    # liste elemanlarını tam sayı (integer) yapar ve listeyi 'return' eder.
    def tam_sayi_yap(yazi):
        return (int(yazi[i]) for i in range(len(yazi)))

    for n in range(7):
        # 7 elemanlı bir liste oluşturur. 7 sayısı dikey uzunluktur. Her bir eleman 8 birimlik bir boşluktur.
        yerel_liste.append(8 * ' ')

    for sekil_bilgisi in sekil_bilgileri:
        i1, i2, miktar = tam_sayi_yap(sekil_bilgisi)
        # Belirtilen indeks aralığına gerekli şekilleri yerleştirir.
        yerel_liste[i1] = yerel_liste[i1][:i2] + miktar * str(sekil) + yerel_liste[i1][i2+miktar:]

    return yerel_liste

def birlestir_donustur_ve_yazdir(liste):
    for i in range(len(liste)):
        liste[i] = donustur(liste[i])

    for i in range(7):
        for sekil in liste:
            # Her bir şeklin aynı satırını yan yana yazar. Sonra alt satıra geçer.
            print(sekil[i], end=" ")
        print('')

yazdirilacaklar = [3, '-', 2]  # Tuple olmamalı, liste olmalı.
birlestir_donustur_ve_yazdir(yazdirilacaklar)

Çıktı:

33333333          22222222 
      33                22 
      33                22 
  333333   ----   22222222 
      33          22       
      33          22       
33333333          22222222

Çeşitli fonksiyonlar ile terminalde görüntülenmek istenen şekli büyük haline çeviriyoruz. Bunun için de sözlük içerisinde o şekle dair bilgiler barındıran string’leri kullanıyoruz. Kod içerisinde yorum satırları ile açıklamaya çalıştım, umarım faydası olur.

yazdirilacaklar = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]  # Tuple olmamalı, liste olmalı.
birlestir_donustur_ve_yazdir(yazdirilacaklar)
00000000     1111 22222222 33333333 44    44 55555555 66666666 77777777 88888888 99999999 
00    00       11       22       33 44    44 55       66             77 88    88 99    99 
00    00       11       22       33 44    44 55       66             77 88    88 99    99 
00    00       11 22222222   333333 44444444 55555555 66666666       77 88888888 99999999 
00    00       11 22             33       44       55 66    66       77 88    88       99 
00    00       11 22             33       44       55 66    66       77 88    88       99 
00000000       11 22222222 33333333       44 55555555 66666666       77 88888888 99999999

yerel_liste[i1] = yerel_liste[i1][:i2] + miktar * str(sekil) + yerel_liste[i1][i2+miktar:]
satırını şununla değiştirince çok daha güzel bir görüntü oluşuyor aslında.
yerel_liste[i1] = yerel_liste[i1][:i2] + miktar * '|' + yerel_liste[i1][i2+miktar:]

||||||||     |||| |||||||| |||||||| ||    || |||||||| |||||||| |||||||| |||||||| |||||||| 
||    ||       ||       ||       || ||    || ||       ||             || ||    || ||    || 
||    ||       ||       ||       || ||    || ||       ||             || ||    || ||    || 
||    ||       || ||||||||   |||||| |||||||| |||||||| ||||||||       || |||||||| |||||||| 
||    ||       || ||             ||       ||       || ||    ||       || ||    ||       || 
||    ||       || ||             ||       ||       || ||    ||       || ||    ||       || 
||||||||       || |||||||| ||||||||       || |||||||| ||||||||       || |||||||| ||||||||
1 Beğeni