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

Sormadım hangi işletim sistemi kullanıyosun diye ama illa linux vardır diye düşünerek apt-get install figlet şeklinde indirip figlet test yaz mesela şekil şukul şeyler yapıyo. Kopyala yapıştır yaparsın xd github tada var ordan windows a kurulurmu bilmiyorum.

1 Beğeni

Maalesef Linux değil, Windows. Sizden cevap gelene kadar konuyu biraz google’da baktım. Evet Linux’ta oluyormuş :frowning:

ve sanırım Linux’ta daha bir sürü şekiller yapılabiliyor :(((

günümüzde linux kurmak ve kullanmak eskisi kadar zor değil. microsoft store üzerinden kali linux veya debian ı tek tıkla windows a kurabiliyorsunuz. 100 150 mb boyutu var. al sana linux apt-get install figlet indir 5 dk sürmez. ayrıca android telefonun varsa termux uygulamasını indirip apt-get install figlet ile de figleti kurabilrsin. ssh ile windows cmd den alırsın şekilleri :smiley: android in de bir linux olduğunu söylesem kimse itiraz etmez umarım. en kötü sanal makinaya bile kurulabilir linux ?

1 Beğeni

Kendi bilgisayarım olduğunda anaconda’yı kurduktan sonra ilk işim Linux kurmak olacak :slight_smile:
Şuan şirket bilgisayarı kullanıyorum ve kullanıcı oturumuyla giriş yaptığımız için program kurulmaya çalıştığımda sistem admin şifresi istiyor :frowning:
Android telefonum da yok :smiley: uzun zamandır iPhone kullanıyorum…

debian veya linux mint i usb ye kurup live olarak çalıştırıp terminalden figlet i kullanabilrsin. sadece usb de çalışır bi sorun olmaz diye düşünüyorum tabi karar senin :smiley:

hatta bak aklıma ne geldi google colab da kullanabilrsin. gmail adresin ile giriş yapıyosun sana free linux makina veriyo bi terminal açıp bunu yazarsan gene olur hiç linux kurmanada gerek kalmaz. !apt-get install figlet diye kurulabilir en mantıklısı bu bence :smiley:

1 Beğeni

Geçenlerde bununla ilgili @m.halil hoca bir proje yapmıştı.


Bu yapacağınız işlem bir kereye mahsus ise,

https://patorjk.com/software/taag/#p=display&f=Graffiti&t=Type%20Something%20

gibi banner oluşturucu siteler işinizi görebilir.

2 Beğeni

Birisi yapmış. :confused: bakabilirsin.

Kendi ev dizininize kurabilirsiniz. Örn:
C:\Kullanıcılar\obligar dizininin içinde herhangi bir yere kurabilirsiniz.

1 Beğeni
12:55:36 16 aib@vivaldi:/tmp% banner banner

 #####     ##    #    #  #    #  ######  #####
 #    #   #  #   ##   #  ##   #  #       #    #
 #####   #    #  # #  #  # #  #  #####   #    #
 #    #  ######  #  # #  #  # #  #       #####
 #    #  #    #  #   ##  #   ##  #       #   #
 #####   #    #  #    #  #    #  ######  #    #

12:55:58 0 aib@vivaldi:/tmp% echo figlet | figlet
                                          
   m""    "           ""#             m   
 mm#mm  mmm     mmmm    #     mmm   mm#mm 
   #      #    #" "#    #    #"  #    #   
   #      #    #   #    #    #""""    #   
   #    mm#mm  "#m"#    "mm  "#mm"    "mm 
                m  #                      
                 ""                       
12:56:06 0 aib@vivaldi:/tmp% echo toilet | toilet
                                          
   m             "    ""#             m   
 mm#mm   mmm   mmm      #     mmm   mm#mm 
   #    #" "#    #      #    #"  #    #   
   #    #   #    #      #    #""""    #   
   "mm  "#m#"  mm#mm    "mm  "#mm"    "mm 
                                          
                                          

Bonus:

12:56:41 16 aib@vivaldi:/tmp% fortune | cowsay
 _____________________________
< Rome wasn't burnt in a day. >
 -----------------------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
2 Beğeni

Yazilarin resimlerine normalde prensip geregi bakmiyorum fakat forumda yenisin ve daha once kimse uyarmamis:

Resimdeki gibi yaparsan gereksiz uzun/zor olur. Asil yapman gereken, cizilecek harfi/sayiyi alip satirlari string veya array olarak dondurecek bir fonksiyon veya dict.

Butun bir fontu yapmak tabi ki uzun ve sikici olacaktir; onun icin de resim dosyasini acip pixelleri okuyup string’i kendi cikartan bir program yazabilirsin. Dinamik yazi resmi uretmek icin ideal GTK/Cairo ama baslangic icin ImageMagick de is gorur: convert -pointsize 12 label:5 -threshold 67% text.png

1 Beğeni

Çok teşekkür ederim. Bu hocanın yazdığı kodları bir inceleyeceğim. Sanırım işimi görebilir.

Bir kereye mahsus değil. Oyun skoruna göre değişecek. Örneğin; 1-0, 2-0 veya 3-2 vb oyun sonucunu büyük olarak yazdırmak istiyorum.

skor = [["   ", "1111", "     ", "00000000", "", ""],
        ["     ", "11", "     ",  "00", "  ", "00"],
        ["     ", "11", "     ",  "00", "  ", "00"],
        ["     ", "11", " ### ",  "00", "  ", "00"],
        ["     ", "11", "     ",  "00", "  ", "00"],
        ["     ", "11", "     ",  "00", "  ", "00"],
        ["     ", "11", "     ",  "00000000", "", ""]]

for i in skor:
    print(*i)

image

Her rakam için matrisler oluşturup matrisleri yan yana dizeyim dedim böyle de zor oluyor, her skor sonucuna göre matris oluşturmak zormuş :slight_smile:

1 Beğeni

Linux’tan bahseidyorsunuz değil mi hoam? Ev dizinine kurulabiliyorsa bir araştırıp kurmaya çalışayım.

1 Beğeni

Hocam bunlar hazır kütüphaneden mi çağırılıyor?

Pardon hocam. Evet kod kısmını copy-paste yapmalıydım, ekran görüntüsü yerine. Ders içeriği gayet güzel anlatıldığı için, fonksiyon konusuna kadar tüm anlatılanları anlayarak ilerlediğim için daha önce forumda bir şey sorma ihtiyacım olmamıştı. Konular ilerledikçe ve yavaş yavaş bir şeyleri yapmaya başladıkça takıldığım yerler artmaya başladı ve buraya daha sık gelir oldum. Forum kurallarına daha çok dikkat etmeye özen göstereceğim. Teşekkürler…

Çok iyi anladım hocam, çok haklısınız. Çok teşekkürler…

1 Beğeni

Microsoft Store üzerinden indireceğiniz, herhangi bir uygulama zaten ev dizininize iner. Arkadaşın dediği gibi Debian terminali varsa eğer indirebilirsiniz.

1 Beğeni

Bunlar hazir program, yaptigim alintida [terminalde, zsh’de] calistirilma komutlarini ve ciktilarini goruyorsun.

Daha ziyade soyle bir sey:

import textwrap

mapping = {
    '1': """
        11 
         1 
         1 
         1 
        111
        """,
    '2': """
        2222
           2
        2222
        2   
        2222
        """,
    '3': """
        3333
           3
         333
           3
        3333
        """
}
mapping = { k: textwrap.dedent(v) for k, v in mapping.items() }

def concat(s1, s2):
    return "\n".join((s1l + "  " + s2l) for s1l, s2l in zip(s1.split("\n"), s2.split("\n")))

print(mapping['1'])
print(concat(concat(mapping['1'], mapping['2']), mapping['3']))

11 
 1 
 1 
 1 
111

    
11   2222  3333
 1      2     3
 1   2222   333
 1   2        3
111  2222  3333
    
4 Beğeni

Rakamların matrisini sadece birer kere oluşturup skor sonucuna göre çağırmanın yöntemini buldum ve sorunu çözdüm. İlgilenip görüş belirten her arkadaşa ayrı ayrı teşekkür ederim, Allah razi olsun…
Kullanmak isteyen, ilgilenen, merak eden olabilir diye aşağıda yöntemimi bırakıyorum.

score = [[["00000000"],
          ["00    00"],
          ["00    00"],
          ["00    00"],
          ["00    00"],
          ["00    00"],
          ["00000000"]],

         [["    1111"],
          ["      11"],
          ["      11"],
          ["      11"],
          ["      11"],
          ["      11"],
          ["      11"]],

         [["22222222"],
          ["      22"],
          ["      22"],
          ["22222222"],
          ["22      "],
          ["22      "],
          ["22222222"]],

         [["33333333"],
          ["      33"],
          ["      33"],
          ["33333333"],
          ["      33"],
          ["      33"],
          ["33333333"]],

         [["44    44"],
          ["44    44"],
          ["44    44"],
          ["44444444"],
          ["      44"],
          ["      44"],
          ["      44"]],

         [["55555555"],
          ["55      "],
          ["55      "],
          ["55555555"],
          ["      55"],
          ["      55"],
          ["55555555"]],

         [["66666666"],
          ["66      "],
          ["66      "],
          ["66666666"],
          ["66    66"],
          ["66    66"],
          ["66666666"]],

         [["77777777"],
          ["      77"],
          ["      77"],
          ["      77"],
          ["      77"],
          ["      77"],
          ["      77"]],

         [["88888888"],
          ["88    88"],
          ["88    88"],
          ["88888888"],
          ["88    88"],
          ["88    88"],
          ["88888888"]],

         [["99999999"],
          ["99    99"],
          ["99    99"],
          ["99999999"],
          ["      99"],
          ["      99"],
          ["99999999"]]]

hyphen = [["     "],
          ["     "],
          ["     "],
          [" ### "],
          ["     "],
          ["     "],
          ["     "]]

team1 = int(input("İlk takımın skorunu girin: "))
team2 = int(input("İkinci takımın skorunu girin: "))

score1 = score[team1]
score2 = score[team2]

scoreboard = [["#" for x in range(12)] for y in range(7)]

for i in range(7):
    scoreboard[i] = score1[i] + hyphen[i] + score2[i]

print()

for i in scoreboard:
    print(*i)

Örnek Çıktı:

    1111       22222222
      11             22
      11             22
      11  ###  22222222
      11       22      
      11       22      
      11       22222222

44    44       33333333
44    44             33
44    44             33
44444444  ###  33333333
      44             33
      44             33
      44       33333333
2 Beğeni

Estağfurullah, hocalık kim biz kimiz,
ben hala acemi bir python öğrencisiyim.
vakit buldukça kendimi geliştirme konusunda bir şeyler denemeye çalışıyorum.

Harikulade siteler, çok beğendim. Paylaşım için teşekkürler

1 Beğeni

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