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,strveboolveri 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()vestr()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
TrueveyaFalseü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.

= 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.5Geçersiz örnekler:
1sinav
toplam tutar
urun-fiyati
Kod çalışsa bile anlamsız adlar iyi değildir:
x = 249.90
y = 2
z = x * yAynı program şu biçimde daha kolay okunur:
birim_fiyat = 249.90
adet = 2
toplam_tutar = birim_fiyat * adetDeğ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.

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.
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 + 2 → 10 |
- |
çıkarma | 8 - 2 → 6 |
* |
çarpma | 8 * 2 → 16 |
/ |
bölme | 8 / 2 → 4.0 |
// |
tam bölme | 17 // 5 → 3 |
% |
kalan | 17 % 5 → 2 |
** |
üs alma | 2 ** 3 → 8 |
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)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.
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 + 1Fakat 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)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 daTrueiseTrueolur.or: taraflardan en az biriTrueiseTrueolur.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:
adetdeğerini3yapın ve sonucu tahmin edin.- Kargoyu ücretsiz yapmak için
kargodeğerini değiştirin. odenecekhesabına20TL sabit indirim ekleyin.- 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_kmiliş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,strveboolfarklı 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()veyafloat()gibi tür dönüşümleri gerekebilir. - Aritmetik ifadeler değer üretir; işlem sırası sonucu etkiler.
- Karşılaştırmalar
TrueveyaFalseüretir. and,orvenotmantı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:
"25"ile25arasındaki temel fark nedir?input()ile alınan"18"değeriyle neden doğrudan+ 1işlemi yapılamaz?- Aşağıdaki kod ne yazdırır?
a = 10
b = a + 5
a = 20
print(a)
print(b)17 // 5ve17 % 5sonuçları nedir?20 >= 18 and Trueifadesinin sonucu nedir?=ile==arasındaki fark nedir?- 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.