Python eğitim serisi Ders 02 için matematiksel, karşılaştırma ve mantıksal operatörleri Python kod örnekleriyle gösteren görsel.

Python’da Operatörler ve Karşılaştırmalar: Matematiksel ve Mantıksal İşlemler

Python'da operatörler nasıl kullanılır? Toplama, bölme, kalan bulma, karşılaştırma ve mantıksal işlemleri çalışan kod örnekleriyle öğrenin.

PYTHON EĞİTİM SERİSİ · DERS 02 / 16

Tüm Python dersleri  ·  ← Önceki: Değişkenler ve Veri Türleri

Bir uygulamanın iki sayıyı topladığını, bir öğrencinin puanını hesapladığını veya girilen yaşın belirli bir sınırı geçip geçmediğini kontrol ettiğini düşünelim.

Bunlar bir program için oldukça temel işlemler.

Ancak programın bu sonuçlara ulaşabilmesi için yalnızca bilgileri saklaması yeterli değildir.

Sakladığı bilgiler üzerinde işlemler de yapabilmesi gerekir.

Örneğin bir değişkende 25, diğerinde 15 değerini tutabiliriz. Fakat bu iki sayının toplamını hesaplamak veya hangisinin büyük olduğunu öğrenmek istediğimizde farklı işaretler ve ifadeler kullanırız.

Python’da bu işlemleri gerçekleştirmemizi sağlayan yapılar operatörler olarak adlandırılır.

Operatörler yalnızca matematiksel hesaplamalar için kullanılmaz. Değerleri karşılaştırmak, bir değişkenin değerini güncellemek veya birden fazla koşulun doğru olup olmadığını değerlendirmek için de kullanılır.

Bu derste Python’daki temel operatörleri, işlem önceliğini, karşılaştırmaların nasıl çalıştığını ve mantıksal ifadeleri örneklerle öğreneceğiz.

Dersin sonunda ise kullanıcıdan bilgi alarak günlük çalışma hedefini değerlendiren küçük bir Python programı hazırlayacağız.

Böylece ilk derste öğrendiğimiz değişkenleri, veri türlerini ve input() fonksiyonunu da kullanmış olacağız.

Python Eğitim Serisi — Ders 02 / 16

Henüz değişkenleri ve veri türlerini bilmiyorsanız önce Python’da Değişkenler ve Veri Türleri dersimizi tamamlamanızı öneririz.

Bütün derslerin sırasına Python Eğitim Merkezi sayfamızdan ulaşabilirsiniz.

Python’da operatör nedir?

Operatör, bir veya birden fazla değer üzerinde işlem gerçekleştiren işaret ya da anahtar kelimedir.

Örneğin:

sonuc = 10 + 5

print(sonuc)

Bu kodu çalıştırdığımızda:

15

sonucunu görürüz.

Burada + işareti toplama operatörüdür.

10 ve 5 ise toplama işleminde kullanılan değerlerdir.

Python önce 10 + 5 işlemini hesaplar, ardından sonucu sonuc değişkenine atar.

Daha sonra print() fonksiyonu bu değişkenin değerini ekrana yazdırır.

Aynı işlemi değişkenler üzerinde de yapabiliriz:

birinci_sayi = 10
ikinci_sayi = 5

toplam = birinci_sayi + ikinci_sayi

print(toplam)

Beklenen çıktı yine:

15

olacaktır.

Buradaki önemli fark, sayıları doğrudan işlemin içine yazmak yerine değişkenlerde saklamamızdır.

Böylece sayılar değiştiğinde programımızın hesaplama yapısını yeniden yazmamız gerekmez.

Örneğin birinci_sayi değerini 20 yaparsak sonuç otomatik olarak 25 olur.

Gerçek programlarda da bu yaklaşım kullanılır.

Bir uygulama ürün fiyatlarını, kullanıcı puanlarını veya çeşitli ölçümleri değişkenler üzerinden işleyebilir.

Python’da matematiksel operatörler

Python, günlük hayatta kullandığımız temel matematiksel işlemleri destekler.

Toplama ve çıkarma işaretleri tanıdık olsa da çarpma, bölme ve bazı diğer işlemler için farklı semboller kullanılır.

OperatörİşlemÖrnekSonuç
+Toplama10 + 313
-Çıkarma10 - 37
*Çarpma10 * 330
/Bölme10 / 42.5
//Tam bölme10 // 33
%Kalan bulma10 % 31
**Üs alma2 ** 38

İlk dört işlem oldukça tanıdık.

Ancak //, % ve ** operatörleri programlamaya yeni başlayanlar için biraz farklı gelebilir.

Bu nedenle bunları ayrı ayrı inceleyelim.

Toplama, çıkarma ve çarpma

Önce birkaç basit hesaplama yapalım.

Visual Studio Code’da operatorler.py adında yeni bir dosya oluşturalım.

Şu kodları yazalım:

sayi1 = 20
sayi2 = 6

print("Toplama:", sayi1 + sayi2)
print("Çıkarma:", sayi1 - sayi2)
print("Çarpma:", sayi1 * sayi2)

Programın çıktısı:

Toplama: 26
Çıkarma: 14
Çarpma: 120

olacaktır.

Python’da çarpma işlemi için x harfi değil, * işareti kullanılır.

Örneğin:

sonuc = 8 * 4

print(sonuc)

kodunun sonucu 32 olur.

Şimdi bunu günlük bir hesaplamaya dönüştürelim.

Bir kutuda 12 kalem olduğunu ve 4 kutumuz bulunduğunu düşünelim.

kutudaki_kalem = 12
kutu_sayisi = 4

toplam_kalem = kutudaki_kalem * kutu_sayisi

print("Toplam kalem:", toplam_kalem)

Çıktı:

Toplam kalem: 48

Bu örnek küçük olsa da programlamanın önemli bir mantığını gösteriyor.

Önce hangi bilgilere ihtiyacımız olduğunu belirliyoruz.

Sonra bu bilgileri değişkenlerde saklıyoruz.

Son olarak uygun operatörü kullanarak sonucu hesaplıyoruz.

Programlarımız büyüdüğünde de aynı yaklaşım devam edecek.

Bölme işleminde neden farklı operatörler var?

Python’da bölme işlemi için / kullanılır.

Örneğin:

sonuc = 10 / 2

print(sonuc)
print(type(sonuc))

Çıktı:

5.0
<class 'float'>

Sonucun 5 yerine 5.0 olarak görünmesi dikkatinizi çekmiş olabilir.

Bunun nedeni Python 3’te / operatörünün bölme sonucunu float türünde üretmesidir.

Bölme işleminin sonucu matematiksel olarak tam sayı olsa bile Python bunu ondalıklı sayı türünde gösterebilir.

Peki yalnızca tam bölüm değerine ihtiyacımız varsa?

Bu durumda // operatöründen yararlanabiliriz.

print(17 / 5)
print(17 // 5)

Çıktı:

3.4
3

İlk işlem normal bölmedir.

İkinci işlem ise sonucun aşağı yönde en yakın tam sayıya yuvarlanmış bölümünü verir.

Burada önemli bir ayrıntı var.

// operatörü yalnızca ondalık kısmı silen bir işlem olarak düşünülmemelidir.

Özellikle negatif sayılarda davranışı farklı olabilir.

Örneğin:

print(-7 // 2)

Çıktı:

-4

Çünkü -7 / 2 sonucunun değeri -3.5 olur ve Python tam bölmede aşağı yöndeki tam sayı olan -4 değerini üretir.

Başlangıç aşamasında genellikle pozitif sayılarla çalışacağız ancak bu farkı bilmemiz ileride yararlı olacaktır.

Kalan bulma operatörü ne işe yarar?

% işareti Python’da kullanılan bir başka matematiksel operatördür.

Bu operatör bölme işleminden kalan değeri bulmamızı sağlar.

Örneğin:

print(10 % 3)

Çıktı:

1

Çünkü 10 sayısını 3’e böldüğümüzde tam bölüm 3, kalan ise 1’dir.

Bu işlemin ne zaman işe yarayacağını küçük bir örnekle görelim.

Elimizde 26 kalem olduğunu düşünelim.

Her kutuya 5 kalem koyacağız.

kalem_sayisi = 26
kutu_kapasitesi = 5

dolu_kutu = kalem_sayisi // kutu_kapasitesi
artan_kalem = kalem_sayisi % kutu_kapasitesi

print("Tam dolu kutu:", dolu_kutu)
print("Artan kalem:", artan_kalem)

Çıktı:

Tam dolu kutu: 5
Artan kalem: 1

Böylece // ve % operatörlerinin birlikte nasıl kullanılabildiğini gördük.

Kalan bulma operatörü programlamada oldukça yaygındır.

Örneğin bir sayının çift olup olmadığını öğrenmek için ikiye bölündüğündeki kalanı kontrol edebiliriz.

sayi = 18

print(sayi % 2)

Çıktı:

0

Bir sayının 2 ile bölümünden kalan sıfırsa sayı çifttir.

Bu bilgiyi ileride koşullu ifadelerle birleştireceğiz.

Şimdilik işlemin nasıl hesaplandığını anlamamız yeterli.

Üs alma işlemi nasıl yapılır?

Python’da üs alma işlemi ** işaretiyle gerçekleştirilir.

Örneğin 2’nin üçüncü kuvvetini hesaplamak için:

sonuc = 2 ** 3

print(sonuc)

yazarız.

Çıktı:

8

olacaktır.

Buradaki işlem:

2 × 2 × 2

anlamına gelir.

Benzer şekilde bir karenin alanını hesaplayabiliriz.

kenar = 6

alan = kenar ** 2

print("Karenin alanı:", alan)

Çıktı:

Karenin alanı: 36

Bu hesaplama için ayrıca bir matematik kütüphanesi yüklememize gerek yok.

Python temel matematiksel operatörleri doğrudan destekler.

Bu operatörlerin davranışlarını Python’un resmî başlangıç rehberinde de inceleyebilirsiniz.

İşlem önceliği neden önemlidir?

Bir programda birden fazla matematiksel operatör kullandığımızda Python’un işlemleri hangi sırayla gerçekleştirdiğini bilmemiz gerekir.

Örneğin şu ifadeyi inceleyelim:

sonuc = 5 + 3 * 2

print(sonuc)

Sonuç sizce 16 mı, 11 mi?

Python bu işlemi çalıştırdığında:

11

sonucunu üretir.

Çünkü çarpma işlemi toplama işleminden önce gerçekleştirilir.

Önce 3 * 2 işlemi yapılır.

Sonra çıkan sonuç 5 ile toplanır.

Ancak parantez kullanarak işlem sırasını değiştirebiliriz.

sonuc = (5 + 3) * 2

print(sonuc)

Bu kez sonuç:

16

olacaktır.

Çünkü Python önce parantez içindeki toplama işlemini yapar.

Ardından sonucu 2 ile çarpar.

Genel olarak matematiksel ifadelerde parantezler, üs alma, çarpma ve bölme, ardından toplama ve çıkarma işlemleri belirli bir öncelik düzeniyle değerlendirilir.

Ancak gerçek işlem önceliği kuralları bundan daha ayrıntılıdır.

Örneğin aynı öncelik düzeyindeki bazı işlemler soldan sağa değerlendirilirken üs alma işleminin kendi bağlanma kuralı vardır.

Bu yüzden özellikle başlangıçta karmaşık ifadeleri gereksiz yere tek satırda toplamak yerine parantez kullanmak daha okunabilir bir yöntemdir.

Şu iki ifadeyi karşılaştıralım:

sonuc1 = 100 - 20 / 2
sonuc2 = (100 - 20) / 2

print(sonuc1)
print(sonuc2)

Çıktı:

90.0
40.0

Parantezler yalnızca sonucu değiştirmekle kalmaz, kodu okuyan kişinin hesabı daha kolay anlamasını da sağlar.

Python’un bütün operatör önceliği sıralamasını resmî Python ifadeler belgesinde bulabilirsiniz.

Karşılaştırma operatörleri ne işe yarar?

Şimdiye kadar operatörlerle hesaplamalar yaptık.

Ancak programlama yalnızca hesaplama yapmak değildir.

Bazen iki değerin eşit olup olmadığını veya bir değerin belirli bir sınırdan büyük olup olmadığını öğrenmek isteriz.

Örneğin bir sınavda geçme puanının 70 olduğunu düşünelim.

Öğrencinin puanını bu sınırla karşılaştırmamız gerekir.

Python’da bunun için karşılaştırma operatörleri kullanılır.

OperatörAnlamıÖrnek
==Eşit mi?5 == 5
!=Eşit değil mi?5 != 3
>Büyük mü?8 > 4
<Küçük mü?4 < 8
>=Büyük veya eşit mi?70 >= 70
<=Küçük veya eşit mi?5 <= 5

Bu operatörler karşılaştırma yaptığında sonuç genellikle iki mantıksal değerden biridir:

True veya False.

İlk dersimizden hatırlayalım.

True doğru, False ise yanlış anlamına gelir.

Örneğin:

print(10 > 5)
print(10 < 5)

Çıktı:

True
False

İlk karşılaştırma doğrudur çünkü 10, 5’ten büyüktür.

İkinci karşılaştırma yanlıştır çünkü 10, 5’ten küçük değildir.

Bu kadar basit.

Ancak karşılaştırma operatörlerini değişkenlerle kullandığımızda çok daha yararlı sonuçlar elde edebiliriz.

Python'da matematiksel operatörler, karşılaştırma işaretleri, mantıksal operatörler ve işlem önceliğini örneklerle açıklayan eğitim infografiği.
Python’da matematiksel, karşılaştırma ve mantıksal operatörlerin örneklerle anlatımı.

Eşittir işareti ile çift eşittir arasındaki fark

Python öğrenirken en sık karıştırılan konulardan biri = ve == işaretleridir.

Bunların görevleri farklıdır.

Tek eşittir işareti:

puan = 80

bir değişkene değer atamak için kullanılır.

Çift eşittir işareti ise:

print(puan == 80)

iki değerin eşit olup olmadığını karşılaştırır.

Beklenen çıktı:

True

olacaktır.

Çünkü puan değişkenindeki değer 80’dir.

Bir örnek daha yapalım:

yas = 25

print(yas == 18)
print(yas != 18)

Çıktı:

False
True

İlk karşılaştırma yanlıştır; çünkü yaş 18 değildir.

İkinci karşılaştırma doğrudur; çünkü yaş 18’den farklıdır.

Önemli: != operatörü “eşit değil” anlamına gelir.

Buradaki ünlem işareti, Python’da farklılık karşılaştırmasının bir parçasıdır.

Büyük veya eşit operatörünü ne zaman kullanırız?

Bir öğrencinin sınavdan geçmek için en az 70 puan alması gerektiğini düşünelim.

puan = 70

gecti_mi = puan >= 70

print(gecti_mi)

Çıktı:

True

Bu örnekte >= operatörünü kullandık.

Çünkü geçme sınırına eşit olan puanların da kabul edilmesini istiyoruz.

Eğer yalnızca > kullansaydık 70 puan yeterli olmayacaktı.

puan = 70

print(puan > 70)

Çıktı:

False

Bu ayrım küçük görünebilir ancak gerçek uygulamalarda önemlidir.

Bir yaş sınırı, stok kontrolü veya puan değerlendirmesi yaparken karşılaştırma işaretini yanlış seçmek programın beklenmeyen sonuçlar üretmesine neden olabilir.

Örneğin bir ürünün stokta bulunup bulunmadığını kontrol edebiliriz:

stok_adedi = 3

stok_var_mi = stok_adedi > 0

print(stok_var_mi)

Çıktı:

True

Burada program henüz kullanıcıya farklı mesajlar göstererek karar vermiyor.

Yalnızca karşılaştırmanın sonucunu hesaplıyor.

Bu sonucu kullanarak farklı işlemler yaptırmayı bir sonraki dersimizde if, elif ve else yapılarıyla öğreneceğiz.

Mantıksal operatörler: and, or ve not

Bazı durumlarda tek bir karşılaştırma yeterli değildir.

Örneğin bir etkinliğe katılmak için kişinin hem gerekli yaş sınırını karşılaması hem de kaydının bulunması gerektiğini düşünelim.

Bu durumda iki farklı bilgiyi birlikte değerlendirmemiz gerekir.

Python’da bunun için mantıksal operatörlerden yararlanabiliriz.

Başlangıçta bilmemiz gereken üç temel mantıksal operatör bulunur.

and — İki koşul da doğru olmalı

Örneğin:

yas = 20
kayit_var = True

katilabilir = yas >= 18 and kayit_var

print(katilabilir)

Çıktı:

True

Çünkü yaş en az 18’dir ve kayıt bilgisi True değerindedir.

Ancak kayıt bilgisi False olsaydı:

yas = 20
kayit_var = False

katilabilir = yas >= 18 and kayit_var

print(katilabilir)

çıktısı:

False

olacaktı.

and ile birleştirdiğimiz iki mantıksal koşulun da doğru olması gerekir.

or — Koşullardan en az biri doğru olmalı

Örneğin bir kişinin indirimden yararlanabilmesi için öğrenci olması veya üyelik sahibi olması gerektiğini düşünelim.

ogrenci = False
uye = True

indirim_hakki = ogrenci or uye

print(indirim_hakki)

Çıktı:

True

olacaktır.

Çünkü kişi öğrenci olmasa da üyelik sahibidir.

or operatöründe koşullardan en az birinin doğru olması yeterlidir.

Her iki koşul da yanlışsa sonuç False olur.

not — Mantıksal sonucu tersine çevirir

Örneğin:

hesap_aktif = True

print(not hesap_aktif)

Çıktı:

False

olacaktır.

Çünkü not, True değerini False, False değerini ise True olarak değerlendirir.

Bir başka örnek:

gorev_tamamlandi = False

print(not gorev_tamamlandi)

Çıktı:

True

Bu ifade bize görevin henüz tamamlanmadığını mantıksal olarak göstermiş olur.

Burada önemli bir teknik ayrıntıyı da belirtelim: Python’da and ve or, her zaman doğrudan bool türünde sonuç üretmek zorunda değildir; kullanılan ifadelerin değerlerinden birini döndürebilir. Ancak bu derste yalnızca mantıksal koşullar üzerinde çalıştığımız için sonuçlarımız True ve False olacaktır.

Ayrıca and ve or kısa devre değerlendirmesi kullanır; yani sonuç belli olduğunda ikinci ifadeyi değerlendirmeleri gerekmeyebilir.

Bu özelliklerin ayrıntıları Python’un yerleşik türler belgesinde açıklanır.

Birden fazla operatörü aynı ifadede kullanmak

Şimdi karşılaştırma ve mantıksal operatörleri birleştirelim.

Bir kullanıcının yaşının 18 ile 65 arasında olup olmadığını değerlendirelim.

yas = 30

uygun_aralik = (yas >= 18) and (yas <= 65)

print(uygun_aralik)

Çıktı:

True

İlk karşılaştırma:

yas >= 18

İkinci karşılaştırma:

yas <= 65

olduğu için ve iki koşul da doğru olduğundan sonuç True olur.

Parantezler burada zorunlu değildir ancak hangi karşılaştırmaları birleştirdiğimizi açıkça gösterir.

Özellikle yeni başlayanlar için mantıksal ifadelerde parantez kullanmak kodun anlaşılmasını kolaylaştırır.

Bir değişkenin değerini operatörlerle güncellemek

İlk dersimizde bir değişkenin değerini sonradan değiştirebildiğimizi öğrendik.

Operatörler sayesinde bunu daha kullanışlı biçimde yapabiliriz.

Örneğin bir oyuncunun başlangıç puanı 10 olsun.

Yeni bir görev tamamladığında 5 puan kazansın.

puan = 10

puan = puan + 5

print(puan)

Çıktı:

15

Burada puan = puan + 5 ifadesi ilk bakışta matematiksel olarak garip görünebilir.

Ancak bunun bir eşitlik denklemi olmadığını hatırlayalım.

Python önce sağ taraftaki puan + 5 işlemini hesaplar.

Ardından sonucu sol taraftaki puan değişkenine atar.

Aynı işlemi daha kısa yazabiliriz:

puan = 10

puan += 5

print(puan)

Çıktı yine:

15

olacaktır.

+= operatörü, mevcut değerin üzerine yeni bir değer ekleyerek değişkeni güncellememizi sağlar.

Benzer biçimde:

puan = 20

puan -= 4

print(puan)

Çıktı:

16

olur.

Ayrıca *=, /=, //=, %= ve **= gibi birleşik atama operatörleri de bulunur.

Örneğin:

sayi = 4

sayi *= 3

print(sayi)

Çıktı:

12

Bu kullanım, mevcut değeri 3 ile çarparak sonucu yeniden aynı değişkene atar.

Birleşik atama operatörleri özellikle ileride öğreneceğimiz döngülerde sık karşımıza çıkacak.

Örneğin bir puanı veya sayacı tekrar tekrar artırmamız gerektiğinde kullanabileceğiz.

Şimdilik bu işaretlerin değişkenin mevcut değerini güncellemek için kullanıldığını bilmek yeterli.

Metin ve sayılarla işlem yaparken nelere dikkat etmeliyiz?

Bir önceki derste str, int ve float veri türlerini öğrenmiştik.

Operatörler kullanırken veri türleri arasındaki fark daha belirgin hâle gelir.

Örneğin:

print(5 + 3)

çıktısı:

8

olur.

Ancak şu örneği çalıştıralım:

print("5" + "3")

Bu kez çıktı:

53

olacaktır.

Çünkü tırnak içindeki değerler sayı değil, metindir.

Python, iki metin üzerinde + operatörü kullanıldığında bunları yan yana birleştirir.

Şu örneğe bakalım:

ad = "Ali"
soyad = "Yılmaz"

tam_ad = ad + " " + soyad

print(tam_ad)

Çıktı:

Ali Yılmaz

Bu örnekte aradaki " " ifadesi bir boşluk karakteridir.

Böylece ad ve soyad arasında boşluk bıraktık.

Ancak metin ile sayıyı doğrudan + kullanarak birleştirmeye çalışırsak hata alabiliriz.

yas = 25

print("Yaşınız: " + yas)

Bu kod TypeError hatasına neden olur.

Çünkü "Yaşınız: " bir metin, yas değişkeninin değeri ise bir tam sayıdır.

Başlangıç için basit çözüm:

yas = 25

print("Yaşınız:", yas)

şeklinde print() içerisinde virgül kullanmaktır.

Bu durumda Python değerleri uygun biçimde ekrana yazdırır.

Kullanıcıdan alınan sayılar neden dönüştürülmeli?

Bir başka önemli konu input() ile ilgilidir.

Hatırlayalım: input() kullanıcıdan aldığı bilgiyi metin olarak döndürür.

Şu örneği çalıştıralım:

sayi1 = input("Birinci sayı: ")
sayi2 = input("İkinci sayı: ")

print(sayi1 + sayi2)

Kullanıcı önce 10, sonra 5 yazarsa çıktı:

105

olur.

Çünkü Python bu iki girişi metin olarak değerlendirir.

Gerçek toplama işlemi yapmak istiyorsak önce sayısal dönüşüm gerçekleştirmeliyiz.

sayi1 = int(input("Birinci sayı: "))
sayi2 = int(input("İkinci sayı: "))

print(sayi1 + sayi2)

Bu kez aynı girişlerle:

15

sonucunu elde ederiz.

Burada int() kullandık çünkü tam sayı girişi bekliyoruz.

Ondalıklı sayılarla işlem yapmamız gerekiyorsa uygun durumlarda float() kullanılabilir.

Ancak kullanıcı geçerli sayı biçiminde bilgi girmezse dönüşüm hata verebilir.

Bu tür giriş hatalarını daha sonraki derslerde ele alacağız.

Uygulama: Günlük çalışma hedefi hesaplayıcısı

Şimdiye kadar farklı operatörleri ayrı ayrı öğrendik.

Bunları tek bir programda kullanmanın zamanı geldi.

Bu uygulamamızda kullanıcıdan günlük çalışma hedefini, gerçekte kaç dakika çalıştığını ve kaç çalışma oturumu gerçekleştirdiğini isteyeceğiz.

Program, hedefe kalan süreyi hesaplayacak.

Ayrıca kullanıcının hedefe ulaşıp ulaşmadığını ve çalışma oturumu yapıp yapmadığını mantıksal değerlerle gösterecek.

Bütün bunları henüz koşullu ifadeler veya döngüler kullanmadan gerçekleştireceğiz.

Visual Studio Code’da yeni bir Python dosyası oluşturalım.

Dosya adı:

calisma_hedefi.py

Aşağıdaki kodları yazalım:

print("=== GÜNLÜK ÇALIŞMA HEDEFİ ===")

ad = input("Adınız: ")

hedef = int(input("Günlük hedefiniz kaç dakika? "))
calisilan = int(input("Kaç dakika çalıştınız? "))
oturum = int(input("Kaç çalışma oturumu yaptınız? "))

kalan = hedef - calisilan

hedef_tamamlandi = calisilan >= hedef
oturum_yapildi = oturum > 0

basarili_gun = hedef_tamamlandi and oturum_yapildi

print()
print("=== ÇALIŞMA RAPORU ===")

print("Ad:", ad)
print("Günlük hedef:", hedef, "dakika")
print("Çalışılan süre:", calisilan, "dakika")
print("Hedefe kalan süre:", kalan, "dakika")

print("Hedef tamamlandı mı?", hedef_tamamlandi)
print("Çalışma oturumu yapıldı mı?", oturum_yapildi)
print("Her iki koşul sağlandı mı?", basarili_gun)

Şimdi programı çalıştıralım.

Örneğin şu bilgileri girelim:

Adınız: Deniz
Günlük hedefiniz kaç dakika? 60
Kaç dakika çalıştınız? 45
Kaç çalışma oturumu yaptınız? 2

Programımız şu sonucu üretir:

=== ÇALIŞMA RAPORU ===
Ad: Deniz
Günlük hedef: 60 dakika
Çalışılan süre: 45 dakika
Hedefe kalan süre: 15 dakika
Hedef tamamlandı mı? False
Çalışma oturumu yapıldı mı? True
Her iki koşul sağlandı mı? False

Burada neler oldu?

Öncelikle kullanıcıdan aldığımız sayısal bilgileri int() ile tam sayıya dönüştürdük.

Ardından çıkarma operatörüyle hedefe kalan süreyi hesapladık:

kalan = hedef - calisilan

Daha sonra çalışma süresinin hedefe ulaşıp ulaşmadığını kontrol ettik:

hedef_tamamlandi = calisilan >= hedef

Kullanıcı 45 dakika çalıştığı için ve hedefi 60 dakika olduğu için sonuç False oldu.

Oturum sayısını da karşılaştırdık:

oturum_yapildi = oturum > 0

İki çalışma oturumu yapıldığı için sonuç True oldu.

Son olarak iki koşulu birlikte değerlendirdik:

basarili_gun = hedef_tamamlandi and oturum_yapildi

İlk koşul False olduğu için sonuç da False oldu.

Şimdi programı tekrar çalıştırıp çalışılan süreyi 75 dakika olarak girmeyi deneyelim.

Bu durumda hedefin aşıldığını göreceğiz ve hedef_tamamlandi sonucu True olacaktır.

Ancak kalan süre değeri -15 olacaktır.

Bu bir hesaplama hatası değildir.

Negatif değer, hedefin 15 dakika aşıldığını gösterir.

İlerleyen derslerimizde koşullu ifadeleri öğrendiğimizde programı geliştirerek kalan süre negatifse kullanıcıya “Hedefinizi aştınız” mesajını gösterebileceğiz.

Böylece yalnızca hesaplama yapan değil, sonuçlara göre farklı davranışlar sergileyen uygulamalar hazırlayacağız.

Yeni başlayanların sık yaptığı hatalar

Operatörler basit görünebilir ancak yanlış kullanıldıklarında beklenmeyen sonuçlar ortaya çıkabilir.

Örneğin bazı kullanıcılar bölme işlemi için Python’da / yerine ÷ işaretini kullanmaya çalışabilir.

Python kaynak kodunda normal bölme için / operatörü kullanılır.

Çarpma işleminde de matematikte yazdığımız × yerine * kullanırız.

Bir başka sık hata = ile == işaretlerinin karıştırılmasıdır.

Şu kullanım geçerlidir:

yas = 18

print(yas == 18)

Ancak iki değeri karşılaştırmak istediğimiz bir ifadede tek eşittir işareti kullanmak doğru değildir.

Benzer şekilde büyük veya eşit karşılaştırması için => değil, >= kullanılmalıdır.

puan = 80

print(puan >= 70)

İşlem önceliğini unutmak da sık karşılaşılan bir sorundur.

Özellikle uzun matematiksel ifadelerde parantez kullanmak hataları azaltabilir.

Ayrıca sıfıra bölme yapılamayacağını hatırlayalım.

Örneğin:

sonuc = 10 / 0

print(sonuc)

kodu ZeroDivisionError hatasına neden olur.

Programımızdaki bölen değer kullanıcıdan alınıyorsa sıfır olma ihtimalini değerlendirmek gerekir.

Bu kontrolü ilerleyen derslerimizde koşullu ifadelerle gerçekleştireceğiz.

Son olarak veri türlerine dikkat etmeliyiz.

Metin biçimindeki "10" ile tam sayı olan 10 farklı değer türleridir.

Örneğin:

print("10" == 10)

çıktısı:

False

olur.

Çünkü iki değerin türleri ve anlamları farklıdır.

Öte yandan Python’da bazı farklı sayısal türler aynı sayısal değeri temsil edebilir.

Örneğin 10 == 10.0 karşılaştırması True sonucunu verir.

Bu nedenle karşılaştırmaları yorumlarken yalnızca ekranda görünen karakterlere değil, değerlerin türlerine ve Python’un karşılaştırma kurallarına da dikkat etmek gerekir.

Öğrendiklerimizi alıştırmalarla pekiştirelim

Programlama öğrenirken bir kod örneğini okumak başlangıçtır.

Asıl gelişme, örneği kendi başımıza değiştirip yeniden çalıştırdığımızda başlar.

Bu nedenle dersten ayrılmadan önce birkaç küçük alıştırma yapalım.

Alıştırma: Dikdörtgenin alanını hesaplayın

Kullanıcıdan dikdörtgenin kısa ve uzun kenarını alın.

Ardından alanını hesaplayıp ekrana yazdırın.

Örneğin kısa kenar 5, uzun kenar 8 olduğunda alan 40 olmalıdır.

Alıştırma: Bir sayının çift olup olmadığını kontrol edin

Kullanıcıdan tam sayı alın.

Sayının 2 ile bölümünden kalanı hesaplayın.

Kalanın sıfıra eşit olup olmadığını == operatörüyle kontrol edin.

Sonucu True veya False olarak gösterin.

Alıştırma: Sınav puanını değerlendirin

Kullanıcıdan sınav puanını alın.

Puanın en az 70 olup olmadığını karşılaştırın.

Ayrıca puanın 0 ile 100 arasında olup olmadığını and kullanarak değerlendirin.

Alıştırma: Çalışma hedefinizi geliştirin

Hazırladığımız çalışma hedefi programına hedefin aşılıp aşılmadığını gösteren yeni bir değişken ekleyin.

Bunun için > karşılaştırma operatörünü kullanabilirsiniz.

Programın sonuna yeni bir print() satırı ekleyerek sonucu gösterin.

Her alıştırmada mümkün olduğunca kodu kendiniz yazmaya çalışın.

Hata aldığınızda ise önce değişken isimlerini, parantezleri ve kullanılan veri türlerini kontrol edin.

Bu alışkanlık, daha karmaşık programlar yazmaya başladığınızda da size yardımcı olacaktır.

Kısaca

Python’da operatörler, veriler üzerinde hesaplama ve karşılaştırma yapmamızı sağlar.

Toplama için +, çıkarma için -, çarpma için * ve bölme için / kullanılır.

Tam bölme //, kalan bulma % ve üs alma ** operatörleriyle gerçekleştirilir.

Birden fazla işlemin bulunduğu ifadelerde işlem önceliği önemlidir. Parantezler, hesaplamanın hangi sırayla yapılacağını belirlememize yardımcı olur.

Karşılaştırma operatörleri iki değeri karşılaştırarak True veya False sonuçları üretebilir.

Burada = ile == arasındaki farkı özellikle unutmamalıyız.

Tek eşittir değer atamak için, çift eşittir ise eşitliği karşılaştırmak için kullanılır.

Mantıksal operatörlerden and, or ve not ise birden fazla mantıksal koşulu değerlendirmemizi veya sonucu tersine çevirmemizi sağlar.

Ayrıca +=, -= ve benzeri operatörlerle bir değişkenin mevcut değerini daha kısa ifadelerle güncelleyebiliriz.

Bu derste hazırladığımız çalışma hedefi programında öğrendiğimiz konuları bir araya getirdik.

Kullanıcıdan sayısal bilgi aldık, hesaplamalar yaptık ve karşılaştırmaların sonuçlarını ekranda gösterdik.

Ancak programımız henüz bu sonuçlara göre farklı işlemler yapmıyor.

Örneğin hedef tamamlandığında farklı bir mesaj göstermeyi veya hatalı bir giriş olduğunda kullanıcıyı yeniden yönlendirmeyi öğrenmedik.

Bir sonraki dersimizin konusu: Python’da Koşullu İfadeler — if, elif ve else.

Bu yapıları öğrendiğimizde programlarımız yalnızca hesaplama yapmayacak; karşılaştırmaların sonucuna göre karar da verebilecek.

İyi programlama, hangi işlemi yapacağımızı bilmek kadar, o işlemin neden o sonucu verdiğini anlamaktır.

PratikTekno Bülteni

Yeni rehberleri kaçırmayın

Yeni teknoloji rehberleri ve pratik çözümler e-postanıza gelsin.