Menu
CoddyTech

Mantıksal Operatörler Bölüm 4

Coddy'nin Python Journey'sinin Temel Bilgiler bölümünün bir parçası. Ders 19 / 77.

Mantıksal ifadelerle çalışırken bazen bunları sadeleştirmemiz veya yeniden düzenlememiz gerekir. Bu, özellikle birden fazla and ve or operatörünü birleştiren karmaşık koşullarla uğraşırken kullanışlıdır.

De Morgan Yasaları, mantıksal ifadeleri dönüştürmek için kurallar sunar. Bu dönüşümler, kodu daha okunabilir ve anlaşılır hâle getirmeye yardımcı olur.

Birinci Yasa: not (A and B), (not A) or (not B) ile aynıdır.

İfadeye not uyguladığında iki şey olduğuna dikkat et: her operand olumsuzlanır (A, not A olur; B, not B olur), ve operatör değişir: and, or olur. not yalnızca değerleri olumsuzlamakla kalmaz; değerleri birbirine bağlayan operatörü de değiştirir.

Örneğin:

# Bir sayının 1 ile 10 arasında olup OLMADIĞINI kontrol edelim
number = 15
# Bu iki ifade eşdeğerdir:
result1 = not (number >= 1 and number <= 10)
result2 = (not number >= 1) or (not number <= 10)
print(result1)  # True
print(result2)  # True

İkinci Yasa: not (A or B), (not A) and (not B) ile aynıdır.

Aynı iki adımlı kural burada da geçerlidir: her operandın değili alınır ve operatör tersine döner. Bu kez or, and olur. Şöyle düşünebilirsin: not dağıtılırken, her parça olumsuzlanır ve and ↔ or her zaman tersine döner.

Örneğin:

# Bir kişinin (öğrenci veya çalışan) OLMADIĞINI kontrol etme
is_student = False
is_employed = False
# Bu iki ifade eşdeğerdir:
result1 = not (is_student or is_employed)
result2 = (not is_student) and (not is_employed)
print(result1)  # True
print(result2)  # True

Hem AND hem OR İçeren Karmaşık Örnek: Bazen her iki operatörü de birleştiren koşullara ihtiyaç duyarsın. İşte pratik bir örnek:

# Bir iş başvurusunu kabul EDİP EDEMEYECEĞİMİZİ kontrol ediyoruz
# Şu durumda reddederiz: (deneyim YOK VE diploma YOK) VEYA yaş şartı karşılanmıyor
has_experience = False
has_degree = False
meets_age = True
# Hem AND hem de OR kullanan karmaşık koşul
reject_application = (not has_experience and not has_degree) or not meets_age
print(reject_application)  # True (deneyim VE diploma olmadığı için reddedildi)
# Bu, De Morgan yasaları kullanılarak da yazılabilir:
# accept = (experience OR degree) AND meets age; reject = not accept
accept_application = (has_experience or has_degree) and meets_age
reject_application2 = not accept_application
print(reject_application2)  # True (aynı sonuç, farklı mantık)

De Morgan Yasaları ne zaman kullanılır:

  • Olumsuz koşulları okumayı kolaylaştırmak için
  • Karmaşık mantıksal ifadeleri sadeleştirmek için
  • Aynı mantığın farklı gösterimleri arasında dönüşüm yapmak için
challenge icon

Görev

Başlangıç

Bir evcil hayvan mağazasının, bir müşteriye evcil hayvan satıp satamayacağını belirleyen bir sistem oluşturmasına yardımcı oluyorsun.

Aşağıdaki değişkenleri başlat:

  • has_license değerini True olarak ayarla
  • has_space değerini True olarak ayarla
  • has_experience değerini False olarak ayarla

Şunları belirlemek için mantıksal ifadeler yaz:

  • can_sell_regular_pet: Müşteri, ya lisansı YA DA deneyimi varsa sıradan bir evcil hayvan satın alabilir VE yeterli alana sahip olmalıdır
  • can_sell_exotic_pet: Müşteri, hem lisansı HEM DE deneyimi varsa egzotik bir evcil hayvan satın alabilir VE yeterli alana sahip olmalıdır
  • cannot_sell_any_pet: Müşterinin HİÇ lisansı VE HİÇ deneyimi yoksa YA DA yeterli alanı yoksa mağaza hiçbir evcil hayvanı satamaz

Verilen değerlerle beklenen sonuçlar:

  • can_sell_regular_pet: True (lisansı ve yeterli alanı var)
  • can_sell_exotic_pet: False (deneyimi yok)
  • cannot_sell_any_pet: False (hem lisansı hem de yeterli alanı var)

Kendin dene

# Değişkenleri başlat

# Koşulları hesapla
# Aşağıdaki her bir yer tutucu değeri doğru mantıksal ifadeyle değiştir
can_sell_regular_pet = False
can_sell_exotic_pet = False
cannot_sell_any_pet = False

# Aşağıdaki satırları silme
print("Can sell regular pet:", can_sell_regular_pet)
print("Can sell exotic pet:", can_sell_exotic_pet)
print("Cannot sell any pet:", cannot_sell_any_pet)
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Temel Bilgiler bölümündeki tüm dersler

Kendi başına pratik yap: Online Python derleyicisi