--- baslik: Tür dönüşümleri bolum: Temeller ozet: sayi(), ondalik() ve metin() ile türler arasında geçiş --- Türler kendiliğinden birbirine dönüşmez. Kullanıcıdan ya da bir dosyadan gelen `"42"` bir metindir; onunla hesap yapmak için önce sayıya çevirmen gerekir. Dönüşümü her zaman açıkça yazarsın. ## Üç dönüşüm fonksiyonu | Fonksiyon | Ne yapar | Örnek | Sonuç | |---|---|---|---| | `sayi(x)` | tam sayıya çevirir | `sayi("42")` | `42` | | `ondalik(x)` | ondalık sayıya çevirir | `ondalik("2.75")` | `2.75` | | `metin(x)` | metne çevirir | `metin(24)` | `"24"` | ## Metinden sayıya ```kbl yas_yazi = "17" yas = sayi(yas_yazi) yazdir(yas + 1) fiyat = ondalik("19.90") yazdir(fiyat * 2) ``` ```cikti 18 39.8 ``` Baştaki ve sondaki boşluklar sorun olmaz: `sayi(" 42 ")` da `42` verir. ## Sayıdan metne Bir metni sayıyla `+` ile birleştiremezsin. Önce sayıyı `metin()` ile çevir. ```kbl ogrenci = 24 yazdir("Sınıfta " + metin(ogrenci) + " öğrenci var.") ``` ```cikti Sınıfta 24 öğrenci var. ``` > **İpucu:** Metinle sayıyı yan yana yazmanın daha kolay bir yolu var: `f"Sınıfta {ogrenci} öğrenci var."`. Bunu *Biçimlendirme* dersinde göreceksin. ## ondalik ile sayi arasında `sayi()` bir ondalığın küsuratını **atar**, yuvarlamaz. `ondalik()` tam sayıyı ondalığa çevirir. ```kbl yazdir(sayi(3.99)) yazdir(sayi(-3.99)) yazdir(ondalik(7)) yazdir(ondalik(7) / 2) ``` ```cikti 3 -3 7.0 3.5 ``` Yuvarlamak istiyorsan `matematik.yuvarla()` kullanırsın; onu *Modüller* dersinde göreceksin. ## Mantık değerini metne çevirmek ```kbl gecti = dogru yazdir("Sonuç: " + metin(gecti)) ``` ```cikti Sonuç: doğru ``` > **Dikkat:** `sayi()` yalnız tam sayı yazılmış bir metni doğru çevirir. `sayi("3.9")` ya da `sayi("on iki")` hata vermez ama **0** döndürür; bu da fark edilmesi zor bir yanlışa yol açar. Ondalık bir metni önce `ondalik()` ile çevir. Kullanıcıdan gelen sayıyı güvenle okumanın yolunu *Kullanıcıdan girdi* dersinde öğreneceksin. ```kbl yazdir(sayi(ondalik("3.9"))) ``` ```cikti 3 ``` ## Gerçek bir örnek: virgülle ayrılmış veriler Bir satırdaki verileri metin olarak alıp sayıya çevirerek hesap yapalım. `bol(";")` metni parçalara ayırır (ayrıntısı *Metin işlemleri* dersinde). ```kbl satir = "Defter;3;24.50" parca = satir.bol(";") urun = parca[0] adet = sayi(parca[1]) fiyat = ondalik(parca[2]) yazdir(urun + ": " + metin(adet * fiyat) + " TL") ``` ```cikti Defter: 73.5 TL ``` ## Alıştırma ```alistirma `a` ve `b` metin olarak verilmiş. İkisini sayıya çevirip toplamını yazdır. %%% a = "125" b = "75" # buraya yaz %%% a = "125" b = "75" yazdir(sayi(a) + sayi(b)) %%% 200 ``` ```alistirma `metin()` kullanarak `Toplam: 3 ürün, 45.5 TL` satırını yazdır. Sayıları değişkenlerden al, `+` ile birleştir. %%% adet = 3 tutar = 45.5 # buraya yaz %%% adet = 3 tutar = 45.5 yazdir("Toplam: " + metin(adet) + " ürün, " + metin(tutar) + " TL") %%% Toplam: 3 ürün, 45.5 TL ```