Python programlama dilinde kod yazarken, bir veri tipini (örneğin tam sayı) başka bir veri tipine (örneğin metinsel ifade) dönüştürmeniz gereken durumlarla sıklıkla karşılaşırsınız. Veri tipi dönüşümü (Type Conversion veya Type Casting) olarak adlandırılan bu işlem, farklı veri türleri arasında matematiksel işlemler yapabilmek, verileri ekranda doğru bir formatta gösterebilmek veya kullanıcıdan alınan verileri işleyebilmek için programlamada kaçınılmazdır. Bu rehberimizde, Python’da veri tiplerinin nasıl dönüştürüldüğünü sıfırdan başlayanlar için en temelden alarak bol örneklerle inceleyeceğiz.
PYTHON VERİ TİPLERİ DÖNÜŞÜMLERİ EĞİTİM VİDEOSU İÇİN TIKLAYIN
Neden Veri Tipi Dönüşümüne İhtiyaç Duyarız? Gerçek dünya projelerinde, işleyeceğimiz veriler her zaman doğrudan matematiksel operasyona sokabileceğimiz formatlarda gelmeyebilir. Örneğin, ondalıklı (float) bir değeri sadece tam sayı (int) olarak kullanmak isteyebilir ya da metinsel (string) bir ifadeyi bir sayıyla işleme sokmak için sayısal bir formata dönüştürmeye ihtiyaç duyabilirsiniz. Bu gibi durumlarda, verinin tipini uygun yapıya dönüştürmeden işlem yapmaya çalışmak uygulamanın beklenmedik sonuçlar üretmesine neden olur. Python’da temel olarak Örtük (Implicit) ve Açık (Explicit) olmak üzere iki çeşit dönüşüm stratejisi bulunur.
1. Örtük Veri Tipi Dönüşümü (Implicit Type Conversion) Örtük dönüşüm, programcının herhangi bir dönüşüm komutu yazmasına gerek kalmadan, Python yorumlayıcısının (interpreter) veri tiplerini otomatik olarak kendi kendine dönüştürmesi işlemidir. Bu durum genellikle farklı sayısal veri tipleri birbiriyle işleme girdiğinde yaşanır. Python, arka planda veri kaybını önlemek adına daha dar kapsamlı olan veri tipini, otomatik olarak daha geniş kapsamlı olan veri tipine yükseltir (örneğin tam sayıyı ondalıklı sayıya dönüştürür).
Örnek bir durumu inceleyelim: Diyelim ki bir tam sayı (int) ile bir ondalıklı sayıyı (float) çarpıyorsunuz. 8 * 0.25 işlemini yaptığınızda, Python çarpım sonucunu otomatik olarak 2.0 (float) formatında üretir. Aynı şekilde 20 / 2 işlemi yapıldığında, bölme operatörü sonucu her zaman float olarak hesaplar ve 10.0 değerini döndürür. Programcının manuel bir işlem yapmasına gerek kalmadan Python’un bunu kendisinin uyarlamasına örtük dönüşüm denir.
2. Açık Veri Tipi Dönüşümü (Explicit Type Conversion) Açık dönüşüm ise, programcının Python’un yerleşik (built-in) fonksiyonlarını kullanarak bir veri tipini bilinçli olarak ve açıkça başka bir tipe çevirmesidir. Python’da en çok kullanılan dönüşüm fonksiyonları int(), float() ve str() fonksiyonlarıdır.
A) int() Fonksiyonu ile Tam Sayıya Dönüştürme: int() fonksiyonu, içerisine verilen ondalıklı sayıları veya sadece rakamlardan oluşan metinsel ifadeleri tam sayı (integer) veri tipine dönüştürür. Ondalıklı bir sayıyı dönüştürürken, Python sayıyı yuvarlamaz, sadece ondalıklı (kesirli) kısmı kesip atar.
int(3.14)ifadesi program çalıştığında bize3sonucunu verir.int(2.54)ifadesi benzer şekilde2sonucunu verir.- İçerisinde sadece sayı barındıran metinsel bir değeri çevirmek için de kullanılır:
int("500")yazdığımızda bu metin matematiksel işlemlerde kullanılabilecek500tam sayısına dönüşür.
Önemli Not: İçerisinde harfler veya geçersiz karakterler barındıran bir metni (örneğin "y" veya "text") int() ile sayısal formata dönüştürmeye çalışırsanız, Python ekrana ValueError (Değer Hatası) mesajı basarak programı durdurur. Bu yüzden dönüşüm yapacağımız metnin sadece rakamlardan oluştuğundan daima emin olmalıyız.
B) float() Fonksiyonu ile Ondalıklı Sayıya Dönüştürme: float() fonksiyonu, tam sayıları veya sadece rakam barındıran metinleri ondalıklı (noktalı) veri tipine dönüştürür. Bilimsel hesaplamalarda veya daha hassas matematiksel sonuçların arandığı işlemlerde bu fonksiyon oldukça faydalıdır.
float(6)kodunu yazdığımızda, Python bunu6.0şeklinde ondalıklı sayıya çevirir.- Benzer şekilde
float(2)ifadesi2.0üretir.
C) str() Fonksiyonu ile Metinsel İfadeye Dönüştürme: str() fonksiyonu, içerisine verilen tam sayıları, ondalıklı sayıları veya mantıksal değerleri doğrudan metinsel (string) bir formata çevirir. Bir metin dizisiyle sayısal bir değeri yan yana ekranda yazdırmak ve birleştirmek istediğimizde, sayıları önce mutlaka metne dönüştürmemiz gerekir.
str(1920)ifadesi metinsel"1920"değerini üretir.str(3.14)ifadesi"3.14"metnini oluşturur.- Eğer bir rakamı ve kelimeyi birleştirmek isterseniz
str(12) + ' red roses'şeklindeki bir kod,12sayısını metne çevirerek'12 red roses'çıktısını başarılı bir biçimde kurgular. Şayetstr()ile dönüşüm yapılmasaydı, Python farklı iki veri tipini birbiriyle toplayamayacağı için çalışma esnasında hata verirdi.
D) bool() Fonksiyonu ile Mantıksal Değere Dönüştürme: Bir koşulun doğruluğunu veya yanlışlığını değerlendirmemiz gereken anlarda bool() (Boolean) dönüşüm fonksiyonunu kullanırız. bool() fonksiyonu yalnızca True (Doğru) veya False (Yanlış) değerlerinden birini döndürür.
0(sıfır) sayısı ve""(boş metin) ifadeleri bu fonksiyona sokulduğunda False sonucunu üretir.- Sıfır dışındaki tüm sayılar (örneğin
-1) ve içi boş olmayan tüm metinler (örneğin"0") True değerine dönüşür. Bu duruma kodlardan örnek vermek gerekirse:bool(-1)işleminin sonucu True,bool("0")işleminin sonucu True; ancakbool(0.000)vebool("")işlemlerinin sonucu False olacaktır.
Bu mantıksal verileri tam tersine yani sayılara ve metinlere çevirmek de mümkündür. Örneğin is_on = True şeklinde bir mantıksal değişkene float(is_on) uygularsanız 1.0 sonucunu, int(is_on) uygularsanız 1 sonucunu elde edersiniz. Metne dönüştürdüğünüzde ise str(is_on) kodu "True" metnini sağlar.
Kullanıcıdan Veri Alırken Yaşanan input() Tuzağı ve Çözümü Programlamaya yeni adım atanların en sık karşılaştığı zorluklardan biri de klavyeden girilen verilerin tipleridir. Python’da dışarıdan veri almak için çağırdığımız input() fonksiyonu, kullanıcının girdiği veriyi (örneğin bir sayı bile olsa) her zaman string (metin) veri tipi olarak hafızaya alır. Eğer alınan bu veriyi bir formülde veya matematiksel işlemde kullanacaksanız, sayısal bir formata dönüştürmeniz kesinlikle şarttır.
Örneğin, iki sayıyı toplamak için kullanıcıdan veri istediğiniz şu örneğe bakalım:
sayi1 = input("Birinci sayı: ")
sayi2 = input("İkinci sayı: ")
toplam = sayi1 + sayi2
print(toplam)
Bu kod çalıştırıldığında, eğer kullanıcı birinci sayı olarak 10, ikinci sayı olarak 20 girerse bu veriler hafızaya string olarak aktarılır. Artı (+) operatörü iki string değeri matematiksel olarak toplamak yerine onları karakter olarak yan yana birleştirir. Sonuç olarak ekranda 30 yerine 1020 yazar.
Doğru Yaklaşım: Veri Tipini Dönüştürmek Bu tuzağa düşmemek ve verileri matematiksel olarak doğru toplayabilmek için int() fonksiyonunu kullanarak iki farklı yaklaşım benimseyebiliriz:
Birinci Yöntem (Veriyi ilk alırken dönüştürmek):
sayi1 = int(input("Birinci sayı: "))
sayi2 = int(input("İkinci sayı: "))
toplam = sayi1 + sayi2
print(toplam) # Sonuç başarılı bir şekilde 30 çıkacaktır.
İkinci Yöntem (Veriyi tam toplama aşamasında dönüştürmek):
sayi1 = input("Birinci sayı: ")
sayi2 = input("İkinci sayı: ")
toplam = int(sayi1) + int(sayi2)
print(toplam) # Sonuç yine doğru olarak 30 hesaplanır.
Görebileceğiniz gibi, int() dönüşümü uyguladığımız anda veriler metinsel karakter olmaktan çıkıp bildiğimiz tam sayı haline bürünmüş ve sorunsuz bir şekilde matematiksel işleme girmiştir.
Dönüşümün Başarısını type() Fonksiyonu ile Gözlemlemek Bir verinin veya değişkenin o anki veri türünden (tipinden) emin değilseniz, Python’daki type() fonksiyonunu kullanarak bunu kolayca kontrol edebilirsiniz. print(type(1)) kodu çalıştırıldığında çıktı <class 'int'> olacaktır ve verinin tam sayı olduğunu doğrular. Eğer bir metinsel ifade kontrol edilirse, örneğin print(type('1')) kodu ekrana <class 'str'> sonucunu yazdırarak bize verinin string formunda olduğunu kanıtlar.
Python, sunduğu geniş standart kütüphaneleri ve yetenekleriyle tipler arası geçişleri son derece basit hale getirmiştir. Veri tipi dönüşümlerini (Type Casting) tam anlamıyla kavramak, ileride yazılımlarınızda çıkabilecek olan “1020” tarzı gizli mantıksal hataları engellemenin ilk ve en büyük adımıdır. Bol bol antrenman yaparak, kodlarınızın içerisinde bu esnekliği sağlayan dönüşüm fonksiyonlarını kullanmaya elinizi alıştırmalısınız!





