Str.format metodu ile ilgili

arkadaşlar merhaba ben yeni yeni öğrenmeye çalışıyorum sorum şu şekilde;
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))

“{0:^9}” kısmındaki 0 ın anlamı nedir? 0 silindiğinde kod çalışmıyor.

1 Beğeni

cevapladığınız için teşekkür ederim.
for i in range(17):
print("{:^9}".format(i)) burada 0 olmadığında çalışmasının sebebi nedir?

Merhaba.

0’dan sonraki : ile başlayan kısım oraya yerleştirilecek yazının hizasını belirliyor, 0’ın :^9
kısmı ile alakası yok.

normalde "{} {} {}".format(1, 2, 3) gibi bir kullanım bizim str.format metoduna metindeki {} sayısı kadar, yani bu örnekte 3 tane parametre vermemizi bekler ve parametreleri sırası ile yerleştirir. Eğer tek parametreyi birden fazla kere yerleştirmek ister ve şöyle bir kod yazarsak hata alırız:

>>> "{} {} {}".format(1)
Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    "{} {} {}".format(1)
IndexError: Replacement index 1 out of range for positional args tuple
>>> 

Burada str.format metodu bizden sırası ile yerleştirebileceği 3 parametre istiyor ancak biz bir tane veriyoruz, bundan dolayı da hata alıyoruz.

Bunu çözmenin yollarından biri her {} arasına kaçıncı parametrenin yerleşeceğini yazmak. Sizin örneğinizde sadece bir tane parametre veriyoruz ve bunu {} olan bütün yerlere yerleştirmek istiyoruz. Aynı liste elemanlarının sırasının 0’dan başlaması gibi burada da parametreleri saymaya 0’dan başlıyoruz:

>>> "{0} {0} {0}".format(1)
'1 1 1'
>>> 

Aynı yöntemle şöyle bir şey de yapabiliriz:

>>> "{0} {1} {0} {1}".format(1, 2)
'1 2 1 2'
>>> 
2 Beğeni

Çok teşekkür ederim,harika anlattınız.