0
user Programlama Akademi
04-11-2024 11:33 PM
Python

Python 3'te Boolean Mantığını Anlamak

Giriş

Boolean veri tipi iki değerden biri olabilir, True (Doğru) veya False (Yanlış). Programlamada Booleans, karşılaştırmalar yapmak ve belirli bir programdaki kontrol akışını belirlemek için kullanılır.

Booleans, bilgisayar bilimlerinde algoritmaları bilgilendiren mantık dalıyla ilişkili doğruluk değerlerini temsil eder. Matematikçi George Boole'un adına ithafen, Boolean kelimesi her zaman büyük harfle başlar. True ve False değerleri de özel değerler olduğundan sırasıyla büyük T ve F harfleri ile yazılır.

Bu eğitimde, Python'da Booleans'ın nasıl çalıştığını anlamak için bilmeniz gerekenleri inceleyeceğiz ve karşılaştırma operatörlerini (comparison operators), mantıksal operatörleri (logical operators) ve doğruluk tablolarını (truth tables) keşfedeceğiz.


Karşılaştırma Operatörleri (Comparison Operators)

Programlamada karşılaştırma operatörleri, değerleri karşılaştırmak ve bunları tek bir Boolean değeri olan True veya False'a indirgemek için kullanılır.


Bilgi: Bu eğitimdeki örnek kodları takip etmek için, yerel sisteminizde python3 komutunu çalıştırarak bir Python etkileşimli kabuğu açın. Ardından örnekleri >>> istemine ekleyerek kopyalayabilir, yapıştırabilir veya düzenleyebilirsiniz.

Aşağıdaki tablo, Boolean karşılaştırma operatörlerini göstermektedir.

Operatör      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 operatörlerin nasıl çalıştığını anlamak için bir Python programında iki tamsayıyı iki değişkene atayalım:

x = 5
y = 8

Bu örnekte, x değişkeninin değeri 5 olduğu için, 8 değeri olan y'den küçüktür.

Bu iki değişkeni ve ilişkili değerlerini kullanarak, yukarıdaki tablodaki operatörleri inceleyelim. Programımızda, Python'a her karşılaştırma operatörünün True veya False olarak değerlendirilip değerlendirilmediğini yazdırmasını isteyeceğiz. Bu çıktıyı bizim ve diğer kullanıcıların daha iyi anlaması için Python'a neyi değerlendirdiğini de gösterecek bir dize (string) yazdırmasını sağlayacağız.

x = 5
y = 8

print("x == y:", x == y)
print("x != y:", x != y)
print("x < y:", x < y)
print("x > y:", x > y)
print("x <= y:", x <= y)
print("x >= y:", x >= y)

Bu programı çalıştırdığımızda, aşağıdaki çıktıyı alacağız.

Çıktı:

x == y: False
x != y: True
x < y: True
x > y: False
x <= y: True
x >= y: False

Yukarıdaki ifadelerde, Python matematiksel mantığa göre şu değerlendirmeleri yapmıştır:

  1. 5 (x) 8 (y) ile eşit mi? False
  2. 5, 8'e eşit değil mi? True
  3. 5, 8'den küçük mü? True
  4. 5, 8'den büyük mü? False
  5. 5, 8'den küçük veya eşit mi? True
  6. 5, 8'den büyük veya eşit değil mi? False

Burada tam sayılar kullansak da, bunları ondalıklı sayılarla (float values) değiştirebiliriz.

Stringler (Dizeler) de Boolean operatörleriyle kullanılabilir. Stringler, ek bir string yöntemi kullanılmadığı sürece büyük-küçük harf duyarlıdır.

Boolean operatörleriyle stringlerin nasıl karşılaştırıldığına dair bir örnek:

Sammy = "Sammy"
sammy = "sammy"

print("Sammy == sammy:", Sammy == sammy)

Yukarıdaki programın çıktısı şu şekilde olacaktır.

Çıktı:

Sammy == sammy: False

Yukarıdaki "Sammy" dizesi "sammy" dizesine eşit değildir, çünkü aynı değillerdir; biri büyük harf S ile başlarken diğeri küçük harf s ile başlar. Ancak, değeri "Sammy" olarak atanan başka bir değişken eklersek, bu durumda eşit olarak değerlendirileceklerdir:

Sammy = "Sammy"
sammy = "sammy"
also_Sammy = "Sammy"

print("Sammy == sammy:", Sammy == sammy)
print("Sammy == also_Sammy:", Sammy == also_Sammy)

Yukarıdaki programı çalıştırdıktan sonra şu çıktıyı alacağız. Bu, dizenin büyük-küçük harf dahil tamamen aynı olduğu sürece, Boolean mantığı açısından eşit olarak değerlendirileceğini gösterir.

Çıktı:

Sammy == sammy: False
Sammy == also_Sammy: True

İki dizeyi karşılaştırmak için diğer karşılaştırma operatörlerini, örneğin > ve <, de kullanabilirsiniz. Python, bu dizeleri karakterlerin ASCII değerlerini kullanarak alfabetik olarak karşılaştıracaktır.

Boolean değerleri de karşılaştırma operatörleriyle değerlendirebiliriz:

t = True
f = False

print("t != f:", t != f)

Yukarıdaki program aşağıdaki çıktıyı verecektir.

Çıktı:

t != f: True

Yukarıdaki çıktıda belirtildiği gibi, yazdığımız kod True'nun False'a eşit olmadığını değerlendirmiştir.

= ve == operatörleri arasındaki farka dikkat edin.

x = y    # x'i y'ye eşit olarak ayarlar
x == y   # x'in y'ye eşit olup olmadığını değerlendirir

İlk operatör, = atama operatörüdür ve bir değeri başka bir değere atar. İkincisi, == bir karşılaştırma operatörüdür ve iki değerin eşit olup olmadığını değerlendirir. Mantıksal Operatörler (Logical Operators)

Değerleri karşılaştırmak için kullanılan üç mantıksal operatör vardır. Bu operatörler ifadeleri Boolean değerlerine indirger ve True veya False dönerler. Bu operatörler and, or, ve not olup, aşağıdaki tabloda tanımlanmıştır.


Operatör Anlamı Örnek
and Her ikisi de doğruysa True döner x and y
or En az biri doğruysa True döner x or y
not Sadece yanlışsa True döner not x


Mantıksal operatörler genellikle iki veya daha fazla ifadenin doğru ya da yanlış olup olmadığını değerlendirmek için kullanılır. Örneğin, öğrencinin dersten geçme notuna sahip olup olmadığı ve ders kaydının olup olmadığı değerlendirilebilir. Bu iki durum doğruysa, öğrenci sistemde not alacaktır. Başka bir örnek, bir kullanıcının bir çevrimiçi mağazanın geçerli bir aktif müşterisi olup olmadığını, mağaza kredisine sahip olup olmadığını veya son 6 ayda bir satın alma yapıp yapmadığını belirlemek olabilir.

Mantıksal operatörlerin nasıl çalıştığını anlamak için, üç ifadeyi değerlendirelim:

print((9 > 7) and (2 < 4))    # Her iki orijinal ifade de True (Doğru)
print((8 == 8) or (6 != 6))    # Bir orijinal ifade True (Doğru)
print(not(3 <= 1))             # Orijinal ifade False (Yanlış)

Çıktı:

True
True
True

İlk durumda, print((9 > 7) and (2 < 4)), hem 9 > 7 hem de 2 < 4 ifadeleri True (Doğru) olarak değerlendirildiği için and (ve) operatörü kullanılmıştır.

İkinci durumda, print((8 == 8) or (6 != 6)), 8 == 8 True (Doğru) olarak değerlendirilmiştir; bu nedenle or (veya) operatörü kullanıldığında 6 != 6 'nın False (Yanlış) olarak değerlendirilmesi fark yaratmaz. Eğer and (ve) operatörü kullanılsaydı, bu False (Yanlış) olarak değerlendirilirdi.

Üçüncü durumda, print(not(3 <= 1)), not (değil) operatörü 3 <= 1 'in False (Yanlış) değerini tersine çevirir.

Ondalık sayılar için tamsayıları değiştirip, False (Yanlış) değerlendirmeleri hedefleyelim:

print((-0.2 > 1.4) and (0.8 < 3.1))    # Bir orijinal ifade False (Yanlış)
print((7.5 == 8.9) or (9.2 != 9.2))    # Her iki orijinal ifade de False (Yanlış)      
print(not(-5.7 <= 0.3))                # Orijinal ifade True (Doğru)

Yukarıdaki örnekte,

  • and en az bir False ifadeye sahip olduğunda False olarak değerlendirir,
  • or her iki ifadenin de False olarak değerlendirildiğinde False olur,
  • not iç ifadesi True olduğunda yeni ifade False olarak değerlendirilir.

Yukarıdaki sonuçlar size belirsiz geliyorsa, aşağıda bazı doğruluk tabloları ile size konuyu açıklamaya çalışacağız.

Ayrıca, and, or, ve not kullanarak bileşik ifadeler yazabilirsiniz:

not((-0.2 > 1.4) and ((0.8 < 3.1) or (0.1 == 0.1)))

İlk olarak en içteki ifadeye bakalım: (0.8 < 3.1) or (0.1 == 0.1). Bu ifade True olarak değerlendirilir çünkü her iki matematiksel ifade de True'dur.

Şimdi, dönen True değerini bir sonraki iç ifadeyle birleştirebiliriz: (-0.2 > 1.4) and (True). Bu örnek False olarak döner çünkü matematiksel ifade -0.2 > 1.4 False'tur ve (False) and (True) False döner.

Son olarak, dış ifadeye sahibiz: not(False), bu True olarak değerlendirilir, dolayısıyla bu ifadeyi yazdırırsak elde edeceğimiz nihai değer şudur:

Çıktı:

True

Mantıksal operatörler and, or, ve not, ifadeleri değerlendirir ve Boolean (mantıksal) değerler döndürür.

Doğruluk Tabloları

Matematiğin mantık dalı hakkında öğrenilecek çok şey vardır, ancak programlamada algoritmik düşünme yeteneğimizi geliştirmek için bazılarını seçici olarak öğrenebiliriz.

Aşağıda karşılaştırma operatörü ==, ve her bir mantıksal operatör and, or, ve not için doğruluk tabloları bulunmaktadır. Mantığını kavrayabilmenize rağmen, bunları ezberlemek programlama karar sürecinizi hızlandırabilir.

== Doğruluk Tablosu

x == y Dönen Değer
True == True True
True == False False
False == True False
False == False True


AND Doğruluk Tablosu

x and y Dönen Değer
True and True True
True and False False
False and True False
False and False False


OR Doğruluk Tablosu

x or y Dönen Değer
True or True True
True or False True
False or True True
False or False False


NOT Doğruluk Tablosu

not x Dönen Değer
not True False
not False True


Doğruluk tabloları, mantıkta kullanılan yaygın matematiksel tablolardır ve bilgisayar programlamada algoritmalar (talimatlar) oluştururken ezberlemek veya akılda tutmak yararlıdır.

Program Akış Kontrolü İçin Boolean (Mantıksal) Operatörleri Kullanmak

Bir programın akışını ve sonuçlarını akış kontrol ifadeleri biçiminde kontrol etmek için, bir koşul ve ardından bir ifade kullanabiliriz.

Bir koşul True veya False değerine indirgenen bir Boolean değeri ile değerlendirilir ve programda bir karar verilmesi gereken bir noktayı temsil eder. Yani, bir koşul bize bir şeyin True ya da False olarak değerlendirilip değerlendirilmediğini söyler.

İfade, koşulu izleyen ve programın sonucunu belirleyen kod bloğudur. Yani, bu, “Eğer x True ise, bunu yap.” ifadesindeki yap kısmıdır.

Aşağıdaki kod bloğu, karşılaştırma operatörlerinin Python programının akışını kontrol etmek için koşullu ifadelerle birlikte nasıl çalıştığını gösterir:

if grade >= 65:                    # Koşul
    print("Geçer not")              # İfade
else:
    print("Kalır not")

Bu program, her bir öğrencinin notunun geçip geçmediğini değerlendirecektir. Bir öğrencinin notu 83 olduğunda, ilk ifade True olarak değerlendirilir ve Geçer not yazdırma ifadesi tetiklenir. Bir öğrencinin notu 59 olduğunda ise, ilk ifade False olarak değerlendirilir, bu nedenle program else ifadesine bağlı yazdırma ifadesini çalıştırır: Kalır not.

Python'da her bir nesne True veya False olarak değerlendirilebildiğinden, PEP 8 Stil Kılavuzu bir değeri True veya False ile karşılaştırmaktan kaçınılmasını önerir çünkü bu daha az okunaklıdır ve sık sık beklenmeyen bir Boolean döndürür. Yani, programlarınızda if sammy == True: kullanmaktan kaçınmalısınız. Bunun yerine, sammy'yi Boolean döndürecek başka bir Boolean olmayan değerle karşılaştırın.

Boolean operatörleri, program akışı kontrol ifadeleri aracılığıyla bir programın nihai sonucunu belirlemek için kullanılabilecek koşullar sunar.

Sonuç

Bu öğreticide, Boolean türüne ait karşılaştırma ve mantıksal operatörleri, doğruluk tablolarını ve program akışı kontrolü için Boolean kullanmayı ele aldık.


Lisa Tagliaferri tarafından yazılan Understanding Boolean Logic in Python 3 Program makalesinin düzenlenmiş çevirisi.

Daha Fazla Oku:


Bu Makaleyi Paylaş

Yorumlar

yorum Yap