Mantıksal işleçler (ve veya değil) ile karmaşık koşullar oluşturma
İpucu
Daha fazla ayrıntı için Metin ve resimler sekmesine bakın!
Bazen tek bir koşul karar vermek için yeterli olmaz. İki şeyin de doğru olup olmadığını veya en az birinin doğru olup olmadığını denetlemek isteyebilirsiniz. Örneğin, bir hesabın hem etkin hem de fonlu olup olmadığını veya bir kullanıcının yönetici mi yoksa moderatör mü olduğunu doğrulamanız gerekebilir.
Python mantıksal işleçleri birden çok koşulu tek bir ifadede birleştirmenizi sağlar.
Üç mantıksal işleç
| Operator | Ne işe yarıyor? | Example | Result |
|---|---|---|---|
and |
True
yalnızcaiki taraf daTrue |
True and False |
False |
or |
True
en az bir tarafTrue |
True or False |
True |
not |
Boole değerini çevirir | not True |
False |
ve kullanma (tüm koşulların karşılanması gerekir)
Kod bloğunu çalıştırmak için tüm koşulların karşılanması gerektiğinde kullanın and :
age = 20
has_ticket = True
if age >= 18 and has_ticket:
print("Entry granted.")
else:
print("Entry denied.")
Output:
Entry granted.
veya kullanma (en az bir koşul karşılanmalıdır)
Bir kod bloğunu çalıştırmak için tek bir koşul yeterli olduğunda kullanın or . Günlük dilde genellikle "veya" "biri veya diğeri" anlamına gelir, ancak ikisi birden değildir." Bununla birlikte, Python", "veya" "bir veya diğer ya da her ikisi" anlamına gelir.
is_weekend = False
is_holiday = True
if is_weekend or is_holiday:
print("The office is closed.")
Output:
The office is closed.
Değil kullanma (koşulu ters çevirme)
not işleci bir Boole değerini tersine çevirir. Koşul ise Trueolur Falseve tersi de olur. Bu işleç, bir koşulun yokluğunu denetlemek istediğinizde kullanışlıdır.
is_logged_in = False
if not is_logged_in:
print("Please log in to continue.")
Output:
Please log in to continue.
İşleçleri birleştirme
, orve not öğesini tek bir ifadede birleştirebilirsinizand. Koşulları gruplandırmak ve kodunuzun daha kolay okunmasını sağlamak için her zaman parantez kullanın:
score = 85
has_extra_credit = True
is_past_due = False
# Example: Pass if (Score is high OR extra credit is earned) AND the work isn't late
if (score >= 90 or has_extra_credit) and not is_past_due:
print("Requirement met.")
Kısayol hatalarından kaçınma
Tek bir değişkeni birden çok değerle karşılaştırırken aşağıdakine benzer bir şey yazmak isteyebilirsiniz:
# Incorrect: This code will not work as intended
if score == 90 or 100:
print("You got an A!")
Bu durumda, Python önce veya Falseolan True değerini değerlendirirscore == 90. Ardından, her zaman Trueolan değerini değerlendirir100. Sıfır olmayan sayılar ve boş olmayan dizeler her zaman Python olarak True sayılır. Sonuç olarak, değeri ne olursa olsun koşul her zaman Trueşeklindedir score. Her değeri her zaman açıkça karşılaştırın:
# Correct: Each value is compared explicitly
if score == 90 or score == 100:
print("You got an A!")