Bu Kısmın Mantığı Nedir?

sayi=int(input("Sayı girin:"))
toplam=0
for i in range(1,sayi+1):
    i=str(i)
    if len(i)%2==0:
        sayi1=i[:int(len(i)/2)]
        sayi2=i[int(len(i)/2):len(i)]
        sayi3=sayi2[::-1]
        if sayi1==sayi2 or sayi1==sayi3:
            toplam+=1
            print(i)
            
print("Toplam {} tane ayna sayı bulundu.".format(toplam))

Burada sayi2 oluşturulurken sayi2=i[int(len)/2:len(i)] kısmında neden iki noktadan sonra uzunluğu integera çevirmedik de ilk kısımda çevirdik? Yardımcı olabilirseniz sevinirim.

Listeler float indeksleme desteklemediği için virgüllü çıkan sonuçlar int ile tam sayı hâline getirilmiş.

Hocam anlamadığım kısım neden iki noktadan sonra da bu işlem yapılmıyor? Sonuçta hâlâ listelerle çalışılıyor.

Çünkü len integer döndürüyor. Ama len ile dönen uzunluk tek sayı ise yarısı (/2) float olarak dönüyor. int ile bunu tam sayıya döndürüyor aslında.

Cunku uzunluk zaten integer.


Belki soyle daha iyi olur:

sayi = int(input("Sayı girin:"))
ayna_sayi_sayisi = 0
for i in range(1, sayi + 1):
    i = str(i)
    if len(i) % 2 == 0:
        orta_indis = len(i) // 2
        sol_yari = i[:orta_indis]
        sag_yari = i[orta_indis:]
        sag_yari_ters = sag_yari[::-1]

        if sol_yari == sag_yari or sol_yari == sag_yari_ters:
            ayna_sayi_sayisi += 1
            print(i)

print(f"Toplam {ayna_sayi_sayisi} tane ayna sayı bulundu.")

Hocam şimdi anladım çok teşekkür ederim

ikincide int(len(i)) yazsan da çalışır

1 Beğeni

Evet denedik çalışıyor, doğrudur.