İ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 = 25boy = 1.68isim = "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 = 10puan = puan + 5 # puan'ın eski değerine 5 ekle, sonucu yine puan'a koyprint(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.
ogrenci1olur,1ogrenciolmaz. - Boşluk içeremez. İki kelimeyi alt çizgiyle birleştir:
ogrenci_sayisi. - Büyük ve küçük harf farklıdır.
isimileIsimiki ayrı değişkendir. - Python’ın kendi kelimeleri kullanılamaz.
if,for,Truegibi 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 serideyas,ogrencigibi yazacağız. - Anlamlı isim seç.
xyerinefiyatyazdığı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 tipi | Ne tutar? | Örnek |
|---|---|---|
int (tam sayı) | Küsuratı olmayan sayılar | 25, -3, 0 |
float (ondalıklı sayı) | Noktalı sayılar | 1.68, 80.0, -0.5 |
str (metin) | Tırnak içindeki her şey | "Ayşe", "5", "" |
bool (mantıksal) | Yalnızca iki değer | True, 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 = 25boy = 1.68isim = "Ayşe"ogrenci_mi = Trueprint(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 floatprint(240 // 3) # 80 tam bölme, küsuratı atarprint(7 / 2) # 3.5print(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 çevirdikprint("5" + str(3)) # 53 sayıyı metne çevirdik, metinler yan yana eklendiprint(float("3.5")) # 3.5print(int(3.9)) # 3 int() yuvarlamaz, küsuratı atarprint(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. Tipitype()ile öğrenirsin. /her zamanfloatdö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.
- Bölme üçlüsü.
a = 17veb = 5içina / b,a // bvea % bne verir? - Tipi bul.
3.0,"3"ve3değerlerinin tipleri nedir? - Hatayı düzelt.
fiyat = "120"veadet = 3. Toplam tutarı (360) hesaplayan satırı yaz. - Sürpriz çıktı.
print("120" * 3)ne yazar? Neden?
Cevaplar
3.4,3ve2. 17’nin içinde 3 tane 5 var, 2 artıyor.float,strveint.print(int(fiyat) * adet). Metni önce sayıya çevirmen gerekir.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)

Bir yanıt yazın