Değişkenler, veri türleri ve ifadeler

İlk bölümde Python programımız sabit metinler yazdırıyordu. Gerçek programlarda ise değerler değişir: bir ürünün fiyatı, öğrencinin yaşı, hava sıcaklığı veya kalan internet kotası her çalıştırmada farklı olabilir. Bu hafta programın veriyi nasıl tuttuğunu, nasıl dönüştürdüğünü ve bu verilerle nasıl hesaplama yaptığını öğreneceğiz.

Amaç çok sayıda Python özelliğini ezberlemek değildir. Bir değerin hangi veri türüne (type) sahip olduğunu fark etmek, uygun değişken adı seçmek ve bir ifadenin hangi sonucu üreteceğini adım adım izlemek daha önemlidir.

Bu hafta neleri yapabilmelisiniz?

Bölümün sonunda:

  • bir değeri değişkende saklayabilmeli ve daha sonra kullanabilmeli,
  • geçerli ve anlamlı değişken adları seçebilmeli,
  • int, float, str ve bool veri türlerini ayırt edebilmeli,
  • type() ile bir değerin türünü inceleyebilmeli,
  • input() ile alınan girdinin neden metin olduğunu açıklayabilmeli,
  • int(), float() ve str() ile temel tür dönüşümleri yapabilmeli,
  • aritmetik ifadelerin sonucunu işlem sırasını dikkate alarak tahmin edebilmeli,
  • karşılaştırma ve mantıksal ifadelerin True veya False ürettiğini açıklayabilmeli,
  • kısa bir programdaki tür uyuşmazlığını bulup düzeltebilmelisiniz.

Değişken: bir değere verdiğimiz ad

Aşağıdaki programda urun_fiyati ve adet iki değişkendir:

urun_fiyati = 120
adet = 3
toplam = urun_fiyati * adet

print(toplam)

= işareti burada matematikteki “eşittir” anlamında kullanılmaz. Sağ taraftaki değer hesaplanır ve sol taraftaki değişken adına bağlanır. Bu işleme atama (assignment) denir.

urun_fiyati = 120
     ↓
"urun_fiyati adı artık 120 değerini gösteriyor"

Bir değişkeni daha sonra yeni bir değere bağlayabiliriz:

puan = 70
puan = 85
print(puan)

Çıktı 85 olur. İkinci atama, puan değişkeninin o andan itibaren gösterdiği değeri değiştirir.

Bir değişken adının bir değere bağlanmasını ve yeniden atamanın değişkenin gösterdiği değeri değiştirmesini gösteren şema.
Important= ile == aynı şey değildir

= bir değeri değişkene atar. == ise iki değerin eşit olup olmadığını karşılaştırır ve True ya da False üretir.

Değişken adları nasıl seçilir?

Python’da değişken adlarında harf, rakam ve alt çizgi (_) kullanılabilir. Ancak ad rakamla başlayamaz.

Geçerli örnekler:

ogrenci_adi = "Deniz"
sinav1 = 72
toplam_tutar = 450.5

Geçersiz örnekler:

1sinav
toplam tutar
urun-fiyati

Kod çalışsa bile anlamsız adlar iyi değildir:

x = 249.90
y = 2
z = x * y

Aynı program şu biçimde daha kolay okunur:

birim_fiyat = 249.90
adet = 2
toplam_tutar = birim_fiyat * adet
Tip

Değişken adı, “bu değer neyi temsil ediyor?” sorusuna cevap vermelidir. Başlangıçta biraz uzun ama anlamlı adlar kullanmak, tek harfli adlardan genellikle daha iyidir.

Temel veri türleri

Python’da her değerin bir türü vardır. Bu hafta dört temel tür üzerinde duracağız:

Python türü Ne tutar? Örnek
int tam sayı 42, -7, 0
float ondalıklı sayı 3.14, 19.5
str metin (string) "Samsun", "42"
bool mantıksal değer True, False

Aynı görünen değerler farklı türlerde olabilir:

sayi = 42
metin = "42"

print(type(sayi))
print(type(metin))

42 bir int, "42" ise bir str değeridir. Tırnak işaretleri değerin metin olduğunu belirtir.

Python’daki temel int, float, str ve bool veri türleri ile yaygın tür dönüşümü örnekleri.

type() ile türü inceleyin

Aşağıdaki hücreyi çalıştırın. Sonra değerleri değiştirip type() çıktısının nasıl değiştiğini gözlemleyin.

Tahmin et — atama sırası sonucu nasıl etkiler?

Aşağıdaki kodu çalıştırmadan önce iki print() çağrısının ne yazdıracağını tahmin edin:

toplam değişkeni hesaplandığı anda birim_fiyat değeri 120 idi. Daha sonra birim_fiyat değişse de toplam otomatik olarak yeniden hesaplanmaz.

Note

Kod izlerken her satırdan sonra “hangi değişken şimdi hangi değeri gösteriyor?” sorusunu sorun.

Aritmetik ifadeler

Python sayısal değerlerle temel matematik işlemlerini doğrudan yapabilir.

Yazım İşlem Örnek
+ toplama 8 + 210
- çıkarma 8 - 26
* çarpma 8 * 216
/ bölme 8 / 24.0
// tam bölme 17 // 53
% kalan 17 % 52
** üs alma 2 ** 38

Birden fazla işlem varsa Python işlem önceliğini uygular. Parantez kullanmak hem sonucu hem de kodun okunabilirliğini açık hâle getirir:

ara_sinav = 70
final = 80

ortalama = (ara_sinav * 0.40) + (final * 0.60)
print(ortalama)
Noteİnteraktif alıştırmalarda geri bildirim

Quarto Live’da otomatik değerlendirilen Python alıştırmalarında ayrı bir Check düğmesi bulunmaz. Run Code düğmesi öğrenci kodunu çalıştırır; alıştırmaya bağlı bir kontrol tanımlıysa değerlendirme de aynı akışta yapılır ve geri bildirim hücrenin altında görünür.

Alıştırma — dakikayı saat ve dakikaya ayırın

135 dakika, 2 saat 15 dakikadır. Aşağıdaki programı tamamlayın. // tam saat sayısını, % ise geriye kalan dakikayı bulmak için uygundur.

Kalanı bulmak için % kullanın: bir_deger % 60.

toplam_dakika = 135

saat = toplam_dakika // 60
dakika = toplam_dakika % 60

print(saat)
print(dakika)

input() ile kullanıcıdan veri alma

Geçen hafta girdi kavramını tanımış ama input() kullanmamıştık. Artık değişkenleri bildiğimiz için kullanıcıdan alınan değeri saklayabiliriz:

ad = input("Adınız: ")
print("Merhaba", ad)

input() ekrandaki iletiyi gösterir, kullanıcının yazdığı değeri alır ve metin (str) olarak döndürür.

WarningTarayıcıdaki Python hücresi terminal değildir

Quarto Live, Python kodunu Pyodide ile tarayıcıdaki bir Web Worker içinde çalıştırır. Bu ortam terminaldeki standart girdiyi (stdin) aynı biçimde sağlamadığı için doğrudan input() kullanan canlı hücreler OSError: [Errno 29] I/O error üretebilir. Bu nedenle kitapta input() sözdizimini gerçek Python kodu olarak öğreneceğiz; fakat tarayıcı içi alıştırmalarda kullanıcıdan gelmiş veriyi bir değişkenle simüle edeceğiz.

Tarayıcıda girdi akışını simüle edin

Aşağıdaki girdi_metni değişkenini, kullanıcının input() ile yazdığı değer gibi düşünün. Değeri kendi adınızla değiştirip hücreyi çalıştırın:

Gerçek bir .py dosyasında aynı akış şöyle yazılır:

ad = input("Adınız: ")
print("Merhaba", ad)

Bu iki örnekte öğretmek istediğimiz fikir aynıdır: dışarıdan gelen metin bir değişkende saklanır ve programın sonraki adımlarında kullanılır.

Sayı girmek neden tek başına yetmez?

Aşağıdaki kod ilk bakışta doğru görünebilir:

yas = input("Yaşınız: ")
gelecek_yas = yas + 1

Fakat yas bir str, 1 ise bir int değeridir. Python bu iki farklı türü + ile doğrudan toplayamaz.

Önce tür dönüşümü yapmamız gerekir:

yas = int(input("Yaşınız: "))
gelecek_yas = yas + 1
print(gelecek_yas)

Tarayıcıda aynı dönüşüm fikrini input() olmadan deneyebiliriz:

girdi_metni önce str türündedir; int(girdi_metni) yeni bir int değeri üretir.

Ondalıklı değerler için aynı fikir float() ile uygulanır:

boy = float(input("Boyunuz (metre): "))
print(boy)
Warning

int("on dokuz") veya float("abc") gibi dönüşümler başarılı olmaz. Bu hafta geçerli girdi verildiğini varsayıyoruz. Geçersiz girdiyi sistematik biçimde ele almayı koşullar ve daha sonra istisnalarla geliştireceğiz.

İncele ve düzelt — tür uyuşmazlığı

Aşağıdaki program bilinçli olarak hatalıdır. Amaç "19" metnini sayıya dönüştürüp bir yıl sonrasını hesaplamaktır.

Kodu 20 çıktısını üretecek biçimde düzeltin.

int(yas_metni) ifadesi "19" metninden 19 tam sayısını üretir.

yas_metni = "19"
gelecek_yas = int(yas_metni) + 1
print(gelecek_yas)

Karşılaştırmalar bool üretir

Karşılaştırma yaptığımızda sonuç sayı veya metin değil, True ya da False olur:

Sık kullanılan karşılaştırmalar:

Yazım Anlam
== eşit mi?
!= eşit değil mi?
< küçük mü?
> büyük mü?
<= küçük veya eşit mi?
>= büyük veya eşit mi?

Bu sonuçları gelecek hafta if ile programın hangi yolu izleyeceğine karar vermek için kullanacağız.

Mantıksal ifadeler: and, or, not

Birden fazla karşılaştırmayı bir araya getirmek için Python’ın and, or ve not anahtar sözcüklerini kullanabiliriz.

yas = 20
ogrenci_mi = True

print(yas >= 18 and ogrenci_mi)
print(yas < 18 or ogrenci_mi)
print(not ogrenci_mi)
  • and: iki taraf da True ise True olur.
  • or: taraflardan en az biri True ise True olur.
  • not: sonucu tersine çevirir.

Şimdilik bu ifadelerin yalnızca sonucunu okuyacağız. Bunlarla karar vermeyi gelecek hafta yapacağız.

Alıştırma — üyelik koşulunu birleştirin

Bir spor merkezindeki indirim için kişinin yaşı en fazla 25 ve öğrenci olması gerekiyor. Aşağıdaki indirim_uygun değişkenini doğru mantıksal ifadeyle hesaplayın.

İfade şu iki parçayı birlikte kullanmalı: yas <= 25 ve ogrenci_mi.

yas = 22
ogrenci_mi = True

indirim_uygun = yas <= 25 and ogrenci_mi

print(indirim_uygun)

Değiştir — küçük bir alışveriş hesabı

Aşağıdaki program iki ürünün toplamını hesaplıyor:

Şunları sırayla deneyin:

  1. adet değerini 3 yapın ve sonucu tahmin edin.
  2. Kargoyu ücretsiz yapmak için kargo değerini değiştirin.
  3. odenecek hesabına 20 TL sabit indirim ekleyin.
  4. Kodu çalıştırmadan önce her değişiklikte beklediğiniz sonucu not edin.

Buradaki amaç yeni sözdizimi öğrenmek değil; bir değerdeki değişikliğin sonraki ifadeleri nasıl etkilediğini izlemektir.

Üret — yolculuk yakıt maliyeti

Bir araç 100 kilometrede ortalama 6.5 litre yakıt tüketiyor. Yolculuk mesafesi 320 km ve yakıtın litre fiyatı 47.80 TL olsun.

Aşağıdaki başlangıç değerlerini kullanarak:

  • yolculukta tüketilecek yakıt miktarını,
  • toplam yakıt maliyetini

hesaplayan programı yazın.

Kabul kriterleri:

  • Tüketilen yakıt mesafe_km / 100 * tuketim_100_km ilişkisine göre hesaplanmalı.
  • Toplam maliyet, tüketilen litre ile litre fiyatının çarpımı olmalı.
  • Her iki sonuç print() ile gösterilmeli.

Önce mesafe_km / 100 * tuketim_100_km ile tüketilen litreyi bulun. Sonra bu değeri litre_fiyati ile çarpın.

mesafe_km = 320
tuketim_100_km = 6.5
litre_fiyati = 47.80

tuketilen_yakit = mesafe_km / 100 * tuketim_100_km
toplam_maliyet = tuketilen_yakit * litre_fiyati

print("Tüketilen yakıt:", tuketilen_yakit)
print("Toplam maliyet:", toplam_maliyet)

Yerel Python ortamında kısa input() uygulaması

Tarayıcı hücresinden farklı olarak terminalde çalışan normal Python yorumlayıcısı input() için standart girdi sağlar. Bir .py dosyasında aşağıdaki küçük programı deneyin:

ad = input("Adınız: ")
yas = int(input("Yaşınız: "))

print("Merhaba", ad)
print("Gelecek yıl yaşınız:", yas + 1)

Programı en az iki farklı ad ve yaş değeriyle çalıştırın. Ardından int() dönüşümünü kaldırıp ne olduğunu gözlemleyin.

Bölüm özeti

Bu hafta programlarımız sabit çıktı üretmekten çıkıp veri tutmaya ve hesaplama yapmaya başladı.

  • Değişken, bir değere verdiğimiz addır.
  • Atama sırasında sağ taraf hesaplanır ve sonuç sol taraftaki değişken adına bağlanır.
  • int, float, str ve bool farklı veri türleridir.
  • input() kullanıcı girdisini metin (str) olarak verir.
  • Tarayıcıdaki Pyodide hücrelerinde terminal tipi input() kullanılmadığı için girdi değeri etkileşimli alıştırmalarda değişkenle simüle edilir.
  • Sayısal işlem gerekiyorsa int() veya float() gibi tür dönüşümleri gerekebilir.
  • Aritmetik ifadeler değer üretir; işlem sırası sonucu etkiler.
  • Karşılaştırmalar True veya False üretir.
  • and, or ve not mantıksal sonuçları birleştirmek için kullanılır.
  • Kod izlerken her satırdan sonra değişkenlerin hangi değerleri gösterdiğini takip etmek önemlidir.

Kendinizi kontrol edin

Kodu çalıştırmadan cevaplamaya çalışın:

  1. "25" ile 25 arasındaki temel fark nedir?
  2. input() ile alınan "18" değeriyle neden doğrudan + 1 işlemi yapılamaz?
  3. Aşağıdaki kod ne yazdırır?
a = 10
b = a + 5
a = 20
print(a)
print(b)
  1. 17 // 5 ve 17 % 5 sonuçları nedir?
  2. 20 >= 18 and True ifadesinin sonucu nedir?
  3. = ile == arasındaki fark nedir?
  4. Neden bu kitapta input() kullanan kod örnekleri tarayıcı hücresinden çok normal Python kod bloğu olarak gösteriliyor?

Bir sonraki bölümde True ve False üreten bu ifadeleri kullanarak programın hangi durumda hangi kodu çalıştıracağına karar vereceğiz.

Back to top