Python Programlama Dili

Bölüm 1

Başlangıç Bilgileri

Top Navigasyon

Ders 9

1.18.2.2 - Yeni Yönteme Göre Sayısal Verilerin Biçimlendirilmesi

Yeni yönteme göre sayısal verilerin temel biçimlendirilmesi, aşağıdaki formata göre uygulanır.

python-course.eu da açıklanan dönüştürme kodları, aşağıda görülmektedir.

Dönüştürme Kodları
Dönüştürme Anlamı
d İşaretli Tamsayı Ondalık.
i İşaretli Tamsayı Ondalık.
d İşaretli Tamsayı Ondalık.
o İşaretsiz Oktal.
u İşaretsiz Desimal.
x İşaretsix Hex (Küçük Harf).
X İşaretsiz Hex (Büyük Harf).
e Ondalıklı Sayı Bilimsel Gösterim (Küçük Harf).
E Ondalıklı Sayı Bilimsel Gösterim (Büyük Harf).
f Ondalıklı Sayı Ondalıklı Gösterim.
F Ondalıklı Sayı Ondalıklı Gösterim.
g Ondalıklı Sayı Bilimsel Göstrerim ile Aynı (eğer üs -4 den büyük veya duyarlıktan küçük ise) yoksa f.
G Ondalıklı Sayı Bilimsel Göstrerim ile Aynı (eğer üs -4 den büyük veya duyarlıktan küçük ise) yoksa F.
c Tek Karakter (sözel veya sayısal)
c Tek Karakter (sözel veya sayısal)
r Sözel Veriyi Sayısal Eşdeğerine rep() Fonksiyonu ile Dönüştürür.
s Sayısal Veriyi Sözel Eşdeğerine str() Fonksiyonu ile Dönüştürür.
% Herhangibir Argüman Dönüştürülmesi Yok. Sadece % Karakter Döndürür.

Bu tablodan yararlanarak, ondalıklı sayılar (float) için, biçimmlendirme yöntemlerini oluşturalım:

Aşağdaki program bu yöntemlerin sınanmasını sağlamak için, konsoldan girilen değişik ondalıklı sayı tipinde verilerin biçimlenmiş şekillerini görüntüleyecek ve esas verinin Python derleyicisindeki geçerli değerini belirtecek şekilde düzenlenmiştir.

# Program : Ders9program1.py

nr = input("Bir Ondalıklı Sayı Giriniz = ");
nr = float(nr); print("Girilen : ", nr); print("Nr = {0:.2f}".format(nr)); print("Nr = {0:+.2f}".format(nr)); print("Nr = {0:.0f}".format(nr)); print(nr*2); """ Program Sonucu : Bir Ondalıklı Sayı Giriniz = 12.2343 Girilen : 12.2343 Nr = 12.23 Nr = +12.23 Nr = 12 24.4686 """

Yukarıdaki programı, satır satır inceleyelim. Program herhangibir ondalıklı verinin konsoldan girişi ile başlamakta ve input ile girilen değer sözel veri tipinde olduğu için, ondalıklı sayı veri tipine dönüştürülüp yine aynı tanıtıcının işaret ettiği bellek alanına yerleştiriliyor. Bu bir tahrip edici atama işlemidir. Konsoldan girilen sayısal karakterler içeren sözel değer, bir tanıtıcı ile erişilebilen bir bellek alanına yerleştirilmiş, sonra aaynı bilgi aynı tanıtıcı ile geri çağrılmış, ondalıklı veri tipine dönüştürülmüş, tekrar aynı tanıcı ile erişilebilen bellek alanın yerleştirilmiştir. Dönüştürülmeden önce, veri salt sayısal karakterler içermektedir, sadece veri tipi sözelddir. Dönüştürüldükten sonra verideki sayısal karakterler aynıdır sadece veri tipi ondalık sayı (float) veri tipidir. Eğer sayısal veri salt sayısal karakterler içeriyorsa, sözelden sayısala dönüştürme kayıpsız olarak gerçekleşir.

Bundan sonraki aşama, sayısal bir verinin, görüntüsünü biçimlendirmektir. Bunun verinin ondalık sayısını istenilen kadar yapacak şekilde, verinin işaretinin belirtilip belirtilmeyecek şekilde yapılabildiğini görebiliyoruz. Ondalık karakterleri olan bir verinin, onddalıksız olarak biçimlendirilmesi istenirse, bu verinin tamsayıya uyarlanmış şekli görüntüleniyor.

Yukarıdaki programın bize verdiği en önemli bilgi, biçimlendirmenin ana bellekteki veriyi değiştirmediğidir. Programdaki son işlem olan çarpım işlemi bu gerçeği ortaya çıkarmaktadır. Çeşitli biçimde gösterilmiş olmakla birlikte, ana veri değişmememiştir. Bunun kanıtı çarpma sonucunun, işlemin girilmiş olan ilk değer üzerinden yapılmış olduğununu belirtmesidir. Yani, 12.2343 girilmiş ve çarpma işlemi sonucu 24.4686 olarak alınmıştır. Bu sonuç, girilen değerin, yapılmış olan tüm işlemler sonunda, değişmeden kaldığını belirtmektedir.

Ondalıklı verilerin üstel ve yüzde olarak gösterimleri, aşağıdaki programda görülmektedir.

# Program : Ders9program2.py

q = input("Bir Ondalıklı Sayı Giriniz = ");
nr = float(q); print("Girilen : ", q); print(q = "{0:E}".format(q)); a = 45; b = 347; c = a / b; print("% = {0:%}".format(c)); """ Program Sonucu : Bir Ondalıklı Sayı Giriniz : 23.7866343 Girilen : 23.7866343 q = 2.378663E+01 % = 12.968300% """

Yukarıdaki program, ondalıklı sayılar için üstel ve yüzde biçimlendirilmesini gösteriyor. Ondalıklı sayıların biçimlendirilmesi göreli olarak daha az seçenek içeriyor.

Tamsayılar, presip olarak sözel verilere çok benzerler. Her tamsayı verisinde belirli sayıda karakter vardır. Bu avantaj, tamsayıların sözel veriler gibi biçimlendilmeleri olanaklarını da sağlar. Bu nedenle, tamsayı biçimlendirilmeleri, tam olarak sözel verilerin biçimlendirilmesinde uygulanan kodların uygulanması ile yapılır. Tamsayı verilerini, önceden saptanmış belirli sayıda karakter alabilen bir alana, sağa, sola yaslayıp, ortaya yerleştirilme gibi biçimlendirmeler yapmak olanakları sağlanmıştır.

Tamsayı biçimlendirme simgesi d (D) dir. Bunun anlamı, desimal (digit) yani on temelli bir sayı için ayrık bir karakter yeri anlamındadır. Bu bağlamda, 10d simgesi, "10 temelli bir tamsayı verisini, alan uzunluğu 10 karakter olan bir alana yerleştir" anlamındadır. Başka bir yaslama simgesi kullanılmadıkça, varsayılan stil, verinin belirtilen alan uzunluğunda sağa yaslı olarak görüntülenmesidir. Tamsayıların biçimlendirilmesi için açıklayıcı bir program, aşağıda verilmiştir.

# Program : Ders9program3.py

t = 23;
print("t =  {0:10d}".format(t));
print("t =  {0:*>10d}".format(t));
print("t =  {0:-<10d}".format(t));
print("t =  {0: 10d}".format(t));
print("t =  {0:10d}".format(t));
print("t =  {0:#^10d}".format(t));
print("t =  {0:^10d}".format(t));


"""
Program Sonucu :
t =          23
t =  ********23
t =  23--------
t =          23
t =  ####23####
"""

On temelli tamsayılar, başka temelli sayılar olarak görüntülendirilebilirler. Aşağıdaki program bu konuda bir örnek vermektedir.

# Program : Ders9program4.py

print("""On temelli (Desimal) : {0:d}
Onaltı Temelli : (Hex) : {0:x}
Sekiz Temelli (Oktal) : {0:o}
İki Temelli (Binary) : {0:b}"""
.format(121)); """ On temelli (Desimal) : 121 Onaltı Temelli : (Hex) : 79 Sekiz Temelli (Oktal) : 171 İki Temelli (Binary) : 1111001 """

Biçimlendirme üzerine

Python 3 biçimlendirme konusunda daha fazla olanaklar sağlamakla birlikte, genel olarak pratikte uygulanan yöntemler bu seksiyonda tanıtılmaya çalışılmıştır. Python 3 de biçimlendirme bir mini-programlama dili olarak Python 3.4.2 dokümantasyonundan incelenebilir.Bu sayfanın yazdırılıp el altında tutulması çok yararlı olacaktır.