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 bölümün kapsamı

NoteSınavda sorulur
  • atamada sağ tarafın önce hesaplanması ve değişkenin o anki değeri
  • int, float, str ve bool ayrımı
  • input() sonucunun metin olması ve dönüşüm gereği
  • /, // ve % sonuçları ile sonuç türleri
  • karşılaştırma ve and / or / not sonuçları
  • = ile == farkı ve yerleşik adı gölgelemenin sonucu
  • float değerlerin yaklaşık tutulmasının çıktıya yansıması
  • Türkçe karakterli değişken adlarının kullanılabilirliği
  • kayan noktalı gösterimin ikilik taban ayrıntısı
  • tarayıcı hücrelerinde girdinin neden değişkenle simüle edildiği

Bu başlıklar konunun devamıdır; ileride karşınıza çıkar ama bu derste ezberlemeniz beklenmiyor.

"25" ile 25 aynı şey midir?

Ekranda ikisi de aynı görünür. Biriyle toplama yapabilirsiniz, diğeriyle yapamazsınız. Bu bölümdeki hataların çoğu bu tek ayrımdan doğar: bir değerin neye benzediği ile ne olduğu farklı şeylerdir.

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.

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şkenin bir değere bağlanması ve daha sonra yeniden değer alması.

Değişken bağlama ve yeniden atama
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

Anahtar sözcükler değişken adı olamaz

Python’ın dil yapısını oluşturan if, for, while, def, class, return, True gibi anahtar sözcükler (keywords) değişken adı olarak kullanılamaz.

Örneğin şu satır geçerli Python değildir:

# for = 3

Anahtar sözcükleri ezberlemeniz beklenmiyor. Editör çoğunu renklendirir ve Python geçersiz kullanımda SyntaxError verir. Önemli olan, dilin özel sözcüklerini kendi veri adlarımızla karıştırmamaktır.

Yerleşik adları gölgelemeyin

Bazı adlar teknik olarak değişken adı yapılabilir; fakat Python’ın hazır işlevlerini gölgeler (shadow) ve sonraki satırlarda şaşırtıcı hatalara yol açar.

Örneğin:

print = 5
# print("Merhaba")   # TypeError: 'int' object is not callable

Benzer biçimde başlangıçta şu adları kendi değişkenleriniz için kullanmayın:

print, input, list, str, int, float, sum

Bu adlar Python’ın yerleşik fonksiyon veya tür adlarıdır. Örneğin list = [1, 2] yazmak geçerli olsa bile daha sonra list(...) fonksiyonunu kullanmanızı engeller.

Tip

Bir yerleşik adı yanlışlıkla değiştirdiyseniz aynı oturumda del print gibi bir silme işlemiyle adı kaldırmak mümkün olabilir; fakat başlangıçta en güvenli yaklaşım anlamlı ve çakışmayan adlar seçmektir. Tarayıcı hücresinde kalıcı durum oluştuysa çalışma ortamını yeniden başlatmak da eski atamayı temizler.

Türkçe karakterli değişken adları

Python 3, Unicode tanımlayıcıları desteklediği için teknik olarak şu kod çalışabilir:

öğrenci_adı = "Ayşe"

Buna rağmen bu derste değişken ve fonksiyon adlarında çoğunlukla ASCII karakterleri kullanacağız:

ogrenci_adi = "Ayşe"

Bunun nedeni Türkçe metin kullanmanın yanlış olması değildir. Kod adlarında ı / i gibi görsel olarak kolay karışan karakterler, farklı klavye düzenleri, arama ve bazı araçlarla paylaşım sırasında gereksiz sürtünme oluşturabilir. Kullanıcıya gösterilen metinlerde ve veri değerlerinde Türkçe karakterleri normal biçimde kullanmaya devam edeceğiz.

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.

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
Note/ işlemi neden 4.0 verdi?

Python’da / ile yapılan normal sayısal bölme float sonuç üretir. Bölme kalansız olsa bile bu değişmez:

print(10 / 5)       # 2.0
print(type(10 / 5)) # <class 'float'>

Tam sayı bölümü gerekiyorsa farklı anlam taşıyan // operatörü kullanılır. 10 / 5 ile 10 // 5 aynı sayısal büyüklüğü gösterebilir; fakat işlem türleri ve sonuç türleri aynı değildir.

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)

float sonuçlarda uzun ondalıklar

Bilgisayarlar birçok ondalıklı sayıyı ikili sistemde tam olarak temsil edemez. Bu nedenle bazı hesapların sonucu matematikte beklediğiniz değere çok yakın olduğu hâlde ekranda birkaç fazladan basamakla görünebilir:

print(0.1 + 0.2)

Tipik çıktı:

0.30000000000000004

Bu, Python’ın toplama işlemini “yanlış yaptığı” anlamına gelmez; float değerlerin bilgisayarda yaklaşık temsil edilmesinin sonucudur. Bu konu özellikle para, ölçüm ve oran hesaplarında görünür olabilir.

Note

Bu hafta önce sayısal değerin nasıl hesaplandığını öğreneceğiz. Ekranda para gibi değerleri 994.24 TL biçiminde göstermeyi 8. haftada f-string sayı biçimlendirmesiyle ele alacağız. Görsel biçimlendirme ile hesaplamanın kendisi aynı şey değildir.

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.

Geçen haftadan hatırlayın: print() içine virgülle verilen birden fazla değer varsayılan olarak aralarında bir boşlukla yazdırılır. Bu nedenle print("Merhaba", ad) çıktısında metin ile ad arasına ayrıca boşluk karakteri eklememiz gerekmez.

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.

input ile alınan metnin sayısal işleme uygun türe dönüştürülmesi.

Kullanıcı girdisinde tür dönüşümü

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.
Warning

Bu değerlerle toplam_maliyet matematiksel olarak 994.24 TL’dir. Bununla birlikte bazı Python sürümleri ve işlem sıralarında ekranda 994.2400000000001 gibi çok yakın bir float değeri görebilirsiniz. Bu, formülünüzün yanlış olduğu anlamına gelmez. Önce hesabın doğru olduğunu kontrol edin; kullanıcıya iki ondalık basamakla gösterimi 8. haftada ele alacağız.

Ö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.

Sınav provası

Önce kendi cevabını seç; sonra cevap anahtarında her şıkkın neden doğru veya yanlış olduğunu oku. Çeldiriciler uydurma değil, bu konuda gerçekten yapılan hatalardır. Sınav maddeleri de bu mantıkla yazılır.

Madde 1. Aşağıdaki program ne yazdırır?

a = 10
b = a + 5
a = 20
print(a)
print(b)
  • A. 10 ve 25
  • B. 20 ve 20
  • C. 20 ve 15
  • D. 10 ve 15
  • E. 20 ve 25

Madde 2. "25" ile 25 arasındaki temel fark nedir?

  • A. İkisi de sayıdır; tırnak yalnızca okunabilirlik içindir
  • B. İlki daha büyük bir sayıdır
  • C. İlki float, ikincisi inttir
  • D. İlki metin (str), ikincisi tam sayıdır (int); metinle aritmetik işlem yapılamaz
  • E. İkisi de aynıdır; Python tırnağı yok sayar

Madde 3. yas = input("Yaşınız: ") satırından sonra yas + 1 işlemi neden hata verir?

  • A. yas değişkeni boş kaldığı için
  • B. input() çağrısına bir mesaj verildiği için sonuç bozulur
  • C. input() yalnızca harf kabul eder, rakam kabul etmez
  • D. Sayıya 1 eklemek için += 1 yazmak gerekir
  • E. input() girilen değeri her zaman metin olarak verir; metinle sayı toplanamaz

Madde 4. 17 // 5 ve 17 % 5 işlemlerinin sonuçları sırasıyla nedir?

  • A. 3 ve 2
  • B. 4 ve 1
  • C. 2 ve 3
  • D. 3.4 ve 2
  • E. 3 ve 3.4

Madde 5. 10 / 5 işlemi neden 2 değil 2.0 sonucunu verir?

  • A. print() sayıları her zaman ondalıklı gösterir
  • B. / işlemi kalansız bölmede bile her zaman float üretir
  • C. Bölme sonucunda küçük bir yuvarlama hatası oluşmuştur
  • D. Bölünen bölenden büyük olduğu için
  • E. 10 ve 5 değerleri aslında float olarak saklanır

Madde 6. 20 >= 18 and True ifadesinin sonucu nedir?

  • A. None
  • B. 20
  • C. True
  • D. False
  • E. Hata verir; sayı karşılaştırması True ile birleştirilemez

Madde 7. = ile == arasındaki fark nedir?

  • A. İkisi de eşitlik sınar; == yalnızca daha okunaklıdır
  • B. == yalnızca if içinde, = yalnızca fonksiyon içinde kullanılır
  • C. == atama yapar, = karşılaştırır
  • D. = bir değeri değişkene atar; == iki değerin eşit olup olmadığını sınar ve True / False üretir
  • E. = sayılarda, == metinlerde kullanılır

Madde 8. Aşağıdaki program neden ikinci satırda hata verir?

print = 5
print("Merhaba")
  • A. print ayrılmış bir sözcüktür ve atamada kullanılamaz
  • B. 5 sayısı metinle birlikte kullanılamaz
  • C. İkinci satırda tırnak yanlış kullanılmıştır
  • D. Hata vermez; Python eski print işlevini kendiliğinden geri getirir
  • E. İlk satır print adını 5 sayısına bağladı; artık o ad bir fonksiyon değil sayıdır ve çağrılamaz

Madde 9. print(0.1 + 0.2) çıktısı 0.30000000000000004 görünüyor. Bu ne anlama gelir?

  • A. float değerler bazı ondalık sayıları yaklaşık tuttuğu için beklenen davranıştır; kodda bir hata yoktur
  • B. Toplama işlemi yanlış yazılmıştır
  • C. Sayılar metin olarak toplanmıştır
  • D. print() çıktıyı bozmuştur
  • E. Python’da bir hesaplama hatası vardır ve sürüm güncellenmelidir

Madde 1 — Doğru: C. b hesaplandığı anda a hâlâ 10du, yani b 15 oldu. Sonradan anın değişmesi byi etkilemez.

  • A yanlış: Ne a eski değerinde kalır ne de b yeniden hesaplanır.
  • B yanlış: b ayrı bir değişkendir ve anın yeni değerini almaz.
  • D yanlış: Son atama a20 yaptı; print(a) güncel değeri yazar.
  • E yanlış: b ile a arasında kalıcı bir bağ kurulmaz; b yalnızca hesaplandığı andaki sonucu tutar.

Madde 2 — Doğru: D. Tırnak değeri metne çevirir. "25" + 1 hata verirken 25 + 1 sonucu 26 olur.

  • A yanlış: Tırnak biçimsel değildir; değerin türünü belirler.
  • B yanlış: Metin bir büyüklük taşımaz; karşılaştırma bile farklı çalışır.
  • C yanlış: "25" bir strdir; float olması için tırnaksız ve ondalıklı yazılması gerekirdi.
  • E yanlış: Python tırnağı yok saymaz; type("25") ile type(25) farklı sonuç verir.

Madde 3 — Doğru: E. Kullanıcı 18 yazsa bile değişkende "18" durur. Toplama için int(yas) gerekir.

  • A yanlış: Kullanıcı bir değer girdiyse değişken boş değildir; sorun değerin türü.
  • B yanlış: Parantez içindeki mesaj yalnızca ekranda görünür; dönen değerin türünü değiştirmez.
  • C yanlış: Rakam da kabul eder; yalnızca sonucu metin olarak verir.
  • D yanlış: += 1 da aynı hatayı verir; yazım biçimi türü değiştirmez.

Madde 4 — Doğru: A. // tam bölüm sonucunu, % kalanı verir: 17 = 5 × 3 + 2.

  • B yanlış: 5 × 4 = 20 olur ve 17’yi aşar; bölüm 4 olamaz.
  • C yanlış: İki işlemin sonucu ters yazılmış; bölüm 3, kalan 2dir.
  • D yanlış: // ondalık sonuç vermez; aşağı yuvarlanmış tam bölümü verir.
  • E yanlış: % kalanı verir; ondalık bölüm sonucunu değil.

Madde 5 — Doğru: B. Python 3’te / normal bölmedir ve sonucu daima floattur. Tam sayı sonucu için // kullanılır.

  • A yanlış: print(10 // 5) çıktısı 2dir; gösterim değil değerin türü belirleyici.
  • C yanlış: Yuvarlama sorunu yok; sonuç tam olarak 2’dir, yalnızca float türünde yazılır.
  • D yanlış: Büyüklük ilişkisinin sonucun türüyle ilgisi yoktur; 5 / 10 da float verir.
  • E yanlış: İkisi de inttir; float olan yalnızca bölme sonucudur.

Madde 6 — Doğru: C. 20 >= 18 zaten Truedur; and iki taraf da doğru olduğunda True verir.

  • A yanlış: Karşılaştırma ve mantıksal işlemler None üretmez.
  • B yanlış: Karşılaştırma sonucu bir sayı değil, bool değeridir.
  • D yanlış: İki taraf da doğru olduğu için and sonucu yanlış olamaz.
  • E yanlış: 20 >= 18 zaten bir bool ürettiği için and ile birleşmesinde sorun yok.

Madde 7 — Doğru: D. Biri veri yazar, diğeri soru sorar. Koşullarda kullanılması gereken ==dir.

  • A yanlış: = sınamaz, atar. if x = 5: yazımı hata verir.
  • B yanlış: Kullanım yeriyle değil, yaptıkları işle ayrılırlar.
  • C yanlış: Görevler ters yazılmış.
  • E yanlış: Türle ilgisi yoktur; ikisi de her türle çalışır ve farklı işler yapar.

Madde 8 — Doğru: E. Yerleşik adlar korumalı değildir. Üzerine atama yapılırsa asıl işlev gölgelenir.

  • A yanlış: print ayrılmış sözcük değil, yerleşik bir addır; atama söz dizimi hatası vermez.
  • B yanlış: Hata "Merhaba" değerinden değil, print adının artık sayı olmasından kaynaklanıyor.
  • C yanlış: Tırnaklar doğru; sorun ilk satırdaki atamadır.
  • D yanlış: Böyle bir geri alma yoktur; ad, yeniden atanana veya program bitene kadar sayı kalır.

Madde 9 — Doğru: A. Ondalık sayıların ikilik tabanda tam karşılığı olmayabilir. Bu Python’a özgü bir kusur değil, kayan noktalı gösterimin doğasıdır.

  • B yanlış: Yazımda sorun yok; fark değerlerin saklanma biçiminden geliyor.
  • C yanlış: Metin toplansaydı sonuç 0.10.2 gibi birleşmiş bir metin olurdu.
  • D yanlış: print() yalnızca değeri gösterir; değeri değiştirmez.
  • E yanlış: Aynı davranış diğer dillerde de görülür; güncelleme bunu değiştirmez.

Tek sayfa özet

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.
  • Python anahtar sözcükleri değişken adı olamaz; print, input, list, str gibi yerleşik adları değişken adı yapmak ise hazır işlevleri gölgeleyebilir.
  • Python 3 Türkçe karakterli tanımlayıcılara izin verse de bu derste kod adlarında taşınabilirlik ve okunabilirlik için çoğunlukla ASCII adlar kullanacağız.
  • int, float, str ve bool farklı veri türleridir.
  • / normal bölme işlemi kalansız bölmede bile float sonuç üretir.
  • float değerler bazı ondalıklı sayıları yaklaşık tuttuğu için sonuçta küçük gösterim farkları görülebilir.
  • 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.

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.

Bu bölümün kazanımları

Bu bölümü bitiren öğrenci:

  • Atamada sağ tarafın önce hesaplandığını bilir ve değişkenin o anki değerini izler.
  • int, float, str ve bool türlerini birbirinden ayırır.
  • input() sonucunun metin olduğunu ve sayısal işlem için dönüşüm gerektiğini açıklar.
  • /, // ve % işlemlerinin sonucunu ve sonuç türünü tahmin eder.
  • Karşılaştırma ve mantıksal ifadelerin True / False sonucunu belirler.
  • = ile == arasındaki farkı ayırır ve yerleşik adları gölgelemenin sonucunu açıklar.
  • float değerlerin yaklaşık tutulmasının çıktıdaki sonucunu yorumlar.
Back to top