Python’da Değişkenler ve Veri Tipleri (Python Dersi 3)

İlk dersten beri bir soru bekliyor: not ortalamasını hesaplayan program neden 80 değil de 80.0 yazıyor? Cevabı bu derste, değişkenleri ve veri tiplerini öğrenirken bulacaksın.

Bu dersin kodları ve alıştırmaları hazır bir not defterinde: Colab’da Aç. Not defterini aç, Drive’ına kopyasını kaydet ve hücreleri sırayla Shift + Enter ile çalıştır.

Değişken nedir?

Değişkeni üzerinde etiket olan bir kutu gibi düşünebilirsin. Kutunun içine bir değer koyarsın, etiketine bir isim yazarsın. Sonra o değere ihtiyacın olduğunda etiketin adını söylemen yeter.

Python’da değişken oluşturmak tek satırdır:

yas = 25
boy = 1.68
isim = "Ayşe"
ogrenci_mi = True

Buradaki = işareti matematikteki “eşittir” anlamına gelmez. “Sağdaki değeri, soldaki isme ata” demektir. Bu yüzden şu kod hata vermez:

puan = 10
puan = puan + 5 # puan'ın eski değerine 5 ekle, sonucu yine puan'a koy
print(puan) # 15

Matematikte puan = puan + 5 imkansız bir denklem olurdu. Python’da ise “kutudaki değeri al, 5 ekle, kutuya geri koy” anlamına gelir. Değişkenin adı da buradan gelir: içindeki değer değişebilir.

Değişkene isim verirken

Python isimler konusunda birkaç kurala uymanı ister, birkaçını da topluluk alışkanlık olarak benimsemiştir:

  • Rakamla başlayamaz. ogrenci1 olur, 1ogrenci olmaz.
  • Boşluk içeremez. İki kelimeyi alt çizgiyle birleştir: ogrenci_sayisi.
  • Büyük ve küçük harf farklıdır. isim ile Isim iki ayrı değişkendir.
  • Python’ın kendi kelimeleri kullanılamaz. if, for, True gibi kelimeler dile ayrılmıştır.
  • Türkçe karakterden kaçın. Python yaş gibi isimleri kabul eder, ama başka kişilerle ya da farklı araçlarla çalışırken sorun çıkabilir. Bu seride yas, ogrenci gibi yazacağız.
  • Anlamlı isim seç. x yerine fiyat yazdığında kodunu bir ay sonra da anlarsın.

Dört temel veri tipi

Kutunun içine koyduğun değerin bir türü vardır. Python bu türe veri tipi der. Başlangıçta dört tanesini bilmen yeter:

Veri tipiNe tutar?Örnek
int (tam sayı)Küsuratı olmayan sayılar25, -3, 0
float (ondalıklı sayı)Noktalı sayılar1.68, 80.0, -0.5
str (metin)Tırnak içindeki her şey"Ayşe", "5", ""
bool (mantıksal)Yalnızca iki değerTrue, False

Python’da ondalık ayıracı virgül değil, noktadır: 1,68 değil 1.68 yazarsın.

type() ile tipi öğrenmek

Bir değerin hangi tipte olduğunu merak ettiğinde type() fonksiyonunu kullan:

yas = 25
boy = 1.68
isim = "Ayşe"
ogrenci_mi = True
print(type(yas)) # <class 'int'>
print(type(boy)) # <class 'float'>
print(type(isim)) # <class 'str'>
print(type(ogrenci_mi)) # <class 'bool'>

"5" ile 5 aynı şey değildir. İlki tırnak içinde olduğu için metindir, ikincisi sayıdır. Bu küçük fark, yeni başlayanların en sık karşılaştığı hatalardan birinin kaynağı; birazdan göreceğiz.

Cevap: Ortalama neden 80.0 çıkıyor?

Python’da / ile yapılan bölme işleminin sonucu her zaman float‘tır, bölüm tam çıksa bile. 240’ı 3’e bölersen sonuç 80 olsa da Python bunu 80.0 olarak yazar. Ders 1’deki ortalama da sum(notlar) / len(notlar) yani 240 / 3 işlemiydi.

Tam sayı sonucu istiyorsan iki ayrı operatör var:

print(240 / 3) # 80.0 normal bölme, sonuç hep float
print(240 // 3) # 80 tam bölme, küsuratı atar
print(7 / 2) # 3.5
print(7 // 2) # 3 3.5'in küsuratı atıldı
print(7 % 2) # 1 bölmeden kalan

// küsuratı yuvarlamaz, atar: 7 // 2 sonucu 4 değil 3’tür. % ise kalanı verir; bir sayının tek mi çift mi olduğunu anlamak için sık kullanılır.

Not ortalamasında küsuratı atmak yanlış sonuç verebileceği için orada / kullanmak doğru tercih. 80.0 yanlış değil, sadece sayının tipini gösteriyor.

Tip dönüştürme

Bazen bir değeri başka bir tipe çevirmen gerekir. Bunun için tipin adını fonksiyon gibi kullanırsın:

print(int("5") + 3) # 8 metni sayıya çevirdik
print("5" + str(3)) # 53 sayıyı metne çevirdik, metinler yan yana eklendi
print(float("3.5")) # 3.5
print(int(3.9)) # 3 int() yuvarlamaz, küsuratı atar
print(bool(0), bool("merhaba")) # False True

En sık karşılaşılan hata

Metinle sayıyı doğrudan toplamaya çalışırsan Python itiraz eder:

"5" + 3
# TypeError: can only concatenate str (not "int") to str

Hata mesajı tam olarak sorunu söylüyor: metne yalnızca metin eklenebilir, sayı eklenemez. Çözüm, iki değeri aynı tipe getirmek: sayı olarak toplamak istiyorsan int("5") + 3, yan yana yazmak istiyorsan "5" + str(3).

Bu hatayı neden bu kadar erken öğreniyoruz? Bir sonraki derste kullanıcıdan bilgi alacağız ve kullanıcının yazdığı her şey, sayı bile olsa, Python’a metin olarak gelir.

Çevrilemeyecek bir değeri çevirmeye çalışırsan da hata alırsın: int("üç") bir ValueError verir, çünkü Python “üç” kelimesini sayıya çeviremez.

Bu derste ne öğrendin?

  • Değişken, bir değere verdiğin isimdir; = “ata” anlamına gelir.
  • Dört temel veri tipi: int, float, str, bool. Tipi type() ile öğrenirsin.
  • / her zaman float döndürür; // küsuratı atar, % kalanı verir.
  • int(), float(), str() ile tip dönüştürürsün; metinle sayı doğrudan toplanamaz.

Alıştırmalar

Her birinde önce cevabı tahmin et, sonra not defterinde kontrol et.

  1. Bölme üçlüsü. a = 17 ve b = 5 için a / b, a // b ve a % b ne verir?
  2. Tipi bul. 3.0, "3" ve 3 değerlerinin tipleri nedir?
  3. Hatayı düzelt. fiyat = "120" ve adet = 3. Toplam tutarı (360) hesaplayan satırı yaz.
  4. Sürpriz çıktı. print("120" * 3) ne yazar? Neden?

Cevaplar

  1. 3.4, 3 ve 2. 17’nin içinde 3 tane 5 var, 2 artıyor.
  2. float, str ve int.
  3. print(int(fiyat) * adet). Metni önce sayıya çevirmen gerekir.
  4. 120120120. Metni bir sayıyla çarpmak onu o kadar kez yan yana yazar. Hata vermez, ama istediğin sonuç bu değil; 3. alıştırmadaki dönüşümün neden önemli olduğunu gösteriyor.

Sıradaki ders

Bir sonraki derste programın kullanıcıyla konuşmaya başlayacak: input ile bilgi alıp print ile cevap vereceksin. Bugün öğrendiğin tip dönüştürme orada hemen işine yarayacak. input ve print: Kullanıcıyla Konuşan Program (Python Dersi 4)


Hatice Özbolat | Teknoloji ve AI Rehberi sitesinden daha fazla şey keşfedin

Son gönderilerin e-postanıza gönderilmesi için abone olun.

Comments

Bir yanıt yazın