Buraya kadar değerleri yazdırmanın iki yolunu gorduk: deyim ifadeleri ve print deyimi. Ucuncu bir yol da dosya nesnelerinin write() yontemidir. Standart cıktıya sys.stdout şeklinde atıfta bulunulabilir. Coğu zaman boşluklar ile birbirinden ayrılmış değerlerden daha iyi bicimlendirilimiş bir cıktıya ihtiyac duyulur. Cıktınızı bicimlendirmenin iki yolu var. İlki butun dizge işlemlerini dilimleme ve birleştirme ile yapıp istediğiniz herhangi bir bicimi elde etmek. string standart modulu dizgelerin istenen sutun genişliğine kadar boşluklar ile doldurulmasını sağlayan, daha sonra değineceğimiz, bazı faydalı işlevlere sahiptir. İkinci yol ise sol argumanı bir dizge olan % işlecini kullanmaktır. % işleci sol argumanını sağdaki argumanına uygulanacak sprintf() tarzı bicim dizgesi olarak yorumlar ve bicimleme işleminden sonra bir dizge geri dondurur. Sayısal değerleri dizgeye cevirmek icin ise değer repr() veya str() işlevine gecirilebilir ya da ters tırnak işareti (``) icine alınabilir (repr() ile aynı etkiye sahiptir). str() işlevi değerlerin insan tarafından okunabilir gosterimini geri dondururken, repr() işlevi yorumlayıcı tarafından okunabilir gosterimini geri dondurur (veya uygun sozdizim yok ise SyntaxError istisnası oluşturur). İnsan icin anlam ifade edecek bir gosterimi bulunmayan nesneler icin str() işlevi repr() ile aynı değeri dondurur. Rakamlar, listeler ve sozlukler gibi yapılar ile daha pek cok değer icin her iki işlev de aynı sonucu verir. Dizgeler ve gercel sayılar ise iki farklı gosterime sahiptir. İşte birkac ornek: >>> s = 'Hello, world.' >>> str(s) 'Hello, world.' >>> `s` "'Hello, world.'" >>> str(0.1) '0.1' >>> `0.1` '0.10000000000000001' >>> x = 10 * 3.25 >>> y = 200 * 200 >>> s = 'The value of x is ' + `x` + ', and y is ' + `y` + '...' >>> print s The value of x is 32.5, and y is 40000... >>> # Ters tırnaklar sayılar dışındaki tipler ile de calışır: ... p = [x, y] >>> ps = repr(p) >>> ps '[32.5, 40000]' >>> # Karakter dizisinde ise tırnaklar ve ters bolu işareti eklenir: ... hello = 'hello, world\n' >>> hellos = `hello` >>> print hellos 'hello, world\n' >>> # Ters tırnakların argumanı bir demet de olabilir: ... `x, y, ('spam', 'eggs')` "(32.5, 40000, ('spam', 'eggs'))" Sayıların kare ve kuplerinden oluşan bir tablo yazdırmanın iki yolu vardır: >>> import string >>> for x in range(1, 11): ... print string.rjust(`x`, 2), string.rjust(`x*x`, 3), ... # Ust satırın sonundaki virgule dikkat edin. ... print string.rjust(`x*x*x`, 4) ... 1 1 1 2 4 8 3 9 27 4 16 64 5 25 125 6 36 216 7 49 343 8 64 512 9 81 729 10 100 1000 >>> for x in range(1,11): ... print '%2d %3d %4d' % (x, x*x, x*x*x) ... 1 1 1 2 4 8 3 9 27 4 16 64 5 25 125 6 36 216 7 49 343 8 64 512 9 81 729 10 100 1000 Sutunların arasındaki bir karakterlik boşluk print tarafından eklenir; argumanların arasına daima bir boşluk karakteri eklenir. Bu ornek dizgelerin başını boşluklar ile doldurup bunları sağ tarafa dayayan string.rjust() işlevini kullanmaktadır. Buna benzer string.ljust() ve string.center() işlevleri de vardır. Bunlar bir şey yazdırmaz; sadece yeni bir dizge geri dondururler. Verilen dizge uzun ise kırpılmaz ve aynen geri dondurulur; bu sutunlarınızın bozulmasına sebep olmasına rağmen hatalı bir değer gostermekten iyidir. Buyuk bir değeri kırpmayı gercekten istiyorsanız dilimleme ile bunu yapabilirsiniz (string.ljust(x, n)[0:n] gibi). string.zfill() işlevi ise rakamlar iceren dizgelerin başını sıfırlar ile doldurur. Bu işlev artı ve eksi işaretlerini de dikkate alır: >>> import string >>> string.zfill('12', 5) '00012' >>> string.zfill('-3.14', 7) '-003.14' >>> string.zfill('3.14159265359', 5) '3.14159265359' % işleci şu şekilde kullanılır: >>> import math >>> print 'PI sayısının yaklaşık değeri: %5.3f' % math.pi PI sayısının yaklaşık değeri: 3.142 Dizgenin icinde birden fazla bicem varsa sağ terim olarak bir demet kullanmak gerekir: >>> table = >>> for name, phone in table.items(): ... print '%-10s ==> %10d' % (name, phone) ... Jack ==> 4098 Dcab ==> 7678 Sjoerd ==> 4127 Coğu bicim aynı C dilindeki gibi calışır ve doğru veri turunun gecirilmesi gerekir; bu yapılamaz ise bir istisna oluşur. %s biciminin kullanımı daha rahattır; verilen arguman dizge değilse yerleşik işlev str() ile dizgeye donuşturulur. Genişlik ya da hassasiyeti belirtmek icin * ile bir tamsayı arguman kullanılabilir. C dilindeki %n ve %p bicimler ise desteklenmemektedir. Eğer bolmek istemediğiniz gercekten uzun bir bicim dizgeniz varsa bicimlendirmek istediğiniz argumanlara konumu yerine ismiyle atıfta bulunabilmeniz guzel olur. Bu aşağıda gosterildiği gibi %(isim)bicim şeklinde yapılabilir: >>> table = >>> print 'Jack: %(Jack)d; Sjoerd: %(Sjoerd)d; Dcab: %(Dcab)d' % table Jack: 4098; Sjoerd: 4127; Dcab: 8637678 Bu ozellik butun yerel değişkenlerin bulunduğu bir sozluk geri donduren yerleşik işlev vars() ile beraber kullanıldığında faydalı olur.
__________________