Bir metnin satır başındaki harfleri alarak yeni metin oluşturma. (akrostiş)

"şiir.txt" şeklinde bir dosya oluşturun ve içinde şu satırlar yer alsın.

                    Memlekete sis çökmüş bir gece 
                    Usulca yanağıma sen düşüyorsun
                    Sabah saat dokuzu beş geçe
                    Terk edip bizleri gidiyorsun
                    Ayrılık bu kadar yakmamıştı içimizi
                    Farkında mısın bilmiyorum
                    Aldın beraberinde cumhuriyetimizi
                    Korkunç bir veda, sararmıştı her yer
                    Ellerini uzat tutmak istiyoruz
                    Masmavi gözleri kaybetmiş çocuk
                    Aldı bir sabah ruhumuzu
                    Lakin nasıl bölmesin yokluğun uykumuzu

Bu dosyanın herbir satırını okuyun. Satırların baş harflerini birbirine ekleyerek bir string oluşturun ve bu string'i ekrana yazdırın.

yukarıdaki soruya ait çözüm aşağıdadır.

ilk olarak bu soruyu liste veri tipi ile veya farklı bir çözüm yöntemi ile çözebilir miyiz ?

ikinci sorum bas_harfler="" şeklinde string veri tipinin oluşturuyor ancak “” ile boş bırakmak gibi bir mantığımı oluşuyor. (yani böyle birşey nasıl olabiliyor mantığı nedir)

bas_harfler = ""

with open("şiir.txt","r",encoding="utf-8") as file:
    for satır in file:
        bas_harfler += satır[0]
print(bas_harfler)

not: örnek ve çözümü alıntıdır üzerinde çalışıp anlamadığım veya merak ettiğim kısımları soru olarak yöneltiyorum.

Yardımlarınız için şimdiden teşekkürler.

Evet


string =  """Memlekete sis çökmüş bir gece 
                    Usulca yanağıma sen düşüyorsun
                    Sabah saat dokuzu beş geçe
                    Terk edip bizleri gidiyorsun
                    Ayrılık bu kadar yakmamıştı içimizi
                    Farkında mısın bilmiyorum
                    Aldın beraberinde cumhuriyetimizi
                    Korkunç bir veda, sararmıştı her yer
                    Ellerini uzat tutmak istiyoruz
                    Masmavi gözleri kaybetmiş çocuk
                    Aldı bir sabah ruhumuzu
                    Lakin nasıl bölmesin yokluğun uykumuzu"""


                    
liste = string.split("\n") # her enter format belirleyicisinden kesip liste dönen değeri listeye atıyoruz
liste = [i.strip() for i in liste]#listenin içindeki boş karakter dizilerini(space) kesiyoruz

print("liste : \n", liste)

bas_harfler = "".join([i[0] for i in liste])#listedeki her öğenin baş harfini alıyoruz
print("\n akrostiş : ", bas_harfler)



tip belirtiyor sadece. Boş bırakmak derken. hic bir karakter içermeyen ve boolean değeri false olan bir değer tutuyor.

2 Beğeni

Tip type hint’lerle belirtiliyor; burada deger atiyor.

"" bir karakter dizisi. Bu diziyi atiyor.

bool degeri 0 degil, False. (int degeri yok). list degeri [], dict degeri {}, tuple degeri ()

6 Beğeni

Pythonda değer atanırken, otomatik olarak verilen değerin tipini alıyor diye belirtmiştim.

Dizi kelimesini çıkartıyorum. (Karakter içermeyen olucaktı sağolun hocam)

1 Beğeni

Python’da değişkenlerin bir tipi yok, nesnelerin var.

Daha sonra üzerine başka karakter dizileri eklemek için boş, yani uzunluğu sıfır olan bir karakter dizisi oluşturuyor. Boş bırakmaktan kastınız bu ise, evet.

2 Beğeni

Evet haklısınız, ama değişken yazmamışım zaten.

Herkese ilgisi için teşekkür ederim.
Gayet anlaşılır oldu benim için.

>>> int("")
Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    int("")
ValueError: invalid literal for int() with base 10: ''
>>> 
2 Beğeni

Yazdığım 0(false} degerinin yanlış anlaşılmaması adına sevgili aib düzeltti sağolsun.

Aslında orda belirtmek istediğim python’ın false değerini 0 ve true değerini 1 olarak tutmasıydı.

Örnneğin:


liste = ["yanllış", "doğru"]

print(liste[False])#buradaki değeri True yapınca doğru cıktısını alırsınız.

Gibi.
(Tabi nekadar doğrudur bu yaklaşım, bilmiyorum)

1 Beğeni

Yok; false degerini False, true degerini True olarak tutuyor.

False ve True’nun int cevrimlerinin 0 ve 1 oldugu dogru:

>>> int(False)
0
>>> int(True)
1

float cevrimleri de 0.0 ve 1.0, complex cevrimleri de 0j ve (1+0j).

5 Beğeni