Programcılık maceranız sırasında, verileri birbirine dönüştürmeniz gereken durumlarla sıkça karşılaşacaksınız. Mesela pek çok durumda bir sayıyı karakter dizisine ve eğer mümkünse bir karakter dizisini de sayıya dönüştürmek zorunda kalacaksınız. Şimdi dilerseniz bu duruma çok basit bir örnek verelim.
Hatırlarsanız, input() ve raw_input() fonksiyonlarını incelerken, input() fonksiyonuyla yapabileceğimiz her şeyi aslında raw_input() fonksiyonuyla da yapabileceğimizi söylemiştik. İşte int() adlı bir fonksiyon bize bu konuda yardımcı olacak. Dilerseniz önce bu fonksiyonu etkileşimli kabukta biraz inceleyelim:
Bildiğiniz gibi yukarıdaki a değişkeni bir karakter dizisidir. Şimdi bunu sayıya çevirelim:
Böylece 23 karakter dizisini sayıya çevirmiş olduk. Ancak tahmin edebileceğiniz gibi her karakter dizisi sayıya çevrilemez. int() fonksiyonu yalnızca sayı değerli karakter dizilerini sayıya dönüştürebilir:
Gördüğünüz gibi, elma karakter dizisi sayı olarak temsil edilemeyeceği için Python bize bir hata mesajı gösteriyor. Ama 23 gibi bir karakter dizisini sayı olmaktan çıkaran tek şey tırnak işaretleri olduğu için, bu karakter dizisi sayı olarak temsil edilebiliyor... Gelin isterseniz bu bilgiyi şu örneğe uygulayalım:
ilk_sayi = int(raw_input("İlk sayıyı girin: ")) ikinci_sayi = int(raw_input("İkinci sayıyı girin: ")) toplam = ilk_sayi + ikinci_sayi print "Bu iki sayının toplamı: ", toplam[/CODE]
Gördüğünüz gibi, burada yaptığımız şey çok basit. raw_input() fonksiyonunu tümden int() fonksiyonu içine aldık:
Burada özellikle kapanış tırnaklarını eksik yazmamaya özen gösteriyoruz. Pythona yeni başlayanların en sık yaptığı hatalardan biri de açılmış tırnakları kapatmayı unutmaktır.
Böylece input() fonksiyonunun prangasından kurtulmuş olduk. Artık raw_input() fonksiyonuyla da aritmetik işlemler yapabiliyoruz. Gelin isterseniz bir örnek daha vererek ne ile karşı karşıya olduğumuzu daha iyi anlamaya çalışalım:
Burada, yazdığımız kodların nasıl işlediğine dikkat etmenin yanısıra, kodları görünüş açısından nasıl düzenlediğimize ve satırları nasıl böldüğümüze de dikkat edin. Daha önce de dediğim gibi, Python görünüşe de önem veren zarif bir dildir.
Peki, yukarıda yaptığımız şeyin tersi mümkün mü? Yani acaba bir sayıyı karakter dizisine çevirebilir miyiz? Bu sorunun yanıtı evettir. Bu işlem için de str() adlı fonksiyondan yararlanacağız:
Böylece 23 sayısını, bir karakter dizisi olan 23e dönüştürmüş olduk.
Gördüğünüz gibi, int() ve str() adlı fonksiyonlar yardımıyla karakter dizileri ve tamsayılar arasında dönüştürme işlemi yapabiliyoruz. Eğer bir sayıyı veya sayı değerli karakter dizisini kayan noktalı sayıya dönüştürmek istersek de float() adlı fonksiyondan yararlanacağız:
Hatırlarsanız, input() ve raw_input() fonksiyonlarını incelerken, input() fonksiyonuyla yapabileceğimiz her şeyi aslında raw_input() fonksiyonuyla da yapabileceğimizi söylemiştik. İşte int() adlı bir fonksiyon bize bu konuda yardımcı olacak. Dilerseniz önce bu fonksiyonu etkileşimli kabukta biraz inceleyelim:
Kod:
>>> a = "23"
Bildiğiniz gibi yukarıdaki a değişkeni bir karakter dizisidir. Şimdi bunu sayıya çevirelim:
Kod:
>>> int(a) 23
Böylece 23 karakter dizisini sayıya çevirmiş olduk. Ancak tahmin edebileceğiniz gibi her karakter dizisi sayıya çevrilemez. int() fonksiyonu yalnızca sayı değerli karakter dizilerini sayıya dönüştürebilir:
Kod:
>>> kardiz = "elma" >>> int(kardiz) Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: invalid literal for int() with base 10: 'elma'
Gördüğünüz gibi, elma karakter dizisi sayı olarak temsil edilemeyeceği için Python bize bir hata mesajı gösteriyor. Ama 23 gibi bir karakter dizisini sayı olmaktan çıkaran tek şey tırnak işaretleri olduğu için, bu karakter dizisi sayı olarak temsil edilebiliyor... Gelin isterseniz bu bilgiyi şu örneğe uygulayalım:
Kod:
#!/usr/bin/env python # -*- coding: utf-8 -*- [CODE]
Kod:
Gördüğünüz gibi, burada yaptığımız şey çok basit. raw_input() fonksiyonunu tümden int() fonksiyonu içine aldık:
Kod:
int(raw_input("İlk sayıyı girin: "))
Burada özellikle kapanış tırnaklarını eksik yazmamaya özen gösteriyoruz. Pythona yeni başlayanların en sık yaptığı hatalardan biri de açılmış tırnakları kapatmayı unutmaktır.
Böylece input() fonksiyonunun prangasından kurtulmuş olduk. Artık raw_input() fonksiyonuyla da aritmetik işlemler yapabiliyoruz. Gelin isterseniz bir örnek daha vererek ne ile karşı karşıya olduğumuzu daha iyi anlamaya çalışalım:
Kod:
#!/usr/bin/env python # -*- coding: utf-8 -*- sayi = int(raw_input("Bir sayı girin. Ben size bu sayının " "istediğiniz kuvvetini hesaplayayım: ")) kuvvet = int(raw_input("Şimdi de %s sayısının kaçıncı kuvvetini " "hesaplamak istediğinizi söyleyin: " %sayi)) print "%s sayısının %s. kuvveti %s olur." %(sayi, kuvvet, sayi ** kuvvet)
Burada, yazdığımız kodların nasıl işlediğine dikkat etmenin yanısıra, kodları görünüş açısından nasıl düzenlediğimize ve satırları nasıl böldüğümüze de dikkat edin. Daha önce de dediğim gibi, Python görünüşe de önem veren zarif bir dildir.
Peki, yukarıda yaptığımız şeyin tersi mümkün mü? Yani acaba bir sayıyı karakter dizisine çevirebilir miyiz? Bu sorunun yanıtı evettir. Bu işlem için de str() adlı fonksiyondan yararlanacağız:
Kod:
>>> a = 23 >>> str(a) '23'
Böylece 23 sayısını, bir karakter dizisi olan 23e dönüştürmüş olduk.
Gördüğünüz gibi, int() ve str() adlı fonksiyonlar yardımıyla karakter dizileri ve tamsayılar arasında dönüştürme işlemi yapabiliyoruz. Eğer bir sayıyı veya sayı değerli karakter dizisini kayan noktalı sayıya dönüştürmek istersek de float() adlı fonksiyondan yararlanacağız:
Kod:
>>> a = 23 >>> float(a) 23.0 >>> float("34") 34.0
