Str.format metodu ile birlikte kullanılan ifadelerin anlamı

sayı_sistemleri = [“onlu”, “sekizli”, “on altılı”, “ikili”]

print(("{:^9} "*len(sayı_sistemleri)).format(*sayı_sistemleri))

for i in range(17):
print("{0:^9} {0:^9o} {0:^9x} {0:^9b}".format(i)) *** bu satırda : işaretinden önce gelen 0 sayısı tam olarak ne işe yarıyor açıklar mısınız ?

Yanlış hatırlamıyorsam bu başlık altında detaylı bilgi mevcut;

https://python-istihza.yazbel.com/karakter_dizilerini_bicimlendirmek.html#format-metodu-ile-bicimlendirme-yeni-yontem

2 Beğeni

Evet iki defa baştan aşağı kontrol etmeme rağmen bulamamıştım. Tekrar baktım tekrar bulamadım, daha doğrusu anlayamadım. Yani o “0” lar tam manasıyla ne işe yarıyor buna benzer bir örnek de yok. Kodun geri kalanını anlamakta problem yaşamadım. Üzerinde bir takım değişiklikler deneyerek çözmeye çalıştım yemedi :slight_smile:

Bu kodları çalıştırırsanız anlamanıza yardımcı olabilir belki;


print(("{:^9} "*len(sayı_sistemleri)).format(*sayı_sistemleri))

for i in range(17):
    print("{1:^9} {0:^9o} {0:^9x} {0:^9b}".format(i, "bu da 1"))
1 Beğeni

@fkose5 İlk gönderiniz için tebrik ederim, aramıza hoşgeldiniz.

Formatlama fonksiyonunun getirdiği bir takım özellikler var. Bunlardan biriyle tanıştığınızı görüyorum. Eğitim dili ile değil de samimi bir dille anlatacağım şimdiden söyleyeyim.

.fromat() içerisine yazdığımız değerler veya yerleştirdiğimiz değişkenleri kendisinden önce gelen yani .format() yazılmadan önce gelen süslü parantezler " {} " içerisinde sırasıyla ekler.

Bildiğiniz gibi yazılım da sıralama 0’dan başlar. İndekslemeden bahsediyorum yani. Birinci indeksin karşılık gelen sayısal gösterge değeri > 0’dır. Bu yüzen siz .format() metodunda parantez içine yazdığınız ilk eleman 0. indeks olarak nitelendirilir ve kendisinden önce gelen süslü parantezlerin hangisinde 0 rakamı yazıyorsa oraya otomatik eklenir.

Şimdi şunu sorabilirsiniz 0 yazmak yerine .format() içerisine değerleri veya değişkenleri ekleyelim? O zaman şöyle bir yapı oluşur.

a = 3
b = 4
c = 5
d = a+b+c
e = c-a

print("{} + {} + {} = {} işleminde kullanılan {} rakamı ile {} rakamı arasında {} fark vardır. Bu yüzden {} değeri ortadadır. Böylelikle {} sonucu ile {} değerindeki fark birbirinden farklıdır".format(a,b,c,d,c,a,e,b,d,e))

Şimdi gördüğünüz gibi format metdou içerisinde aynı değerleri tekrar tekrar kullanmış olduk. Hatta daha uzun bir yapı olduğunu varsayalım, karma karışık okunması güç olan bir uzunlukta olacak. Kod yapısında sade ve akıcı kod yazmayı önemsemeliyiz. Hem bizim için, hem yazdığımız kod için hemde bizden sonra o kodu okuması gerekenler için bu çok önemlidir.

Bu kadar uzun bir yapı oluşturmak yerine aynı yapıyı şöyle de yazabilirdik.

print("{0} + {1} + {2} = {3} işleminde kullanılan {2} rakamı ile {0} rakamı arasında {4} fark vardır. Bu yüzden {1} değeri ortadadır. Böylelikle {3} sonucu ile {4} değerindeki fark birbirinden farklıdır".format(a,b,c,d,e))

Bu şekilde yaptığımız zaman kodumuzu okurken format fonksiyonu içerisinde geçen değişkenlerin indeks sayılarını bildiğimiz için print fonksiyonu içerisinde yerleştirilebilecekler ve daha az uzunlukta bir kod yazarak daha sağlıklı bir yapı oluşturmuş olacağız.

Kısaca mantık şu > Uzun uzadıya giden kod satırları yerine yeri yurdu belli olan kod yapıları oluşturmak iyidir.

2 Beğeni

@tevhidulvahset anlatım için teşekkürler hocam

str.format metodundaki bu ve diğer kullanımlar burada ayrıntılı bir şekilde anlatılmış:
https://docs.python.org/3/library/string.html#custom-string-formatting

Şimdi cuk oturdu. Yeni yeni python öğrenmeye çalışıyorum, aslında bildiğim özelliği kod içinde anlayamamışım, sade ve açıklayıcı anlatımın için teşekkür ediyorum.

1 Beğeni

anladım şuan, teşekkür ederim.

rica ederim yardımcı olmaktan gurur duyarım. Cevabımı çözüm olarak ihtiyacınızı karşılayabildiysem cevabımı çözüm olarak işaretleyebilirsiniz. Daha sonra farklı kullanıcılar bu konuyu gezdiklerinde iyi oluyor

1 Beğeni